|

楼主 |
发表于 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; |
|