sql server中自动增量字段的更新问题

kzy7517 2006-06-22 12:58:17
sql server中的表,主键设置为自动增量字段。
前台新增保存后,再立即修改或删除,则出错,经SQL分析,是前台传回条件的ID为空。请问如何处理。
数据库连接方式:adoconn+adoquery+provider+cliendataset
已在adoquery中改变多种游标方式,在adoquery和cliendataset中设置ID字段为key,且已设置ID字段为自动增量,均没有解决。
...全文
295 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kzy7517 2006-06-26
  • 打赏
  • 举报
回复
以前我是用Oracle的,新增记录的处理都是在DataSet的AfterInsert或者OnNewRecord事件中,从后台SEQ中取回一个ID,再赋给DataSet的ID字段,再保存。立即修改也正确。这是在Oracle中开发一种常见的标准方式。
对于SQL Server,应该也有一种标准的处理方式。我现在就是想该如何设置某些参数,就能让Delphi自动适应SQL Server的自动增量字段。如果保存了,还要人工再刷新,处理起来不太方便,如记录重新定位等。当然,在SQL Server中也可以用表存储值的方式来模拟Oracle的SEQ,但我现在是想知道Delphi对SQL Server的自动增量字段处理的标准方式。

postren(小虫) ( ) 信誉:117 2006-6-22 13:09:58 得分: 0
自增字段添加的时候就不要传回了

是不用传回,但现在的问题是修改记录,系统如何知道该更这哪行记录?因为数据库中的记录的值已经与前台的值不一致了(自动增量的ID不同,后台有值,前台为空),无法更新记录。



hugoon 2006-06-22
  • 打赏
  • 举报
回复
感觉有点怪
dabaicai 2006-06-22
  • 打赏
  • 举报
回复
客户端数据没有刷新,因为你新增后,客户端的数据是有了,但是却没有id字段的值,你怎么修改???
要刷新一下, 比如: adoquery.requery();
gerrylc 2006-06-22
  • 打赏
  • 举报
回复
修改和删除时用ADOQUERY.EXECSQL语句
postren 2006-06-22
  • 打赏
  • 举报
回复
自增字段添加的时候就不要传回了

2,497

社区成员

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

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