Foxtable(狐表)用户栏目专家坐堂 → MYSQL模拟关联表保存报错问题


  共有3331人关注过本帖树形打印复制链接

主题:MYSQL模拟关联表保存报错问题

帅哥哟,离线,有人找我吗?
lin98
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
MYSQL模拟关联表保存报错问题  发帖心情 Post By:2023/8/19 11:08:00 [显示全部帖子]

'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 条。“

查一下网:


accessmdb数据库动态更新的过程中,遇到了DeleteCommand出现DBConcurrencyException异常,错误:违反并发性: DeleteCommand 影响了预期 1 条记录中的 0 条。

程序逻辑:遍历表1的所有行,如果符合条件,则删除表1当前行,且删除表2中的相关行(两行),并在表2中插入新的一行。由于在判断的时候需要用到表2中新插入的行,所以得在循环中实时更新。

经查找:

该错误的原因为:数据库的主键设置为-自动编号

现在用MYS-QL,出现同样问题  


此主题相关图片如下:报错并发.jpg
按此在新窗口浏览图片



没看明白,不知道如何,请老师帮助,谢谢,保存和删除也会报错



 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/19 13:04:00 [显示全部帖子]

    dtb2.Columns.Remove("System_Sort_Temporary")
    dtb2.Columns.Remove("System_Filter_Temporary")
    dtb2.Columns.Remove("System_Filter_Unique")
这个三行代码,没看懂,老师帮说一下,谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/19 13:58:00 [显示全部帖子]

在测试,发现一个问题

在将新增的数据进行保存,2楼代码是正常,但对修改的数据进行保存,会报错违反并发的提示,修改的数据进行保存改用1楼,也是报同样的错,如何解决?谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/19 15:48:00 [显示全部帖子]

1、不要使用自增列, 好象一般主键都是自增列,还有数据库与窗口的表的交互,也会有
2、不要使用AcceptChanges,保存后重新从数据库获取数据绑定窗口表,
你说新增使用AcceptChanges,修改保存不要AcceptChanges?

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/19 16:25:00 [显示全部帖子]

我使用是MYSQL主键自增,  ID设为主键和外键,在窗口上录入时,看不到ID的编号,只有在关 窗口后,重新打开窗口或录入完下一个记录,上移,才看到ID的编号。
由于主键不为空,设定自增
问题一:这样比较不友好,如何解决?


 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/26 14:17:00 [显示全部帖子]

MYSQ-L表的字段取消主键自增,会报错,找不主键,加上主键自增,

此主题相关图片如下:mysql的字段问题.jpg
按此在新窗口浏览图片

第一次保存OK,再修改后出现“针对违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条

百度,看不懂,不知如何处理,请老师帮处理,谢谢
https://cloud.tencent.com/developer/article/1341821?areaSource=102001.15


https://bbs.csdn.net/topics/603673625
[此贴子已经被作者于2023/8/26 14:22:35编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/26 15:06:00 [显示全部帖子]

老师,

1.另外注意自增主键不能用作外键关联,字段ID设为主键和外键,没有做关联,关联是用采购单号

2.
我可能没表达清楚,重新表述一下
2.1
如果不使用自增主键,则必须手工给主键列赋值。会报错找不到字段
2.2
MYSQ-L表的字段ID设为主键和外键,不为空且自增,如11楼的图,

第一次保存OK,再修改后出现“针对违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条

百度,看不懂,不知如何处理,请老师帮处理,谢谢
https://cloud.tencent.com/developer/article/1341821?areaSource=102001.15


https://bbs.csdn.net/topics/603673625


 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/26 16:15:00 [显示全部帖子]

1、3、做外键就已经是关联了,这个关联是指数据库里的关联,不是指Foxtable的关联。去掉外键设置

此主题相关图片如下:mysql保存问题-2.jpg
按此在新窗口浏览图片


2.要在新增后,保存后,再修改保存,报错提示下面:

第一次保存OK,再修改后出现“针对违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条


关闭窗口后,重新打开窗口,修改后再保存,保存成功不报错,但这样会不友好,每新增,保存,修改,保存都要重新打开一次。


4.如何将窗口的表新增时,将主表的ID字段主键自增的数据和明细表的ID字段主键自增的数据,同步显示在窗口上的表?

此主题相关图片如下:mqsql保存问题-1.jpg
按此在新窗口浏览图片



 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/26 16:19:00 [显示全部帖子]

新增事件
Dim r As Row = Tables("采购登记窗口_Table1").addnew
r("采购日期") = Date.Today() 
r("审核") = "未审核"

Static Index As Integer = 99999
'r("采购登记窗口_Table1") = Format(Date.Today(), "yyMM") & "-" & Index
r("采购单号") = Format(Date.Today(), "yyMM") & "-" & Index
Index = Index - 1

Tables("采购登记窗口_Table2").Filter = "采购单号 = '" & r("采购单号") & "'" '

加载
Dim db = HySq-l.DataBaseFactory.CreateDatabase("myjc") '
Dim Sql = "selec-t * from cg;" '
Dim dt As system.data.DataTable = db.ExecuteDataSet(Sq-l).Tables(0)
dt.TableName = "cg"
Dim t As Table = e.Form.Controls("Table1").Table
t.datasource = dt.Copy
t.Cols("ID").Visible = True'
t.AllowEdit = True 


 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/8/26 16:29:00 [显示全部帖子]

你是说每次保存事件要加下面代码?
加载
Dim db = HySq-l.DataBaseFactory.CreateDatabase("myjc") '
Dim Sql = "selec-t * from cg;" '
Dim dt As system.data.DataTable = db.ExecuteDataSet(Sq-l).Tables(0)
dt.TableName = "cg"
Dim t As Table = e.Form.Controls("Table1").Table
t.datasource = dt.Copy
t.Cols("ID").Visible = True'
t.AllowEdit = True 

 回到顶部
总数 15 1 2 下一页