以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- MYSQL模拟关联表保存报错问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=187902) |
-- 作者:lin98 -- 发布时间:2023/8/19 11:08:00 -- MYSQL模拟关联表保存报错问题 \'Dim db = HySq--l.DataBaseFactory.CreateDatabase("myjc") Dim dt As DataTable = e.Form.Controls("Table1").Table.DataTable Dim dtb As System.Data.DataTable = dt.basetable.Copy \' dtb.Columns.Remove("_Locked") \' Dim res = db.Up-dateDataTable(dtb, "cKzb") Dim dt2 As DataTable = e.Form.Controls("Table2").Table.DataTable Dim dtb2 As System.Data.DataTable = dt2.basetable.Copy \' dtb2.Columns.Remove("_Locked") \' Dim res2 = db.U-pdateDataTable(dtb2, "cKmx") dt.AcceptChanges() 报错: “违反并发性:
DeleteCommand 影响了预期 1 条记录中的 0 条。“ 查一下网: 在access的mdb数据库动态更新的过程中,遇到了DeleteCommand出现DBConcurrencyException异常,错误:违反并发性: DeleteCommand 影响了预期 1 条记录中的 0 条。 程序逻辑:遍历表1的所有行,如果符合条件,则删除表1当前行,且删除表2中的相关行(两行),并在表2中插入新的一行。由于在判断的时候需要用到表2中新插入的行,所以得在循环中实时更新。 经查找:
该错误的原因为:数据库的主键设置为-自动编号。 现在用MYS-QL,出现同样问题 没看明白,不知道如何,请老师帮助,谢谢,保存和删除也会报错 |
-- 作者:有点蓝 -- 发布时间:2023/8/19 11:18:00 -- Dim dt2 As DataTable = e.Form.Controls("Table2").Table.DataTable Dim dtb2 As System.Data.DataTable = dt2.basetable.Copy \' dtb2.Columns.Remove("_Locked") \' dtb2.Columns.Remove("System_Sort_Temporary") dtb2.Columns.Remove("System_Filter_Temporary") dtb2.Columns.Remove("System_Filter_Unique") Dim res2 = db.UpdateDataTable(dtb2, "cKmx") dt2.AcceptChanges() Dim dt As DataTable = e.Form.Controls("Table1").Table.DataTable Dim dtb As System.Data.DataTable = dt.basetable.Copy \' dtb.Columns.Remove("_Locked") \' dtb.Columns.Remove("System_Sort_Temporary") dtb.Columns.Remove("System_Filter_Temporary") dtb.Columns.Remove("System_Filter_Unique") Dim res = db.UpdateDataTable(dtb, "cKzb") dt.AcceptChanges() |
-- 作者:lin98 -- 发布时间:2023/8/19 13:04:00 -- dtb2.Columns.Remove("System_Sort_Temporary") dtb2.Columns.Remove("System_Filter_Temporary") dtb2.Columns.Remove("System_Filter_Unique") 这个三行代码,没看懂,老师帮说一下,谢谢
|
-- 作者:有点蓝 -- 发布时间:2023/8/19 13:51:00 -- 临时表绑定窗口表后会自动新增一些内部使用的临时列,需要去掉,才能使用UpdateDataTable |
-- 作者:lin98 -- 发布时间:2023/8/19 13:58:00 -- 在测试,发现一个问题 在将新增的数据进行保存,2楼代码是正常,但对修改的数据进行保存,会报错违反并发的提示,修改的数据进行保存改用1楼,也是报同样的错,如何解决?谢谢
|
-- 作者:有点蓝 -- 发布时间:2023/8/19 14:25:00 -- 应该是数据库,或者数据库里表格的设置有问题导致的。试试 1、不要使用自增列 2、不要使用AcceptChanges,保存后重新从数据库获取数据绑定窗口表
|
-- 作者:lin98 -- 发布时间:2023/8/19 15:48:00 -- 1、不要使用自增列, 好象一般主键都是自增列,还有数据库与窗口的表的交互,也会有 2、不要使用AcceptChanges,保存后重新从数据库获取数据绑定窗口表, 你说新增使用AcceptChanges,修改保存不要AcceptChanges?
|
-- 作者:有点蓝 -- 发布时间:2023/8/19 16:11:00 -- 1、其实也就Foxtable习惯使用自增主键,这个是Foxtable的开发模式制约的。我见过的其它软件很少有用这种自增主键。没有自增主键,Foxtable一样可以正常使用 2、最后全部都不用
|
-- 作者:lin98 -- 发布时间:2023/8/19 16:25:00 -- 我使用是MYSQL主键自增, ID设为主键和外键,在窗口上录入时,看不到ID的编号,只有在关 窗口后,重新打开窗口或录入完下一个记录,上移,才看到ID的编号。 由于主键不为空,设定自增
问题一:这样比较不友好,如何解决? |
-- 作者:有点蓝 -- 发布时间:2023/8/19 17:20:00 -- 自增主键只有保存了才会有真正的数据。一般自增主键都不需要看到的,也不会用来做业务关联。考虑自己做编号处理http://www.foxtable.com/webhelp/topics/2403.htm |