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

时间:2022-07-09 14:53:45
sql server中的表,主键设置为自动增量字段。
前台新增保存后,再立即修改或删除,则出错,经SQL分析,是前台传回条件的ID为空。请问如何处理。
数据库连接方式:adoconn+adoquery+provider+cliendataset
已在adoquery中改变多种游标方式,在adoquery和cliendataset中设置ID字段为key,且已设置ID字段为自动增量,均没有解决。

5 个解决方案

#1


自增字段添加的时候就不要传回了

#2


修改和删除时用ADOQUERY.EXECSQL语句

#3


客户端数据没有刷新,因为你新增后,客户端的数据是有了,但是却没有id字段的值,你怎么修改???
要刷新一下, 比如: adoquery.requery();

#4


感觉有点怪

#5


以前我是用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不同,后台有值,前台为空),无法更新记录。

  
 

#1


自增字段添加的时候就不要传回了

#2


修改和删除时用ADOQUERY.EXECSQL语句

#3


客户端数据没有刷新,因为你新增后,客户端的数据是有了,但是却没有id字段的值,你怎么修改???
要刷新一下, 比如: adoquery.requery();

#4


感觉有点怪

#5


以前我是用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不同,后台有值,前台为空),无法更新记录。