起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 251|回复: 15

【结贴】使用DataSetBroker1.DataSet.Append再次报错**

[复制链接]
发表于 2008-9-5 10:16:14 | 显示全部楼层 |阅读模式
http://bbs.justep.com/showthread ... d=181526#post181526
问题类似,前一个是2层循环加了
DataSetBroker3.DataSet.DisableControls;跟
DataSetBroker3.DataSet.EnableControls;就好了
现在的是功能里有个循环,信息里是第2层循环不知道该怎么弄
技术支持下QQ 231264740
回复

使用道具 举报

 楼主| 发表于 2008-9-5 10:22:19 | 显示全部楼层
功能里代码
procedure TDesignTaskRequisitionMainForm_FillFinishThing.DataSetBroker1NewRecord(DataSet: TDataSet);
var
  Query1,Query2 : TQuery;
  i,j : integer;
begin
  Inherited;
  //当设计人员新增完成设备明细表时,完成设备任务分类明细表和完成设备任务内容明细通过代码从原始表复制过来
  Query1 := TQuery.Create(self);
  Query1.ConnectionString := 'DATABASEURL=Biz:\JUSTEPCOOPERATIONSYSTEM\CooperationDB.Database';
  Query1.CommandText := 'select * from OA_DesignTaskRequisitionTaskClassDetail '+
                        'where fid='''+DataSetBroker2.DataSet.FieldByName('RequisitionId').AsString+''' '+
                        ' and DesignFlag=1';
  Query1.Open;
  Query1.First;
  InfoBroker1.Info.DataSetByID('FinishProductTaskClassDetail').DisableControls;
  while not Query1.Eof do
  begin
    InfoBroker1.Info.DataSetByID('FinishProductTaskClassDetail').Append;
    with InfoBroker1.Info.DataSetByID('FinishProductTaskClassDetail') do
    begin
      Edit;
      FieldByName('DesignFlag').AsString := Query1.FieldByName('DesignFlag').AsString;
      FieldByName('TaskClass').AsString := Query1.FieldByName('TaskClass').AsString;
      post;
    end;   
    Query1.Next;
  end;
  InfoBroker1.Info.DataSetByID('FinishProductTaskClassDetail').EnableControls;
  InfoBroker1.Info.DataSetByID('FinishProductTaskClassDetail').First;
  
  Query1.Close;
end;

信息里的代码
procedure TDesignTaskRequisition.DataSetFinishProductTaskClassDetailFieldChange(DataSet: TDataSet; Field: TDataField);
var
  i : integer;
  Query1,Query2: TQuery;
begin
  Inherited;

      if (Field.IsNull=false) then
    begin
      try
      Query1 := TQuery.Create(self);
      Query1.ConnectionString := 'DATABASEURL=Biz:\JUSTEPCOOPERATIONSYSTEM\CooperationDB.Database';
      Query1.CommandText := 'select * from OA_DesignTaskRequisitionTaskClassDetail '+
                            'where fid='''+DataSetDesignerChargeTaskDetail.FieldByName('RequisitionId').AsString+''' '+
                            ' and TaskClass='''+Variants.VarToStr(Field.Value)+''' and DesignFlag=1';
      Query1.Open;
      if Query1.RecordCount=0 then
      begin
        Dialogs.ShowMessage('该任务分类不需要设计!');
        DataSetFinishProductTaskClassDetail.Cancel;
        SysUtils.Abort;
      end;
      //根据设计标识,决定对应的任务分类是否可以修改
      if DataSetFinishProductTaskClassDetail.FieldByName('DesignFlag').AsInteger=0 then
      begin
        Dialogs.ShowMessage('该任务分类的设计标识没有勾上!');
        DataSetFinishProductTaskClassDetail.Cancel;
        SysUtils.Abort;
      end;
      DataSetFinishProductTaskClassDetail.FieldByName('OrderNo').AsString := Query1.FieldByName('OrderNO').AsString;
      DataSetFinishProductTaskClassDetail.FieldByName('PlanCompleteDate').AsString := Query1.FieldByName('PlanCompleteDate').AsString;
      Query2 := TQuery.Create(self);
      Query2.ConnectionString := 'DATABASEURL=Biz:\JUSTEPCOOPERATIONSYSTEM\CooperationDB.Database';
      Query2.CommandText := 'select * from OA_DesignTaskRequisitionDetail '+
                            'where fid='''+Query1.FieldByName('Id').AsString+''' '+
                            'and ExportForm='''+'2'+''' '+
                            'and TaskContent<>'''+'140400'+''' and TaskContent<>'''+'150600'+'''';   //任务内容不为“纸制文档”
      Query2.Open;
      Query2.First;

      for i:=1 to DataSetFinishProductTaskContentDetail.RecordCount do
      begin
        DataSetFinishProductTaskContentDetail.Delete;

        DataSetFinishProductTaskContentDetail.Next;
      end;

      DataSetFinishProductTaskContentDetail.DisableConstraints;
      while not Query2.Eof do
      begin
        DataSetFinishProductTaskContentDetail.Append;
        with DataSetFinishProductTaskContentDetail do
        begin
          Edit;
          FieldByName('OrderNO').AsString := Query2.FieldByName('OrderNO').AsString;
          FieldByName('TaskClass').AsString := Query1.FieldByName('TaskClass').AsString;
          FieldByName('ExportForm').AsString := Query2.FieldByName('ExportForm').AsString;
          FieldByName('DocType').AsString := Query2.FieldByName('DocType').AsString;
          FieldByName('TaskContent').AsString := Query2.FieldByName('TaskContent').AsString;
          FieldByName('PlanCompleteDate').AsString := Query1.FieldByName('PlanCompleteDate').AsString;
          Post;
        end;
        Query2.Next;
      end;
      Query2.Close;
      Query1.Close;
      //DataSetFinishProductTaskContentDetail.ApplyUpdates;
      DataSetFinishProductTaskContentDetail.EnableControls;
      finally
      Query2.free;
      Query1.free;
      end ;
    end;
  end;
  //DataSetFinishProductTaskContentDetail.EnableControls;
    end;
回复 支持 反对

使用道具 举报

发表于 2008-9-5 10:30:41 | 显示全部楼层
跟DisableControls没有太大的关系吧。
你自己跟踪调试一下吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-5 10:38:05 | 显示全部楼层
有关系的昨天的代码你可以注销下看如果没有就会报错,类似的我加了都好了只有我提的这个不知道怎么改
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-5 11:08:02 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2008-9-5 11:28:59 | 显示全部楼层
具体报什么错啊。
回复 支持 反对

使用道具 举报

发表于 2008-9-5 11:29:56 | 显示全部楼层
为什么你的代码里用了append后有加一个edit呢?
虽然这不会报错,但是不知道你为什么要这么用。
回复 支持 反对

使用道具 举报

发表于 2008-9-5 11:33:18 | 显示全部楼层
DataSetFinishProductTaskContentDetail.DisableConstraints;
这句话干什么的呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-5 11:38:19 | 显示全部楼层
就是报告上个帖子里一样的错,我不知道DisableConstraints该加在哪就都试了下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-5 11:39:33 | 显示全部楼层
因为上个出错我试了下类似的都是加了DataSetBroker3.DataSet.DisableControls;跟
DataSetBroker3.DataSet.EnableControls;就好了,这个比较特殊一个循环在功能一个在信息不知道怎么弄
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-21 16:39 , Processed in 0.056279 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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