起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 139|回复: 6

【结】为什么代码没执行,跳过去了?**

[复制链接]
发表于 2008-11-17 08:31:07 | 显示全部楼层 |阅读模式
procedure TJSDRZ.Button1Click(Sender: TObject);      //审核提交
begin
    DataSetBrokerJSDRZ.DataSet.DisableControls;
    try
    DataSetBrokerJSDRZ.DataSet.First;
       while not DataSetBrokerJSDRZ.DataSet.eof do
          begin
             if (DataSetBrokerJSDRZ.DataSet.FieldByName('sh').AsInteger = '1') and (DataSetBrokerJSDRZ.DataSet.FieldByName('rq').asstring <>'') and (DataSetBrokerJSDRZ.DataSet.FieldByName('bb').asstring <>'') and (DataSetBrokerJSDRZ.DataSet.FieldByName('bh').asstring <>'')and (DataSetBrokerJSDRZ.DataSet.FieldByName('zylb').asstring <>'')and (DataSetBrokerJSDRZ.DataSet.FieldByName('czgch').asstring <>'')then //获取复选框的值;1为选中
             begin
                if  ((DataSetBrokerJSDRZ.DataSet.FieldByName('zylb').asstring = '入库')  or (DataSetBrokerJSDRZ.DataSet.FieldByName('zylb').asstring = '出库')) and (DataSetBrokerJSDRZ.DataSet.FieldByName('czgch').asstring <> '转账' ) then
                begin
                  if (DataSetBrokerJSDRZ.DataSet.FieldByName('dw1').asstring <>'') and (DataSetBrokerJSDRZ.DataSet.FieldByName('dw2').asstring = '') then
                     begin
                           //计数单入帐时更新货物进出记录表 bt_hwjchjl,传入参数:para_fsh:更新模式,'0'为入帐,para_id:计数单id
                          StoredProcJshdAll.Params.ParamByName('myflag').AsString := 'jshd_refresh_hwjchjl';
                          StoredProcJshdAll.Params.ParamByName('isparam1').AsString := '0';
                          StoredProcJshdAll.Params.ParamByName('isparam2').AsString := DataSetBrokerJSDRZ.dataset.fieldbyname('id').asstring;
                          StoredProcJshdAll.Execute;
                           //计数单入帐
                          StoredProcJshdAll.Params.ParamByName('myflag').AsString := 'jshdrzh';
                          StoredProcJshdAll.Params.ParamByName('isparam1').AsString := '0';
                          StoredProcJshdAll.Params.ParamByName('isparam2').AsString := DataSetBrokerJSDRZ.dataset.fieldbyname('id').asstring;
                          StoredProcJshdAll.Execute;
                          end
                else
                  if (DataSetBrokerJSDRZ.DataSet.FieldByName('zylb').asstring = '转运') or (DataSetBrokerJSDRZ.DataSet.FieldByName('zylb').asstring = '倒运') then
                  begin
                     if (DataSetBrokerJSDRZ.DataSet.FieldByName('dw1').asstring <>'') and (DataSetBrokerJSDRZ.DataSet.FieldByName('dw2').asstring <> '') then
                         begin
                           //计数单入帐
                          StoredProcJshdAll.Params.ParamByName('myflag').AsString := 'jshdrzh';
                          StoredProcJshdAll.Params.ParamByName('isparam1').AsString := '0';
                          StoredProcJshdAll.Params.ParamByName('isparam2').AsString := DataSetBrokerJSDRZ.dataset.fieldbyname('id').asstring;
                          StoredProcJshdAll.Execute;
                          //DataSetBrokerJSDRZ.DataSet.refresh;
                         end
                  else
                    if (DataSetBrokerJSDRZ.DataSet.FieldByName('zylb').asstring = '直取') then
                    begin
                      if (DataSetBrokerJSDRZ.DataSet.FieldByName('dw1').asstring ='') and (DataSetBrokerJSDRZ.DataSet.FieldByName('dw2').asstring = '') then
                         begin
                           //计数单入帐
                          StoredProcJshdAll.Params.ParamByName('myflag').AsString := 'jshdrzh';
                          StoredProcJshdAll.Params.ParamByName('isparam1').AsString := '0';
                          StoredProcJshdAll.Params.ParamByName('isparam2').AsString := DataSetBrokerJSDRZ.dataset.fieldbyname('id').asstring;
                          StoredProcJshdAll.Execute;
                           //DataSetBrokerJSDRZ.DataSet.refresh;
                         end
                    else
                        if (DataSetBrokerJSDRZ.DataSet.FieldByName('zylb').asstring = '货差') then
                           begin
                           //计数单入帐时更新货物进出记录表 bt_hwjchjl,传入参数:para_fsh:更新模式,'0'为入帐,para_id:计数单id
                          StoredProcJshdAll.Params.ParamByName('myflag').AsString := 'jshd_refresh_hwjchjl';
                          StoredProcJshdAll.Params.ParamByName('isparam1').AsString := '0';
                          StoredProcJshdAll.Params.ParamByName('isparam2').AsString := DataSetBrokerJSDRZ.dataset.fieldbyname('id').asstring;
                          StoredProcJshdAll.Execute;
                           //计数单入帐
                          StoredProcJshdAll.Params.ParamByName('myflag').AsString := 'jshdrzh';
                          StoredProcJshdAll.Params.ParamByName('isparam1').AsString := '0';
                          StoredProcJshdAll.Params.ParamByName('isparam2').AsString := DataSetBrokerJSDRZ.dataset.fieldbyname('id').asstring;
                          StoredProcJshdAll.Execute;
                           //DataSetBrokerJSDRZ.DataSet.refresh;
                           end
                           else
                             if  ((DataSetBrokerJSDRZ.DataSet.FieldByName('zylb').asstring = '入库')  or (DataSetBrokerJSDRZ.DataSet.FieldByName('zylb').asstring = '出库')) and (DataSetBrokerJSDRZ.DataSet.FieldByName('czgch').asstring = '转账' ) then
                               begin
                                 if (DataSetBrokerJSDRZ.DataSet.FieldByName('dw1').asstring <>'') and (DataSetBrokerJSDRZ.DataSet.FieldByName('dw2').asstring = '') then
                                    begin
                                    //计数单入帐时更新货物进出记录表 bt_hwjchjl,传入参数:para_fsh:更新模式,'0'为入帐,para_id:计数单id
                                    StoredProcJshdAll.Params.ParamByName('myflag').AsString := 'jshd_refresh_hwjchjl';
                                    StoredProcJshdAll.Params.ParamByName('isparam1').AsString := '0';
                                    StoredProcJshdAll.Params.ParamByName('isparam2').AsString := DataSetBrokerJSDRZ.dataset.fieldbyname('id').asstring;
                                    StoredProcJshdAll.Execute;
                                    //计数单入帐
                                    StoredProcJshdAll.Params.ParamByName('myflag').AsString := 'jshdrzh';
                                    StoredProcJshdAll.Params.ParamByName('isparam1').AsString := '0';
                                    StoredProcJshdAll.Params.ParamByName('isparam2').AsString := DataSetBrokerJSDRZ.dataset.fieldbyname('id').asstring;
                                    StoredProcJshdAll.Execute;
                                    //DataSetBrokerJSDRZ.DataSet.refresh;
                                    end
                                    else
                                    //计数单入帐时更新货物进出记录表 bt_hwjchjl,传入参数:para_fsh:更新模式,'0'为入帐,para_id:计数单id
                                    StoredProcJshdAll.Params.ParamByName('myflag').AsString := 'jshd_refresh_hwjchjl';
                                    StoredProcJshdAll.Params.ParamByName('isparam1').AsString := '0';
                                    StoredProcJshdAll.Params.ParamByName('isparam2').AsString := DataSetBrokerJSDRZ.dataset.fieldbyname('id').asstring;
                                    StoredProcJshdAll.Execute;
                                     end;
                              end;
                         end;
                    end;
               end;
              // end;
             DataSetBrokerJSDRZ.DataSet.next;

         end;
             DataSetBrokerJSDRZ.DataSet.FilterOptions := [TFilterOption.foCaseInsensitive];
             DataSetBrokerJSDRZ.DataSet.Filter :='sh='+ Business.System.SysUtils.QuotedStr(SysUtils.IntToStr(0));
             DataSetBrokerJSDRZ.DataSet.Filtered :=true;
    finally
    DataSetBrokerJSDRZ.DataSet.EnableControls;


    end ;
end;


是不是代码有问题啊?从DataSetBrokerJSDRZ.DataSet.First;这一句直接跳到DataSetBrokerJSDRZ.DataSet.next;

         end;
             DataSetBrokerJSDRZ.DataSet.FilterOptions := [TFilterOption.foCaseInsensitive];
             DataSetBrokerJSDRZ.DataSet.Filter :='sh='+ Business.System.SysUtils.QuotedStr(SysUtils.IntToStr(0));
             DataSetBrokerJSDRZ.DataSet.Filtered :=true;
    finally
    DataSetBrokerJSDRZ.DataSet.EnableControls;

来执行了,我对delphi不太熟,请问是什么原因呢?是不是代码写的有问题呢?
回复

使用道具 举报

发表于 2008-11-17 08:35:22 | 显示全部楼层
DataSetBrokerJSDRZ.DataSet里面没有记录? 循环才能跳过去。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-17 08:37:40 | 显示全部楼层
有记录的,我截个图来~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-17 08:38:41 | 显示全部楼层

未命名.jpg

30.96 KB, 下载次数: 99

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-17 08:40:34 | 显示全部楼层
我选中其中一条记录,点击审核入账,记录消失,可数据库没有任何操作,再点另一条记录时,不需要点击审核入账,就执行下面这段了
DataSetBrokerJSDRZ.DataSet.FilterOptions := [TFilterOption.foCaseInsensitive];
             DataSetBrokerJSDRZ.DataSet.Filter :='sh='+ Business.System.SysUtils.QuotedStr(SysUtils.IntToStr(0));
             DataSetBrokerJSDRZ.DataSet.Filtered :=true;
回复 支持 反对

使用道具 举报

发表于 2008-11-17 08:46:57 | 显示全部楼层
代码太长,我看你DataSetBrokerJSDRZ.DataSet.next上面的语句就是while循环,所以只能是2楼的解释。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-17 08:48:17 | 显示全部楼层
哦,好吧,我再看看吧,结贴吧
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-27 14:52 , Processed in 0.047822 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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