永发信息网

VB删除数据库记录报错:键列信息不足或不正确。更新影响到多行

答案:2  悬赏:30  手机版
解决时间 2021-02-27 23:08
  • 提问者网友:嘚啵嘚啵
  • 2021-02-27 16:12
首先说明:
1,我在数据库表A里面建立一个触发器DELETe
当删除表A某条记录,则相对应的删除该记录某字段对应的表B内相关的所有记录
2,表A 表B 都建立了自增字段 ID1 ID2 都设置成了主键
3,我直接打开数据库删除表A某条记录,可以正确的执行Delete触发器删除表B内相关联的所有记录
然后我开始在VB应用程序里面使用代码删除:formX.AdodcX.Recordset.Delete 删除表A一条记录
调试报错,上条代码变黄色,报错信息如题:键列信息不足或不正确。更新影响到多行
网上百度都是说没主键 要不就是有完全重复的记录 ,我的表内不存在网上说的那些错误.............郁闷
我的表有主键,自增型的就不会存在完全重复的可能
如果我禁用触发器,VB代码执行完全正常,只是为了让代码更简练、稳定,所以尽量用触发器去实现
恳请大神指点啊!!

Form4.Adodc5.RecordSource = "select * from 出入库单据表 where 单据='" & System_documents & "'"
Form4.Adodc5.Refresh
Do While Not Form4.Adodc5.Recordset.EOF
Form4.Adodc5.Recordset.Delete
Form4.Adodc5.Recordset.MoveNext
Loop
这个明显是包括了所有字段了啊 Select * ,* 表示所有字段啊,也就包括了主键ID1了啊
最佳答案
  • 五星知识达人网友:撞了怀
  • 2021-02-27 17:43
是你查询出来的结果没有主键吧.如果你查询的语句没有把id1,id2包括进去.那么你删除数据的时候按照查询结果去删除,会有一样的记录就会出现这样的错误.
也就是你数据库里有主键,但是你程序的数据集里可能没有主键或唯一性字段,删除一条记录,如果数据库匹配出一样的记录就会这样.
全部回答
  • 1楼网友:何以畏孤独
  • 2021-02-27 19:03

提示的意思很明显了,就是数据库中的字段类型和你的tsql语句中的类型不同,sql语句中 sqlstring = "select * from 表1 where accountno='" & textbox1.text & "'and pwb ='" & textbox2.text & "'"

这个里面的字段类型为字符串,但是你数据库中的可能不是,检查下,保持一致或sql语句上强行转换即可。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯