一个送分的小问题(50分)

  • 主题发起人 主题发起人 sleepy
  • 开始时间 开始时间
S

sleepy

Unregistered / Unconfirmed
GUEST, unregistred user!
在DBGrid中,修改某条记录之后,如果移动到其它记录上时,
会自动进行update。
但是我现在遇到的问题是,当我修改完某条记录后,
没有移动到别的记录中去,特例是,当我的DBGrid中用SQL语句
只Select出了一条记录,这时,当我修改完毕,执行其它操作时,
比如执行下一个SQL语句,或者直接关闭窗口时,这条记录还是保
持着原来没有被修改的状态。请问我该怎么办?
 
在dbgrid.oncolexit事件中update;
 
用tquery返回的结果默认是readonly的。
 
在query的字段的onchange中立即post
 
您可以在执行的下一个SQL语句后加上一条
DBgrid.Update;
 
to hubdog:
dbgrid.oncolexit只在该DBGrid中点击鼠标或者键盘时有效,我进行其它
操作,如点击某个按钮时,并不触发这个事件。 :(
to menxin:
怪我没说清楚,我不是使用的TQuery,而是D5 ADODataSet.CommandText
来输入SQL语句的。
to 小天:
这个onchange我找不到的说。
to jobsxy:
在改变ADODataSet.CommandText之后,加上它是不起作用的。关键问题是,
我不一定要进行下一次SQL检索,很可能就仅仅是点击别的按钮什么的,这
时候我怎么办呢? 下一次检索和关闭窗口是两个特例而已。

谢谢各位,继续指点 :)

 
dbgrid.onexit(我试了一下,应该可以)
procedure TForm1.DBGrid1Exit(Sender: TObject);
begin
if DataSource1.State in [dsEdit] then
begin
table1.Post;
end;
end;
 
注意直接关闭,应在tform.onclosequery事件中写update;
 
Ok搞定, Thank you hubdog!
 
接受答案了.
 
在onchange事件或在你结束当前操作需存盘进行下一项工作时加入:
if query1.State=dsedit then query1.post;
 
后退
顶部