以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]错误提示  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=81469)

--  作者:zcgmxf
--  发布时间:2016/2/28 17:14:00
--  [求助]错误提示
老师,用逻辑列自动复制数据,以前没问题,现在出现以下错误提示,代码写在表B中,表A是父表,表B是子表。代码执行后表A新增了行,但是是空行。请分析一下原因。谢谢!

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2015.12.22.1
错误所在事件:表,门诊疫苗药品入库表,DataColChanged
详细错误信息:
调用的目标发生了异常。
此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据

If e.DataCol.Name = "确认入库" Then
    If e.DataRow("确认入库") = True Then
        Dim nma() As String = {"药品名称","药品生产厂家","药品批号","药品有效期","种类","规格","单价","剂型","单位","销售单价","确认入库"}  
        Dim nmb() As String = {"药品名称","药品生产厂家","药品批号","药品有效期","种类","规格","单价","剂型","单位","销售_单价","确认入库"} 
        Dim dh As  DataRow = DataTables("表A").SQLFind("[药品名称] = \'" & e.DataRow("药品名称") & "\'and [药品生产厂家] = \'" & e.DataRow("药品生产厂家")  & "\' And [种类] = \'" & e.DataRow("种类") & "\' And [规格] = \'" & e.DataRow("规格") & "\' and [剂型] = \'" & e.DataRow("剂型") & "\'and [单价] = \'" & e.DataRow("单价") & "\'and [销售_单价] = \'" & e.DataRow("销售单价") & "\' and [单位] = \'" & e.DataRow("单位") & "\'and [药品批号] = \'" & e.DataRow("药品批号") & "\'and [药品有效期] = \'" & e.DataRow("药品有效期") & "\'")
        If dh Is Nothing Then
            dh = DataTables("表A").AddNew()
        Else
            e.Cancel = True
        End If
        For i As Integer = 0 To nma.Length - 1
            dh(nmb(i)) = e.DataRow(nma(i))
        Next
        dh.save()
    End If
End If
[此贴子已经被作者于2016/2/28 17:15:48编辑过]

--  作者:大红袍
--  发布时间:2016/2/28 17:18:00
--  
应该是你赋值的时候报错的吧?触发了其他的datacolchanged事件。
--  作者:大红袍
--  发布时间:2016/2/28 17:18:00
--  

或者试试

 

systemready = False
For i As Integer = 0 To nma.Length - 1
    dh(nmb(i)) = e.DataRow(nma(i))
Next
systemready = True


--  作者:zcgmxf
--  发布时间:2016/2/28 17:19:00
--  
就是在表B中勾选逻辑列“确认入库”时出现的
--  作者:大红袍
--  发布时间:2016/2/28 17:20:00
--  
这种情况,加入msgbox定位一下错误啊
--  作者:zcgmxf
--  发布时间:2016/2/28 17:25:00
--  
systemready = False
For i As Integer = 0 To nma.Length - 1
    dh(nmb(i)) = e.DataRow(nma(i))
Next
systemready = True

还是不行
定位看看

--  作者:大红袍
--  发布时间:2016/2/28 17:29:00
--  
定位看哪句代码出错。
--  作者:zcgmxf
--  发布时间:2016/2/28 18:15:00
--  
红袍老师,都执行了。其它datacolchanged事件中没有移除该表的代码啊。应该是新增行新增后先被移除了,执行数据复制代码没有找到该行
--  作者:大红袍
--  发布时间:2016/2/28 19:33:00
--  
执行到哪句代码报错?
--  作者:zcgmxf
--  发布时间:2016/2/28 21:34:00
--  
红袍老师,那段代码没问题。在表A的BeforeAddDataRow事件中加入了以下代码,删除后就没问题了。为什么保存后就不能复制数据了呢?
For Each dt As DataTable In DataTables
    dt.Save()
Next