无法为更新定为行,一些值可能在最后一次读取后已更改!(十万火急,兄弟们帮忙啊)

wintergoes 2004-01-26 01:16:43
tadoquery+access
这个问题怎么解决啊?
...全文
30 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wintergoes 2004-01-31
  • 打赏
  • 举报
回复
谢谢各位
czzw 2004-01-29
  • 打赏
  • 举报
回复
在你的数据集中包括唯一关键字作为系统的识别字段
programgirl 2004-01-29
  • 打赏
  • 举报
回复
你在POST之前不用刷新的,不然就先关掉了表,当然再保存就难啦!
elitegroup 2004-01-29
  • 打赏
  • 举报
回复
建议 楼上的 update
yyfhz 2004-01-29
  • 打赏
  • 举报
回复
能用这样的方法吗?
sql.Add('update salecount set 手牌号='''+lblTo.caption+''' where 房间=''男间'' and 结帐否=false 手牌号='+lblfrom.Caption);
xinsmith 2004-01-29
  • 打赏
  • 举报
回复
以前遇到过!
主要是数据冲突!
感觉你用的不是很熟悉!
haike_911 2004-01-29
  • 打赏
  • 举报
回复
你是否在post之前就关闭了数据集
wintergoes 2004-01-26
  • 打赏
  • 举报
回复
检查一下table里是否有自动增长字段,并且是否已把它加到程序里了

把自动增长字段删掉可以吗?是否把它加到程序里是什么意思?

检查一下你的table里是否有字段存在默认值,最好在前台赋默认值

我把默认值都给删掉了,前台赋默认值是什么意思?
gzllich 2004-01-26
  • 打赏
  • 举报
回复
post之前为何要refresh?
确认保存之前数据是否已改变
检查一下table里是否有自动增长字段,并且是否已把它加到程序里了
检查一下你的table里是否有字段存在默认值,最好在前台赋默认值
wintergoes 2004-01-26
  • 打赏
  • 举报
回复
ding一下,有没有人帮忙啊?
chenylin 2004-01-26
  • 打赏
  • 举报
回复
这是因为ADO的特性决定的。由于你使用的方式为:客户端的静态游标。也就是说,在你提交数据时,ADO形成的SQL语句是以你第一次提取的所有字段作为更新条件,如果再次更新时没有首先刷新数据的话,形成的SQL语句在数据库中无法找到特定的记录,必将出现你所说的问题。
解决办法:
1、每次提交之后,立即ADODateset.Requery;
2、将游标设为服务器端的动态游标。(功能强大,但系统开销大);
wintergoes 2004-01-26
  • 打赏
  • 举报
回复
这是代码,兄弟们帮忙啊


with queryexist do
begin
//更换customernow里的手牌号

close;

sql.clear;
sql.Add('select * from customernow where 房间=''男间'' and 手牌号='+lblfrom.Caption);
prepared;
open;
//first;
while not Eof do
begin
edit;
fieldbyname('手牌号').AsInteger:=strtoint(lblto.caption);
refresh;
post;
//refresh;
next;
end;
//更换salecount里的手牌号

close;
sql.Clear;
sql.Add('select * from salecount where 房间=''男间'' and 结帐否=false 手牌号='+lblfrom.Caption);
prepared;
open;
//first;
while not eof do
begin
edit;
fieldbyname('手牌号').AsInteger:=strtoint(lblto.caption);
refresh;
post;
// //refresh;
next;
end;
//更换servicercount里的手牌号

close;
sql.Clear;
sql.Add('select * from servicercount where 房间=''男间'' and 结帐否=false 手牌号='+lblfrom.Caption);
prepared;
open;
// //first;
while not eof do
begin
edit;
fieldbyname('手牌号').AsInteger:=strtoint(lblto.caption);
refresh;
post;

next;
end;

end;
yifei1900 2004-01-26
  • 打赏
  • 举报
回复
Ding.
wintergoes 2004-01-26
  • 打赏
  • 举报
回复
哪个方法?
怎么用啊?
yyfhz 2004-01-26
  • 打赏
  • 举报
回复
用sql的批处理功能吧,那就不用担心同步的问题了。
搬运工木木 2004-01-26
  • 打赏
  • 举报
回复
个人感觉你这个几REFRESH加得不对吧,加了反而会出错,你这些操作本身就是批处理,中间无长时间停顿.一般处理,应该很少会出问题了

5,388

社区成员

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

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