利用TQuery编辑数据问题

linzer 2003-07-29 10:12:12
TDatabase(连接Interbase-ODBC) -- TQuery(RequestLive=true) -- TDatasource -- TDBGrid
在执行如:
Query1.Insert;
Query1.FieldByName('CODE').AsString := '2222';
Query1.FieldByName('NAME').AsString := 'BBBB';
Query1.Post;
后,数据库、Query1中都有插入这条记录,问题是:
DBGrid中新插入的记录会覆盖DBGrid之前的当前记录,
如DBGrid插入之前记录为Code:1111,Name:AAAA,插入后Code:2222,Name:BBBB
覆盖了Code:1111,Name:AAAA,而Query中Code:1111没被覆盖
请问高手如何解决?!
...全文
34 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
linzer 2003-07-29
  • 打赏
  • 举报
回复
现在找到了个方法:
Query1.DisableControls;
try
Query1.CachedUpdates:= true; //CachedUpdates设为True
Query1.Append;
Query1.FieldByName('CODE').AsString := '2222';
Query1.FieldByName('NAME').AsString := 'BBBB';
Query1.Post;
Query1.ApplyUpdates;
finally
Query1.EnableControls;
end;
不懂是不是最好办法,好像CachedUpdates设为True对多用户同时操作数据库有缺陷,Delphi帮助里:
The potential drawbacks of enabling cached updates are:
Other applications can access and change the actual data on the server while users are editing local copies of the data, resulting in an update conflict when cached updates are applied to the database.
Other applications cannot access data changes made by an application until its cached updates are applied to the database.
各位大侠,CachedUpdates我比较少用,不知要注意些什么
另,DisableControls,EnableControls这样用是否正确,我对这两个的作用认识有点不很清楚
czp 2003-07-29
  • 打赏
  • 举报
回复
定义一书签,插入后刷新,回到书签
Geranium 2003-07-29
  • 打赏
  • 举报
回复
DBGrid是连到数据库的表吧?Refresh一下DBGrid就行了
sundayboys 2003-07-29
  • 打赏
  • 举报
回复
你把RequestLive设置为false试试.
linzer 2003-07-29
  • 打赏
  • 举报
回复
Append也不行,同样问题
666333 2003-07-29
  • 打赏
  • 举报
回复
Query1.Append;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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