Foxtable(狐表)用户栏目专家坐堂 → _Identify”被约束为是唯一的


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

主题:_Identify”被约束为是唯一的

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


加好友 发短信
等级:一尾狐 帖子:405 积分:3572 威望:0 精华:0 注册:2014/1/8 17:12:00
_Identify”被约束为是唯一的  发帖心情 Post By:2017/3/16 8:36:00 [只看该作者]

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2015.12.22.1
错误所在事件:
详细错误信息:
列“_Identify”被约束为是唯一的。值“42422”已存在。

sql数据,增加行时提示如上。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2017/3/16 8:43:00 [只看该作者]

你用什么代码增加行的啊

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/16 9:53:00 [只看该作者]

 频繁的新增和删除,有可能出现这种问题。注意你写的代码,改变操作的思路。

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


加好友 发短信
等级:一尾狐 帖子:405 积分:3572 威望:0 精华:0 注册:2014/1/8 17:12:00
  发帖心情 Post By:2017/3/16 10:35:00 [只看该作者]

If Forms("产品编辑1").Opened() Then
    For Each r1 As Row In  Tables("工序库维护选择_Table1").GetCheckedRows
        If r1("配色") < 2  Then
                    Dim r2 As Row = Tables("产品编辑1_Table4").AddNew
                    r2("组件名称") = r1("部件名称")
                    r2("产品工序规格") = r1("产品工序规格")
                   
                    cmd2.commandText = "S elect * From {工序表} where  工序编号 = '" & r1("工序编码") & "'"
                    dt2 = cmd2.ExecuteReader(True)
                    Dim cmd1 As New SQLCommand
                  S elect * From {工序表新} where  工序编号 = '" & r1("工序编码") & "'"
                    dt1 = cmd1.ExecuteReader(True)
                    If dt1.DataRows.Count = 0 Then
                        Dim r As DataRow = dt1.addnew
                        r("工序编号") = dt2.DataRows(0) ("工序编号")
                        r("工序名称") = dt2.DataRows(0)("工序名称")
                        r("工序规格") = dt2.DataRows(0)("工序规格")
                        r("工序说明") = dt2.DataRows(0)("工序说明")
                      
                        dt1.save
                    End If
                   
                    cmd.commandText = "Se lect * From {工序价格} where  厂内单价 = '" & r1("厂内单价") & "' and 修改定额 = '" & r1("修改定额") & "'   "
                    dt = cmd.ExecuteReader(True)
                    If dt.DataRows.Count = 0 Then
                       
                        rr("修改定额") = dt2.DataRows(0)("修改定额")
                        rr("工段标准") = dt2.DataRows(0)("工段标准")
                        Dim cmd3 As New SQLCommand
                        Dim Key As Integer
                        cmd3.C
                        cmd3.commandText = "S elect [顺序号] From {编号} Where [前缀] = 'JG'"
                        Do
                            Key = cmd3.ExecuteScalar() '从后台获得顺序号
                            cmd3.commandText = "U pdate [编号] Set [顺序号] = " & (Key + 1) & " Where [顺序号] = " & Key & " And [前缀] = 'JG'"
                            If cmd3.ExecuteNonQuery() > 0 Then '更新顺序号
                                Exit Do '更新成功则退出循环
                            End If
                        Loop
                        rr("价格编号") = "JG" & Format(Key,"0000000000")
                        r2("价格编号") = "JG" & Format(Key,"0000000000")
                        dt.save
                    Else
                        r2("价格编号") = dt.DataRows(0)("价格编号")
                    End If
       
    e.Form.Close()
    Tables("产品编辑1_Table4").save()
   
End If

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/16 11:14:00 [只看该作者]

你把dt、dt1、dt2的save代码删除,看是否还报错。然后逐个打开,看是哪个datatable有问题。

 

尽量不要用你那种方式增加行。建议还是把表加载出来,可以不加载数据,但新增行,直接在对应的表新增,而不是在查询表新增。


 回到顶部