写入SQLSERVER数据库时出现的问题,巨难,高手指点一二

时间:2022-09-22 21:43:40
巨郁闷,前些天明明调试可以的,折腾了两天都不行,高手帮帮忙。
adoquery1中的数据集是随adoquery2的scroll而改变的,执行
adoquery1.Edit;
adoquery1.FieldByName('f_reportstatus').AsInteger:= 2;
adoquery1.Post; 
时,出错:‘键列信息不足’。
adoquery1中的数据集是随adoquery2的scroll而改变的。
另一处和上面情况类似,出错信息是:‘无法为更新行集定位,一些值可能在最后读取后改变’。

20 个解决方案

#1


帮顶。

#2


从来都是直接使用SQL来写的,你这样的写法没有用过,但他有个问题是无法定位在写那一行上,我看到过好多人都使用ParamByName,这样的方式来写的,在ADOQUERY中这样写adoquery1.Parameters.ParamByName(),不要使用FIELDBYNAME,除非你使用定位后才可以吧,没具体试过,理论上是可行的

#3


就是说你的ADOQuwey1中用到的列,无法确定
别这样写了

#4


谢过楼上,不过我都是用FieldByName定位列的,只用Parameters来传递参数,没有出现过问题。上面的语句我如果去掉POST就不会出现上述的问题了,应该是无法定位行的问题,但如果不POST,不能保证数据库中数据更新了啊。

#5


我估计应该和adoquery1中的数据集是随adoquery2的scroll而改变的有关系,高手再帮帮忙,比较急~~

#6


哈哈,我也遇见过这样的问题,你表里是不是有非空列的值被你修改了呀。

#7


应该是你的表结构的问题  , 你的表是不是没有主键啊!!!或UP

#8


'f_reportstatus'写错没有?

#9


你换在BEFORscroll 事件中写代码

#10


表结构被更改了
请检查
关键字,非空字段,有默认值字段

#11


如果前几天都可以的,现在不行的话那肯定是改了什么东西,我不单指你的 Source ,还包括你的 System environment 和 DB.

#12


我怀疑你的表没有主键

#13


哦,是没有设主键,跟这有关系??

#14


因为你的表之间设定了关系,而你是在插入操作时是先操作了从表.

#15


我现在在家,不能调试程序,所以还不知否是没主键的原因,不过我记得没有设主从表啊,

#16


这个问题在我以前做的程序里曾经有过,我记得是后来把每个表都设了主键才解决了,楼主可以试试。

#17


应该是你的adoquery1.SQL.tex语句中select后面的字段列表中没把所有关键字列出或adoquery1的字段编辑器过滤了关键字段,检查一下重试

#18


你用了異動,那麼一定有相關聯的字段,現在你只增加被異動表裡的字段數據,這肯定不行的

#19


无法定位更新行,使因为你的query在用的时候,你的源表内容发生改变,而且你又更改了query的数据,导致在提交的时候无法更新你的query,我也遇到过这种情况

#20


把所有表加了主键之后问题解决了,实在谢谢诸位了~。

#1


帮顶。

#2


从来都是直接使用SQL来写的,你这样的写法没有用过,但他有个问题是无法定位在写那一行上,我看到过好多人都使用ParamByName,这样的方式来写的,在ADOQUERY中这样写adoquery1.Parameters.ParamByName(),不要使用FIELDBYNAME,除非你使用定位后才可以吧,没具体试过,理论上是可行的

#3


就是说你的ADOQuwey1中用到的列,无法确定
别这样写了

#4


谢过楼上,不过我都是用FieldByName定位列的,只用Parameters来传递参数,没有出现过问题。上面的语句我如果去掉POST就不会出现上述的问题了,应该是无法定位行的问题,但如果不POST,不能保证数据库中数据更新了啊。

#5


我估计应该和adoquery1中的数据集是随adoquery2的scroll而改变的有关系,高手再帮帮忙,比较急~~

#6


哈哈,我也遇见过这样的问题,你表里是不是有非空列的值被你修改了呀。

#7


应该是你的表结构的问题  , 你的表是不是没有主键啊!!!或UP

#8


'f_reportstatus'写错没有?

#9


你换在BEFORscroll 事件中写代码

#10


表结构被更改了
请检查
关键字,非空字段,有默认值字段

#11


如果前几天都可以的,现在不行的话那肯定是改了什么东西,我不单指你的 Source ,还包括你的 System environment 和 DB.

#12


我怀疑你的表没有主键

#13


哦,是没有设主键,跟这有关系??

#14


因为你的表之间设定了关系,而你是在插入操作时是先操作了从表.

#15


我现在在家,不能调试程序,所以还不知否是没主键的原因,不过我记得没有设主从表啊,

#16


这个问题在我以前做的程序里曾经有过,我记得是后来把每个表都设了主键才解决了,楼主可以试试。

#17


应该是你的adoquery1.SQL.tex语句中select后面的字段列表中没把所有关键字列出或adoquery1的字段编辑器过滤了关键字段,检查一下重试

#18


你用了異動,那麼一定有相關聯的字段,現在你只增加被異動表裡的字段數據,這肯定不行的

#19


无法定位更新行,使因为你的query在用的时候,你的源表内容发生改变,而且你又更改了query的数据,导致在提交的时候无法更新你的query,我也遇到过这种情况

#20


把所有表加了主键之后问题解决了,实在谢谢诸位了~。

#21