100分,一个小问题,关于DBGRID(或者dbgrideh)。

smilelhh 2004-07-23 12:03:02
当我们更改了dbgrideh中的数据时,只要移动下一行,他就会自动更新上一行的数据(数据库中的数据就已经更改了),可是有时候,我想只有让按保存按钮时才让保存,其它时候不保存,应该怎么办.请各位大侠指教.
...全文
165 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
smilelhh 2004-07-26
  • 打赏
  • 举报
回复
问题解决,尤为感谢: lzy6204(想闭门修炼)

方法类似 lzy6204(想闭门修炼) 就不细说了。结帐
GoldShield 2004-07-23
  • 打赏
  • 举报
回复
你不去POST不就可以了么
jinjazz 2004-07-23
  • 打赏
  • 举报
回复
procedure TForm1.Button2Click(Sender: TObject);
begin
database1.Rollback; //取消
end;
cnyzr 2004-07-23
  • 打赏
  • 举报
回复
用批量处理呀!
lzy6204 2004-07-23
  • 打赏
  • 举报
回复
1.定义全局变量
bCanPost: Boolean;
2.在数据集控件的beforepost事件里面写代码
if (False = bCanPost) then
begin
DataSet.Cancel;
DataSet.Edit;
end;
bCanPost := False;
3.在保存按钮的点击事件里面
bCanPost := True;
...
post;
jinjazz 2004-07-23
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
begin
database1.Commit
end;

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
database1.StartTransaction;
end;
pokemonFK 2004-07-23
  • 打赏
  • 举报
回复
updatebatch;
qizhanfeng 2004-07-23
  • 打赏
  • 举报
回复
ADO的话用LockType:=ltBatchOptimistic该项数据就保存在内存 post也不行
最后要adoquery要updatebatch;就ok了
aiunong 2004-07-23
  • 打赏
  • 举报
回复
同意楼上的
jacket008 2004-07-23
  • 打赏
  • 举报
回复
如果是ADO的话用LockType:=ltBatchOptimistic就行,该项数据就保存在内存,最后提交就可以了
drift1981 2004-07-23
  • 打赏
  • 举报
回复
这个问题很简单,我以前也遇到过,你只需要把你的adoquery的locktype设置成ltBatchOptimistic,然后点击保存按钮只需用adoquery.UpdateBatch()就可以了
smilelhh 2004-07-23
  • 打赏
  • 举报
回复
to : jinjazz
我没有用BDE控件,没有database呀。用的是TidyDB。

to GoldShield
说了,是它自己自动post的呀

to lzy6204(想闭门修炼)
定义全局变量,有很多个表不是很麻烦?我先试试看。

其实想问Dbgrid或Table有没有得到行记录的状态的[dsEdit? dsInsert?]?
如果有就好办了。
NetG 2004-07-23
  • 打赏
  • 举报
回复
其实用事务处理应该不错的。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧