起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 223|回复: 8

【搞定】优化数据集程序**

[复制链接]
发表于 2007-5-18 17:00:49 | 显示全部楼层 |阅读模式
这个是一个数据集向另外一个数据集合中插入数据,是一个字段一个字段的复制运行起来太慢了,有什么方法改进吗
关键程序:
回复

使用道具 举报

 楼主| 发表于 2007-5-18 17:01:41 | 显示全部楼层
程序如下:
procedure TCT.creatdataset();
var
lBiz,DStart,DEnd,PCName,Date: string;
I : integer;
begin

    if not DataSetCXSJ.Active then
       DataSetCXSJ.Open
     else
       DataSetCXSJ.Refresh;
    try
    DataSetBroker1.DataSet.Open;
    DataSetBroker1.DataSet.ReadOnly := false;
    DataSetBroker1.DataSet.First;
    DataSetCXSJ.first;
    while not DataSetCXSJ.Eof do
    begin
      Date := DataSetCXSJ.FieldByName('日期').AsString;
      PCName := DataSetCXSJ.FieldByName('批次号').AsString;
      DStart := DataSetCXSJ.FieldByName('批次开始时间').AsString;
      DEnd := DataSetCXSJ.FieldByName('批次结束时间').AsString;
      if DStart = '2007-05-12 21:45:00' then DStart := '2007-05-11 21:45:00';
      //DecodeDateTime(DateTimePicker1.Date);
      lBiz := 'Biz:\SCZYCX\DICT\QJGGCS.ParamGroup\CXNF.Param';
      TGGHSK.SetParamValueString(Context,Date,lBiz);
      lBiz := 'Biz:\SCZYCX\DICT\QJGGCS.ParamGroup\ZSGX.Param';
      TGGHSK.SetParamValueString(Context,PCName,lBiz);
      lBiz := 'Biz:\SCZYCX\DICT\QJGGCS.ParamGroup\CXQSSJ_ZF.Param';
      TGGHSK.SetParamValueString(Context,DStart,lBiz);
      lBiz := 'Biz:\SCZYCX\DICT\QJGGCS.ParamGroup\CXZZSJ_ZZ.Param';
      TGGHSK.SetParamValueString(Context,DEnd,lBiz);

      if not DataSetCRSJJ.Active then
       DataSetCRSJJ.Open
      else
       DataSetCRSJJ.Refresh;

      DataSetBroker1.DataSet.Append;

      for i :=0 to DataSetCRSJJ.FieldCount - 1 do
      begin
           DataSetBroker1.DataSet.FieldByName(DataSetCRSJJ.Fields[I].FieldName).Value := DataSetCRSJJ.Fields[I].Value;
      end;

      DataSetBroker1.DataSet.Next;
      DataSetCXSJ.Next;
      DataSetCRSJJ.Close;
    end;
      DataSetBroker1.DataSet.ReadOnly := true;
    finally
   end;
end;
回复 支持 反对

使用道具 举报

发表于 2007-5-18 18:16:08 | 显示全部楼层
没有什么更好的办法了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-19 10:13:28 | 显示全部楼层
如果是一条记录直接插入速度是不是会更快呢
回复 支持 反对

使用道具 举报

发表于 2007-5-19 14:43:25 | 显示全部楼层
1、在循环前先DisableControls 数据集,循环后再EnableControls,
2、如果数据量比较大,那么用Query来做吧

这两个方法都可以参考这个帖子http://bbs.justep.com/forum.php?mod=viewthread&tid=10298
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-19 14:54:01 | 显示全部楼层
两个数据集结构完全相同,应该可以直接把一个数据集的一条记录插入另一数据集中把
回复 支持 反对

使用道具 举报

发表于 2007-5-21 09:46:36 | 显示全部楼层
可以尝试一下使用数据集的appendData赋值整个数据集
dataset1.AppendData(datset2.data);

或者
复制一条记录
dataset1.AppendRecord()
回复 支持 反对

使用道具 举报

发表于 2007-6-4 18:09:43 | 显示全部楼层
楼主,还有问题吗?
没有就结贴了!
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-21 23:40 , Processed in 0.043029 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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