起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 202|回复: 17

【搞定】对取DataGrid未保存值问题的反馈,遇到了新问题[问题]**

[复制链接]
发表于 2007-8-24 08:53:54 | 显示全部楼层 |阅读模式
我在BeforeApplyUpdate中写代码DataSetBroker1.DataSet.cancelUpdates;
虽然取消了用户的输入,但是好象是在取消前(我不是很清楚),该记录已经被添加到表中了,怎么办?
顺便说一句,上一贴,你叫我反馈,怎么把贴给关闭了?
回复

使用道具 举报

发表于 2007-8-24 08:55:35 | 显示全部楼层
没有明白,怎么“好像是在取消前(我不是很清楚),该记录已经被添加到表中了”
你看到效果了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-24 09:08:43 | 显示全部楼层
是的,我添加一条记录,商品编号001,商品全名:电脑,数量XX,输入的数量超过库存,程序报出信息并取消了操作,但是在次添加这种商品,报错说不能插入重复键,打开表看该记录已经存在于表中,重复试了好几个表单都是这样.
DataSetBroker1.DataSet.First;
                         while not DataSetBroker1.DataSet.Eof do
                         begin
                              b:=DataSetBroker1.DataSet.FieldByName('SPBH').AsString.Trim();
                              s:=DataSetBroker1.DataSet.FieldByName('SL').AsInteger;
                              DataSetBroker1.DataSet.Next;
                              with lsqldataset do
                              begin
                              sql.Text := 'select SUM(SL) SL from STSHD,STSHDMXB where STSHDJBH=DJBH and STSHSHCK='''
                              + fhckstr + ''' and SPBH='''
                              + b + '''';
                              Open;
                              CKint:=FieldByName('SL').AsInteger;
                              CKint:=CKint-s;
                                  if CKint<0 then
                                  begin
                                     Dialogs.ShowMessage('商品编号:' + b +' '+ fhckstr + ' 库存量不足,不能过帐!');
                                     DataSetBroker1.DataSet.cancelUpdates;
                                  end;
                              Close;
                              end;
                         end;
难道是事件不对?这个事件不是在保存之前执行的么?
回复 支持 反对

使用道具 举报

发表于 2007-8-24 09:51:14 | 显示全部楼层
你在看一下我写的那个帖子,http://bbs.justep.com/forum.php?mod=viewthread&tid=17498  2楼让你写到BeforeAction上

另外http://bbs.justep.com/forum.php?mod=viewthread&tid=17498 这个帖子怎么办,我结了:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-24 10:05:06 | 显示全部楼层
BeforeAction ?DatasetBroiker没有这个事件
我的DataSetBroker是在表格文档中的
回复 支持 反对

使用道具 举报

发表于 2007-8-24 10:32:55 | 显示全部楼层
我是让你在数据导航的BeforeAction 上
在功能上做
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-24 10:46:30 | 显示全部楼层
我的DataGrid是放在表格文档中的,你意思是要我在窗体上再连个DataSetBroker做?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-24 10:58:07 | 显示全部楼层
还是不行,在新增第一条记录时,根本就不执行代码
回复 支持 反对

使用道具 举报

发表于 2007-8-24 11:32:19 | 显示全部楼层
你代码写到哪里去了?如果是放到数据导航的BeforeAction ,那么肯定要点击数据导航的按钮才执行啊,且你一直说在保存的时候才去判断,那么肯定是在点击保存按钮的时候才去做这样的动作,
怎么一个简单的问题,被搞的这么复杂呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-24 11:48:32 | 显示全部楼层
我的表结构是主从结构的,如果在连接主表的DataSetBroker里写BeforeApplyUpdate事件可以阻止从表的数据保存,但是主表的数据仍然会被保存到表里
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-15 13:03 , Processed in 0.041762 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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