V
vmao
Unregistered / Unconfirmed
GUEST, unregistred user!
以前一直没有怀疑过query的缓存更新!直到最近碰到一个问题!
我做了一个小试验即使基本不写什么代码也要出错!不知道是什么原因!
具体做法是这样的!
控件:tquery+tupdatesql+tdatasource+tdbgrid各一个!把它们接好以后!
设置query为cacheupdate;用updatesql来更新后台! where 条件只有aa一个字段;
一个tbutton控件:
onclick事件写 query1.applyupdates;query1.commitupdates;
数据库sql server 表aaa
字段:aa bb cc 其中aa是主键;
操作过程是这样的:
1.先在dbgrid1中增加两条记录(直接在表格中输入):
如:11,11,11
22,22,22
2.点击button1执行applyupdates和commitupdates;这时数据被写到后台!不出错!
3.立即修改刚刚提交的两条记录;如:改cc字段11改33,22改44,将改过的33再改回11(两条记录间折腾一下)
没有编辑key字段,点击button1提交数据就出错了:“键值重复”
我用监视器跟踪了一下!我编辑的数据被delphi认为是增加的记录执行了insert语句!delphi没缓过神来!(认为我在insert)
我实在想不通为什么会出现这种情况!
如果我只增加一条记录无论怎么编辑都不出错!如果我增加的两条记录中只修改一条也不出错!(但一反复两条修改就出错了!)
当然如果我把11记录删掉再添加一条同样的记录(key同),这种情况就更出错了!
以上是我遇到的缓存更新的两个问题
我做了一个小试验即使基本不写什么代码也要出错!不知道是什么原因!
具体做法是这样的!
控件:tquery+tupdatesql+tdatasource+tdbgrid各一个!把它们接好以后!
设置query为cacheupdate;用updatesql来更新后台! where 条件只有aa一个字段;
一个tbutton控件:
onclick事件写 query1.applyupdates;query1.commitupdates;
数据库sql server 表aaa
字段:aa bb cc 其中aa是主键;
操作过程是这样的:
1.先在dbgrid1中增加两条记录(直接在表格中输入):
如:11,11,11
22,22,22
2.点击button1执行applyupdates和commitupdates;这时数据被写到后台!不出错!
3.立即修改刚刚提交的两条记录;如:改cc字段11改33,22改44,将改过的33再改回11(两条记录间折腾一下)
没有编辑key字段,点击button1提交数据就出错了:“键值重复”
我用监视器跟踪了一下!我编辑的数据被delphi认为是增加的记录执行了insert语句!delphi没缓过神来!(认为我在insert)
我实在想不通为什么会出现这种情况!
如果我只增加一条记录无论怎么编辑都不出错!如果我增加的两条记录中只修改一条也不出错!(但一反复两条修改就出错了!)
当然如果我把11记录删掉再添加一条同样的记录(key同),这种情况就更出错了!
以上是我遇到的缓存更新的两个问题