起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 138|回复: 7

【结】关于批处理的问题**

[复制链接]
发表于 2008-4-2 17:02:15 | 显示全部楼层 |阅读模式
如图所示,我把部门审核功能设置为可以批处理,而且功能也实现了,但是由于我要保存每一个审核的意见,所以请问怎么可以实现我只要保存一次就可以给参加批处理的项目保存同样的审核意见呢?

批处理项目列表.jpg

24.28 KB, 下载次数: 104

回复

使用道具 举报

 楼主| 发表于 2008-4-2 17:02:58 | 显示全部楼层
审核意见如下图所示:

批处理项目审核意见.jpg

19.33 KB, 下载次数: 101

回复 支持 反对

使用道具 举报

发表于 2008-4-2 17:35:35 | 显示全部楼层
自己在数据导航的BeforeAction上实现自己的逻辑,就是循环数据集,填写相应的值,就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-10 15:15:10 | 显示全部楼层
你好,我的2楼图示的数据导航条的数据源设置的是datasetbrokeryj,DataSetBrokerbmxmhz指向1楼所示的项目汇总数据集。我在他的事件中定义如下所示:
procedure TMainForm.DataNavigator1BeforeAction(Sender: TObject; var Accept: Boolean);
var
   count : Integer;
   tempstr : String;
   i : Integer;
begin
   DataSetBrokerbmxmhz.DataSet.Open;
   count := DataSetBrokerbmxmhz.DataSet.RecordCount;
   for i:=0 to count-1 do
   begin
     DataNavigator1.AutoDetect := True;
     DataNavigator1.Refresh;
     DataSetBrokeryj.DataSet.Open;
     DataSetBrokeryj.DataSet.FieldByName('XMBS').Value := DataSetBrokerbmxmhz.DataSet.FieldByName('XMBS').Value.ToString;
     DataSetBrokeryj.DataSet.FieldByName('BDMC').Value := '建议书';
     DataSetBrokeryj.DataSet.FieldByName('YJMC').Value := '部门初审意见';
     Dialogs.ShowMessage(DataSetBrokeryj.DataSet.FieldByName('XMBS').Value.ToString+DataSetBrokeryj.DataSet.FieldByName('BDMC').Value.ToString+DataSetBrokeryj.DataSet.FieldByName('YJMC').Value.ToString);

     if JYSYWXX.TBMCSYJBDWD(DocView2.Doc).RadioButtontongguo.Checked then
     begin
        DataSetBrokeryj.DataSet.FieldByName('LXYJ').Value :='同意';
     end;
     if JYSYWXX.TBMCSYJBDWD(DocView2.Doc).RadioButtontaotai.Checked then
     begin
        DataSetBrokeryj.DataSet.FieldByName('LXYJ').Value :='不同意';
     end;
     if JYSYWXX.TBMCSYJBDWD(DocView2.Doc).RadioButtonxiugai.Checked then
     begin
        DataSetBrokeryj.DataSet.FieldByName('LXYJ').Value :='返回修改';
     end;
     DataSetBrokerbmxmhz.DataSet.Next;
   end;

end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-10 15:16:49 | 显示全部楼层
我通过dialog显示的循环是没有问题的,可是保存到数据库中的只有一条记录,怎么回事啊?
我的2楼图示中的导航条的autodetect属性设为false也不行。
回复 支持 反对

使用道具 举报

发表于 2008-4-10 15:39:38 | 显示全部楼层
实现的结果没有达到你的要求,肯定是你的逻辑问题
1、因为 循环的是 DataSetBrokerbmxmhz  这个数据集,所以DataSetBrokerbmxmhz.DataSet.Open; 后,需要把光标移动到最前面,即在后面需要加上一句DataSetBrokerbmxmhz.DataSet.First;

2、你Dialogs 显示的是 DataSetBrokeryj  这个数据集,而循环的 DataSetBrokerbmxmhz 是这个数据集,你怎知道循环没有问题的?难道是如果 DataSetBrokerbmxmhz  这个有三条记录时,最后Dialogs显示了三次

3、DataSetBrokeryj.DataSet.FieldByName('XMBS').Value := DataSetBrokerbmxmhz.DataSet.FieldByName('XMBS').Value.ToString;
这两个数据集的'XMBS'的字段类型一样吧,修改为
DataSetBrokeryj.DataSet.FieldByName('XMBS').Value := DataSetBrokerbmxmhz.DataSet.FieldByName('XMBS').Value;


4、下面这样语句不要写到循环里面,写到循环的外面即可
  DataNavigator1.AutoDetect := True;
     DataNavigator1.Refresh;
     DataSetBrokeryj.DataSet.Open;
当然我不清楚你的  DataNavigator1.AutoDetect := True;
     DataNavigator1.Refresh; 这两句是要实现啥,

5、在这个DataSetBrokeryj.DataSet.FieldByName('LXYJ').Value :='同意'; 前面应该加上一句
DataSetBrokeryj.DataSet.Edit;
应该所有代码赋值前都需要加一句数据集.Edit


6、最重要的,应该BeforeAction 事件中首先判断点击的是否是保存按钮,如果是,你在执行你这端逻辑,如果是其他的按钮,不应该执行你这段逻辑的,
判断,参考http://bbs.justep.com/forum.php?mod=viewthread&tid=517
回复 支持 反对

使用道具 举报

发表于 2008-5-4 16:47:56 | 显示全部楼层
楼主,问题解决了吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-5 11:08:31 | 显示全部楼层
没问题了!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-12 10:51 , Processed in 0.046463 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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