起步软件技术论坛-X3

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

【结】自定义数据集新增时报错

[复制链接]
 楼主| 发表于 2009-10-22 16:14:01 | 显示全部楼层
就是查的对象。都不为空
回复 支持 反对

使用道具 举报

发表于 2009-10-22 16:14:51 | 显示全部楼层
报错前,报错位置的各个变量的值。发个抓图。另外,请去掉with do写法,这样调试比较不方便。请写完整。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-22 16:52:46 | 显示全部楼层
你上QQ吧,我把包发给你
回复 支持 反对

使用道具 举报

发表于 2009-10-22 16:54:41 | 显示全部楼层
您先贴图吧。恢复带数据库的比较麻烦啊,所以尽量不恢复你的环境。
回复 支持 反对

使用道具 举报

发表于 2009-10-22 17:43:17 | 显示全部楼层
加了DisableControls和EnableControls


DBS_HZ.DataSet.DisableControls;
                     with  DBS_HZ.DataSet do
                     begin
                          append;
                          FieldByName('LX').AsString:=qry1.FieldByName('LX').AsString;
                          if  qry1.FieldByName('JLSJ').AsString='' then
                              FieldByName('SJ').AsString:=''
                          else
                              FieldByName('SJ').AsDateTime:=qry1.FieldByName('JLSJ').AsDateTime;
                          FieldByName('BM').AsString:=qry1.FieldByName('SLRBZ').AsString;
                          FieldByName('XM').AsString:=qry1.FieldByName('SLR').AsString;
                          FieldByName('NR').AsString:=qry1.FieldByName('XXNR').AsString;
                          if  qry1.FieldByName('ZXSJ').AsString='' then
                              FieldByName('WCSJ').AsString:=''
                          else
                              FieldByName('WCSJ').AsDateTime:=qry1.FieldByName('ZXSJ').AsDateTime;
                          FieldByName('DDY').AsString:=qry1.FieldByName('DDY').AsString;
                          post;
                     end;
                      DBS_HZ.DataSet.EnableControls;
回复 支持 反对

使用道具 举报

发表于 2009-10-23 10:09:16 | 显示全部楼层

把下面的代码全都换上去看看,我这里测试了好多次都是正常的

procedure TYXRZJLCXCT.BitBtn1Click(Sender: TObject);
var
   strrq,jstrrq,strbcrq,strbcmc:string;
   qry,qry1:Tquery;
begin
     //DocView1.OpenMode :=TDocMode.dmEdit;
     DBS_HZ.DataSet.EmptyDataSet;
     qry:=Tquery.Create(nil);
     qry.ConnectionString:=BizObjConsts.cSysDatabaseConnectionString;
     qry1:=Tquery.Create(nil);
     qry1.ConnectionString:=BizObjConsts.cSysDatabaseConnectionString;
     //qry2:=Tquery.Create(nil);
     //qry2.ConnectionString:=BizObjConsts.cSysDatabaseConnectionString;
     try
     if (rq.text<>'') and (bcmc.text<>'') then
     begin
         DSBYXRZJJB.DataSet.Open;
       //try
         qry.close;    //过滤本班编辑过的工程检修详细信息记录
         qry.CommandText:='select inst_id from DD_YXRZJJBB where to_char(rq)=to_date('''+rq.text+''',''yyyy-mm-dd'') and  BCMC='''+bcmc.text+''' '  ;
         qry.Open;
         if qry.recordcount>0 then
         begin
             if DSBYXRZJJB.DataSet.Locate('inst_id',[qry.FieldByName('INST_ID').AsString],[]) then
             begin
                 if  bcmc.Text='白班' then
                 begin
                   strrq:=rq.text+' 08:30:00';
                   jstrrq:=rq.text+' 16:00:00';
                 end;
                 if  bcmc.Text='夜班' then
                 begin
                   strrq :=rq.text+' 16:00:00';
                   jstrrq :=sysutils.DateToStr(sysutils.StrToDate(rq.text)+1)+' 08:30:00';
                 end;


                 //上班继承下来的事故/缺陷详细记录不体现在汇总中,汇总中仅显示当班录入的详细记录。
                 {TSQLDataSet(DBS_YXHZ.dataset).Close;       //
                 TSQLDataSet(DBS_YXHZ.dataset).SQL.Text := 'SELECT * FROM DD_YXRZJLB where (bcid='''+DSBYXRZJJB.DataSet.FieldByName('INST_ID').AsString+''') and ( (lx<>''事故'' and lx<>''缺陷'' and lx<>''带电'' and lx<>''电压'' and lx<>''检修'') or ( (lx=''事故'' and JC is null) or (lx=''缺陷'' and JC is null) or (lx=''带电'' and JC is null) or (lx=''电压'' and JC is null)) ) ORDER BY lx,JLSJ';
                 TSQLDataSet(DBS_YXHZ.dataset).Open;
                 DBS_YXHZ.DataSet.First;  }
               //try
                 qry1.close;
                 //qry1.CommandText:='SELECT * FROM DD_YXRZJLB where (bcid='''+DSBYXRZJJB.DataSet.FieldByName('INST_ID').AsString+''') and ( (lx<>''事故'' and lx<>''缺陷'' and lx<>''带电'' and lx<>''电压'' and lx<>''检修'') or ( (lx=''事故'' and JC is null) or (lx=''缺陷'' and JC is null) or (lx=''带电'' and JC is null) or (lx=''电压'' and JC is null)) ) ORDER BY lx,JLSJ';
                 qry1.CommandText:='SELECT * FROM DD_YXRZJLB where (bcid='''+DSBYXRZJJB.DataSet.FieldByName('INST_ID').AsString+''') and ( (lx<>''事故'' and lx<>''缺陷'' and lx<>''带电'' and lx<>''电压'' and lx<>''检修'') or ( (lx=''事故'' and JC is null) or (lx=''缺陷'' and JC is null) or (lx=''带电'' and JC is null) or (lx=''电压'' and JC is null)) ) union select * from DD_YXRZJLB where glbm=''DD_GCJXRZJL'' and  BCID='''+DSBYXRZJJB.DataSet.FieldByName('inst_id').AsString+''' and glid in ('
                 +'select inst_id from DD_GCJXRZJL where ((((jsbssj is null) and ((ksbssj <=to_date('''+jstrrq+''',''yyyy-mm-dd HH24:MI:SS'')))) or '
                 +'  ((ksbssj <= to_date('''+jstrrq+''',''yyyy-mm-dd HH24:MI:SS'')) and (jsbssj > to_date('''+jstrrq+''',''yyyy-mm-dd HH24:MI:SS''))))   or'
                 +' ((jsbssj >= to_date('''+strrq+''',''yyyy-mm-dd HH24:MI:SS'')) and (jsbssj <= to_date('''+jstrrq+''',''yyyy-mm-dd HH24:MI:SS'')))) )';
                 qry1.Open;
                 //while not DBS_YXHZ.DataSet.eof do
                 DBS_HZ.DataSet.Disablecontrols;
                 while not qry1.eof do
                 begin
                     with  DBS_HZ.DataSet do
                     begin
                          append;
                          FieldByName('LX').AsString:=qry1.FieldByName('LX').AsString;
                          if  qry1.FieldByName('JLSJ').AsString='' then
                              FieldByName('SJ').AsString:=''
                          else
                              FieldByName('SJ').AsDateTime:=qry1.FieldByName('JLSJ').AsDateTime;
                          FieldByName('BM').AsString:=qry1.FieldByName('SLRBZ').AsString;
                          FieldByName('XM').AsString:=qry1.FieldByName('SLR').AsString;
                          FieldByName('NR').AsString:=qry1.FieldByName('XXNR').AsString;
                          if  qry1.FieldByName('ZXSJ').AsString='' then
                              FieldByName('WCSJ').AsString:=''
                          else
                              FieldByName('WCSJ').AsDateTime:=qry1.FieldByName('ZXSJ').AsDateTime;
                          FieldByName('DDY').AsString:=qry1.FieldByName('DDY').AsString;
                          post;
                     end;
                     //DBS_YXHZ.DataSet.Next;
                     qry1.Next;
                 end;
                 DBS_HZ.DataSet.enablecontrols;
                 {qry2.close;    //过滤本班编辑过的工程检修详细信息记录
                 qry2.CommandText:='select * from DD_YXRZJLB where glbm=''DD_GCJXRZJL'' and  BCID='''+DSBYXRZJJB.DataSet.FieldByName('inst_id').AsString+''' and glid in ('
                 +'select inst_id from DD_GCJXRZJL where ((((jsbssj is null) and ((ksbssj <=to_date('''+jstrrq+''',''yyyy-mm-dd HH24:MI:SS'')))) or '
                 +'  ((ksbssj <= to_date('''+jstrrq+''',''yyyy-mm-dd HH24:MI:SS'')) and (jsbssj > to_date('''+jstrrq+''',''yyyy-mm-dd HH24:MI:SS''))))   or'
                 +' ((jsbssj >= to_date('''+strrq+''',''yyyy-mm-dd HH24:MI:SS'')) and (jsbssj <= to_date('''+jstrrq+''',''yyyy-mm-dd HH24:MI:SS'')))) )';
                 qry2.Open;
                 while not qry2.eof do
                 begin
                     with  DBS_HZ.DataSet do
                     begin
                          append;
                          FieldByName('LX').AsString:=qry2.FieldByName('LX').AsString;
                          if  qry2.FieldByName('JLSJ').AsString='' then
                              FieldByName('SJ').AsString:=''
                          else
                              FieldByName('SJ').AsDateTime:=qry2.FieldByName('JLSJ').AsDateTime;
                          FieldByName('BM').AsString:=qry2.FieldByName('SLRBZ').AsString;
                          FieldByName('XM').AsString:=qry2.FieldByName('SLR').AsString;
                          FieldByName('NR').AsString:=qry2.FieldByName('XXNR').AsString;
                          if  qry2.FieldByName('ZXSJ').AsString='' then
                              FieldByName('WCSJ').AsString:=''
                          else
                              FieldByName('WCSJ').AsDateTime:=qry2.FieldByName('ZXSJ').AsDateTime;
                          FieldByName('DDY').AsString:=qry2.FieldByName('DDY').AsString;
                          post;
                     end;
                     qry2.next;
                 end;    }
                 TSQLDataSet(DBS_HZ.dataset).Order:='SJ';
                 TSQLDataSet(DBS_HZ.dataset).Open;
               //finally

               //end;
                 //qry2.Free;
             end; //if locate
         end // qry.recordcount>0 then
         else
             jsDialogs.ShowMsg('无此班次,请重新选择!','提示');
       //finally

       //end;
     end
     else
     begin
          jsDialogs.ShowMsg('请选择日期及班次!','提示');
     end;
   finally
    qry1.Free;
    qry.free;
   end;
     //DocView1.OpenMode :=TDocMode.dmPreview;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-23 11:23:52 | 显示全部楼层
可以了。谢谢尚工。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-23 11:25:05 | 显示全部楼层
我之前是数据集控制代码写在按钮代码的头尾。不是加在那个位置。所以还有报错。为什么一定要加在那个位置。
回复 支持 反对

使用道具 举报

发表于 2009-10-23 15:16:03 | 显示全部楼层
不要在这个代码的开始和结尾加,放到循环循环的前后就可以了,否则有可能存在这种情况,当数据集disablecontrol以后,如果这个时候需通过数据表现控件操作数据就会出现异常了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-23 16:54:03 | 显示全部楼层
哦。谢了。结帖
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-15 06:20 , Processed in 0.038874 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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