以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  多值字段值拆分提示不能在具有唯一索引“guid”的对象“dbo.台账”中插入重复键行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=184118)

--  作者:cnsjroom
--  发布时间:2022/11/24 10:06:00
--  多值字段值拆分提示不能在具有唯一索引“guid”的对象“dbo.台账”中插入重复键行

单位 是多值字段  在进行拆分的时候   会将传入的guid也进行新增进去  然后将对应的多值行数据拆分成多行数据

当单位为:1,2  传入的guid为14d8c13a-6197-41ee-b333-4170fb5e43fd时

 

运行提示:【如何修正呢?】

错误的事件名称
System.Data.OleDb.OleDbException (0x80040E2F): 语句已终止。
不能在具有唯一索引“guid”的对象“dbo.台账”中插入重复键行。重复键值为 (14d8c13a-6197-41ee-b333-4170fb5e43fd)。
   在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   在 System.Data.Common.DbDataAdapter.UpdateRowExecute(RowUpdatedEventArgs rowUpdatedEvent, IDbCommand dataCommand, StatementType cmdIndex)
   在 System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
2022-11-24 10:00:34
错误的事件名称
System.Data.OleDb.OleDbException (0x80040E2F): 语句已终止。
不能在具有唯一索引“guid”的对象“dbo.台账”中插入重复键行。重复键值为 (14d8c13a-6197-41ee-b333-4170fb5e43fd)。
   在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   在 System.Data.Common.DbDataAdapter.UpdateRowExecute(RowUpdatedEventArgs rowUpdatedEvent, IDbCommand dataCommand, StatementType cmdIndex)
   在 System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
2022-11-24 10:00:34
14d8c13a-6197-41ee-b333-4170fb5e43fd

 

 

前端代码:

 $.post("form654_save1.Ajax", {
        责任单位: e.form.责任单位.value,
        guid: e.form.guid,

       },
       function(res) {
       })

 

 

后端代码:

Public Sub form654_save1_Ajax(rq as Request)
Dim e As RequestEventArgs = rq.e
Dim cmd As SQ LCo mmand = rq.cmd
msg(e.Values("guid"))   可以弹出值
Dim str As string =  e.Values("单位")
Dim drs As List(of DataRow) =DataTables("台账").SQ LS elect("单位=\'"  & str & "\' and guid=\'" & e.Values("guid") & "\'")   \'可以找到对应样本数据
For Each s As String In str.split(",")    \'对传入的值进行拆分
    Dim dr1 As DataRow = DataTables("台账").AddNew
    For Each dc As DataCol In DataTables("台账").DataCols
        For Each dr As DataRow In drs
            dr1("guid")=guid.newguid.tostring()
            dr1(dc.Name) = dr(dc.Name)
            dr1("单位")=s
            dr1.save
        Next
    Next
Next
 e.WriteString("")
End Sub


--  作者:有点蓝
--  发布时间:2022/11/24 10:31:00
--  
For Each s As String In str.split(",")    \'对传入的值进行拆分
        For Each dr As DataRow In drs
    Dim dr1 As DataRow = DataTables("台账").AddNew
            dr1("guid")=guid.newguid.tostring()
            dr1("单位")=s
    For Each dc As DataCol In DataTables("台账").DataCols
            dr1(dc.Name) = dr(dc.Name)
    Next
        Next
Next
DataTables("台账").save

--  作者:cnsjroom
--  发布时间:2022/11/24 11:25:00
--  回复:(有点蓝)For Each s As String In str.split(...

 Dim e As RequestEventArgs = rq.e
 Dim cmd As SQLCommand = rq.cmd
 msg(e.Values("guid"))
 Dim str As string =  e.Values("单位")
 Dim drs As List(of DataRow) =DataTables("台账").SQL Se lect("单位=\'"  & str & "\' and guid=\'" & e.Values("guid") & "\'")   \'可以找到对应样本数据
 For Each s As String In str.split(",")    \'对传入的值进行拆分
        For Each dr As DataRow In drs
            Dim dr1 As DataRow = DataTables("台账").AddNew
            dr1("guid")=guid.newguid.tostring()
            dr1("单位")=s
                For Each dc As DataCol In DataTables("台账").DataCols
                dr1(dc.Name) = dr(dc.Name)
                dr1("审核状态")="待审核"
                dr1("接收状态")="待接收"
                dr1("办理状态")="待办理"
                Next
        Next

Next

 

老师这样  没有实现拆分了  还得继续麻烦老师


--  作者:有点蓝
--  发布时间:2022/11/24 12:08:00
--  
没看懂。截图说明一下业务逻辑