关于用TQuery更新记录的问题

古城浪子 2005-11-29 02:58:57
初学delphi,现用Tquery更新记录,代码如下:
begin
dbmodule.GPRS_Query.Close;
dbModule.GPRS_Query.SQL.Clear;
dbmodule.GPRS_Query.SQL.Add('select * from GprsClient Where ID='+IntToStr(GPRSID));
dbmodule.GPRS_Query.Open;
if dbmodule.GPRS_Query.Eof=False then//如果记录不为空
begin
if not (dbmodule.GPRS_Query.State in [dsInsert, dsEdit]) then
dbmodule.GPRS_Query.Edit;//将数据集改为编辑状态
dbmodule.GPRS_Query.FieldValues['GPRSName']:=GPRSName;
dbmodule.GPRS_Query.FieldValues['PhoneNumber']:=GPRSNUmber;
dbmodule.GPRS_Query.FieldValues['GPRSAddr']:=GPRSAddr;
dbmodule.GPRS_Query.FieldValues['GPRSDescript']:=GPRSDescript;
dbmodule.GPRS_Query.Post;
end;
dbmodule.GPRS_Query.Close;
end;
现在:代码可以正常执行,但无法更新记录,请各位大侠赐教!
...全文
164 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangjing1979666 2005-11-30
  • 打赏
  • 举报
回复
Edit、Post、Applyupdates(-1)或者Applyupdates(0),都是针对三层结构,建议楼主如果不是三层结构的,就是用 sql 语句进行处理,那样很方便
hhzqf1980 2005-11-30
  • 打赏
  • 举报
回复
单步跟踪,如果执行的话,
那一定是更新了
如果你没有发现数据更新,那你到对应的数据库中看看,
是否更新了数据;
没有显示出来是因为你没有重新取数据出来
smartgx 2005-11-29
  • 打赏
  • 举报
回复
建议你将Post方法改为UpdateBatch方法,并且ADOQuery的LockType属性要设为ltBatchOptimistic
古城浪子 2005-11-29
  • 打赏
  • 举报
回复
说明一下:我用的是TADOQUERY组件,没有你说的那个属性和方法,所以还是搞不定,麻烦你再看看吧,谢谢!
ZHGCLPZHR789 2005-11-29
  • 打赏
  • 举报
回复
方法一:
将GPRS_Query的requestlive设为true;
然后在POST后再加:dbmodule.GPRS_Query.applyupdates;
方法二:
TQuery1和TUpdateSQL1组合使用,具体的使用方法你去查一下资历料吧
POST不是真的提交,只是把它写入缓存,applyupdates;也是真的提交。

2,507

社区成员

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

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