起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: modun_nb

【结贴】[请求]打印的两个问题,请帮看一下

[复制链接]
 楼主| 发表于 2007-11-29 14:08:57 | 显示全部楼层
打开表格文档,点击需要放DataGrid组件的单元格子,然后在工具箱中,双击DataGrid组件,这样就可以了。
请问在表格文档中放入一个DataGrid组件后如何配置数据源呢?是不是也要放一下InfoBroker和一个DataSetBroker来引入数据啊?
回复 支持 反对

使用道具 举报

发表于 2007-11-29 15:10:19 | 显示全部楼层
我们原来也是按你的说法做的,但记录超过200条时,速度超慢
慢到啥程度,需要多少秒?

11楼跟9楼没有太大的区别,如果9楼慢,11楼肯定也慢。的
至于你说的在表格文档中放入一个DataGrid组件后如何配置数据源呢?是不是也要放一下InfoBroker和一个DataSetBroker来引入数据啊?
不需要放InfoBroker,默认就有,值需要放一个DataSetBroker下来,设置上相关的属性就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-30 08:57:52 | 显示全部楼层
我们原来用表格文档执行下面语句进行从别的单据导入数据,前面的记录速度还可以,超过100条速度就慢了,100条记录需要10分钟,超过200条就卡死了,换了datagrid之后,速度就正常了,不管记录多大,不会超过1分钟,不知是我们的语句有问题还是表格文档的问题呢?
  _dyjjdjForm:=Tmainform.Create(self.context );

  try
    _dyjjdjForm.ckdjh:=DataSetBrokerZB.DataSet.FieldByName('SrcBillNo').Asstring;
    _dyjjdjForm.Query3.Data :=DataSetBrokermxb.DataSet.Data ;
     i:=0;
    if _dyjjdjForm.ShowModal=Business.Forms.Controls.mrOk  then
    begin
      BillNo:=DataSetBrokerZB.DataSet.FieldByName('BillNo').AsString;
      DataSetBrokerZB.DataSet.edit;
      if  _dyjjdjForm.RadioButton1.Checked then
      DataSetBrokerZB.DataSet.FieldByName('OutType').Asinteger:=0 else
      DataSetBrokerZB.DataSet.FieldByName('OutType').Asinteger:=1;
      DataSetBrokerZB.DataSet.FieldByName('SrcBillNo').Asstring:=_dyjjdjForm.query1.FieldByName('BillNo').Asstring;
      DataSetBrokerZB.DataSet.FieldByName('ProxyCompany').Asstring:=_dyjjdjForm.query1.FieldByName('ProxyCompany').Asstring;
      DataSetBrokerZB.DataSet.FieldByName('Enterprise').Asstring:=_dyjjdjForm.query1.FieldByName('Enterprise').Asstring;
      DataSetBrokerZB.DataSet.FieldByName('Country').Asstring:=_dyjjdjForm.query1.FieldByName('Country').Asstring;
      DataSetBrokerZB.DataSet.FieldByName('ContactPerson').Asstring:=_dyjjdjForm.query1.FieldByName('ContactPerson').Asstring;
      DataSetBrokerZB.DataSet.FieldByName('ContactMethod').Asstring:=_dyjjdjForm.query1.FieldByName('ContactMethod').Asstring;
      DataSetBrokerZB.DataSet.FieldByName('SiteNo').Asstring:=_dyjjdjForm.query1.FieldByName('SiteNo').Asstring;
      DataSetBrokerZB.DataSet.FieldByName('TransportMode').Asstring:=_dyjjdjForm.query1.FieldByName('TransportMode').Asstring;
      DataSetBrokerZB.DataSet.FieldByName('Mark').Asstring:=_dyjjdjForm.query1.FieldByName('Mark').Asstring;
      DataSetBrokerZB.DataSet.FieldByName('Notification').Asstring:=_dyjjdjForm.query1.FieldByName('Notification').Asstring;
      DataSetBrokerZB.DataSet.FieldByName('Port').Asstring:=_dyjjdjForm.query1.FieldByName('Port').AsString ;
      DataSetBrokerZB.DataSet.FieldByName('RKBillNo').Asstring:= TGGZY.GetRKBillNo(DataSetBrokerZB.DataSet.FieldByName('OutType').Asinteger,DataSetBrokerZB.DataSet.FieldByName('SrcBillNo').Asstring);
     if  not _dyjjdjForm.DataSetTemp.Active then exit;
      _dyjjdjForm.DataSetTemp.First ;
      //DataSetBrokerMXB.DataSet.data:=_dyjjdjForm.DataSetTemp;
      while not   _dyjjdjForm.DataSetTemp.eof do
      begin
        if _dyjjdjForm.DataSetTemp.FieldByName('xz').AsInteger=1 then
        begin
          srcid:=_dyjjdjForm.DataSetTemp.FieldByName('ID').asstring   ;
          DataSetBrokerMXB.DataSet.Append ;
          DataSetBrokerMXB.DataSet.FieldByName('BillNo').AsString :=billno;//DataSetBrokerZB.DataSet.FieldByName('BillNo').AsString;
          DataSetBrokerMXB.DataSet.FieldByName('SrcID').AsString := _dyjjdjForm.DataSetTemp.FieldByName('ID').asstring;
          DataSetBrokerMXB.DataSet.FieldByName('CaseOrderNo').AsString := _dyjjdjForm.DataSetTemp.FieldByName('CaseOrderNo').asstring;
          DataSetBrokerMXB.DataSet.FieldByName('Length').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('Length').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('Width').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('Width').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('Height').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('Height').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('Gross').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('Gross').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('Net').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('Net').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('Description_EN').AsString := _dyjjdjForm.DataSetTemp.FieldByName('Description_EN').asstring;
          DataSetBrokerMXB.DataSet.FieldByName('Description_CN').AsString := _dyjjdjForm.DataSetTemp.FieldByName('Description_CN').asstring;
          DataSetBrokerMXB.DataSet.FieldByName('HSNO').AsString := _dyjjdjForm.DataSetTemp.FieldByName('HSNO').asstring;
          DataSetBrokerMXB.DataSet.FieldByName('Quantity').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('Quantity').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('UnitPrice').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('UnitPrice').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('TotalValue').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('TotalValue').AsFloat;
          DataSetBrokerMXB.DataSet.FieldByName('Agreement').value := 0;
        end;
        _dyjjdjForm.DataSetTemp.Next ;
        i:=i+1;
      end;
      LockFields;
    end;
  finally
    _DyjjdjForm.Free;
  end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-30 09:07:49 | 显示全部楼层
表格文档中放入一个DataGrid组件后如何配置数据源的方法还是不太明白,能发一个有主从表关系的单据用例过来看一下吗?
回复 支持 反对

使用道具 举报

发表于 2007-11-30 10:27:55 | 显示全部楼层
针对13楼,在对数据集操作之前使用
DataSet.DisableControls;
在操作后恢复
DataSet.EnableControls;
会提高效率。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-30 14:36:14 | 显示全部楼层
表格文档中放入一个DataGrid组件后如何配置数据源的方法还是不太明白,能发一个有主从表关系的单据用例过来看一下吗?
回复 支持 反对

使用道具 举报

发表于 2007-11-30 17:13:13 | 显示全部楼层
1、请楼主修改一下自己的信息,把真实姓名填写上,编译我们之间的沟通,谢谢配合
2、不建议楼主在表格文档上直接放DataGrid,原因在是,打印的时候,我们仅仅把DataGrid当作一个控件来出来,不能显示所有的数据的。
3、建议在循环赋值前加上15楼提到的处理,这样会提高性能

...
if  not _dyjjdjForm.DataSetTemp.Active then exit;
      _dyjjdjForm.DataSetTemp.DisableControls;
         _dyjjdjForm.DataSetTemp.First ;
        while not   _dyjjdjForm.DataSetTemp.eof do
        begin
          if _dyjjdjForm.DataSetTemp.FieldByName('xz').AsInteger=1 then
          begin
          srcid:=_dyjjdjForm.DataSetTemp.FieldByName('ID').asstring   ;
          DataSetBrokerMXB.DataSet.Append ;
          DataSetBrokerMXB.DataSet.FieldByName('BillNo').AsString :=billno;//DataSetBrokerZB.DataSet.FieldByName('BillNo').AsString;
          DataSetBrokerMXB.DataSet.FieldByName('SrcID').AsString := _dyjjdjForm.DataSetTemp.FieldByName('ID').asstring;
          DataSetBrokerMXB.DataSet.FieldByName('CaseOrderNo').AsString := _dyjjdjForm.DataSetTemp.FieldByName('CaseOrderNo').asstring;
          DataSetBrokerMXB.DataSet.FieldByName('Length').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('Length').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('Width').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('Width').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('Height').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('Height').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('Gross').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('Gross').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('Net').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('Net').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('Description_EN').AsString := _dyjjdjForm.DataSetTemp.FieldByName('Description_EN').asstring;
          DataSetBrokerMXB.DataSet.FieldByName('Description_CN').AsString := _dyjjdjForm.DataSetTemp.FieldByName('Description_CN').asstring;
          DataSetBrokerMXB.DataSet.FieldByName('HSNO').AsString := _dyjjdjForm.DataSetTemp.FieldByName('HSNO').asstring;
          DataSetBrokerMXB.DataSet.FieldByName('Quantity').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('Quantity').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('UnitPrice').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('UnitPrice').AsFloat ;
          DataSetBrokerMXB.DataSet.FieldByName('TotalValue').AsFloat := _dyjjdjForm.DataSetTemp.FieldByName('TotalValue').AsFloat;
          DataSetBrokerMXB.DataSet.FieldByName('Agreement').value := 0;
          end;
          _dyjjdjForm.DataSetTemp.Next ;
          i:=i+1;
        end;
       _dyjjdjForm.DataSetTemp.EnableControls;
      LockFields;
    end;
...

4、建议楼主还是在打印的时候,还是采用表格文档来数据集的主从区域属性实现主从一起打印。
回复 支持 反对

使用道具 举报

发表于 2007-12-10 14:53:40 | 显示全部楼层
楼主还有其他问题吗?
没有就结帖了
回复 支持 反对

使用道具 举报

发表于 2007-12-29 09:44:28 | 显示全部楼层
由于长时间没有反馈,先结贴了。

有问题请开新贴。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-4 08:19 , Processed in 0.042001 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表