以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]编号跨表更新,没有要访问的 Original 数据。  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=94282)

--  作者:yancheng
--  发布时间:2016/12/20 15:55:00
--  [求助]编号跨表更新,没有要访问的 Original 数据。
Sel ect Case e.DataCol.Name
    Case "项目编号"
        If e.DataRow.IsNull(e.DataCol.name) =False AndAlso e.DataRow.OriginalValue("项目编号") <> Nothing  Then
            Dim nm() As String = {"施工合同"}
            For Each n As String In nm
                If DataTables.Contains(n) =False Then
                    DataTables(n).load
                End If
                DataTables(n).sqlReplaceFor("项目编号",e.DataRow("项目编号"),"项目编号 = \'" & e.DataRow.OriginalValue("项目编号") & "\'")
                DataTables(n).save
            Next
        Else
            MessageBox.Show("""项目编号""为空,请输入新的值.","提示!",MessageBoxButtons.OK,MessageBoxIcon.Warning)
            e.Cancel = True
        End If
    Case "项目名称"
        If e.DataRow.IsNull(e.DataCol.name) =False And e.DataRow.OriginalIsNull("项目名称") =False  Then
            Dim nm() As String = {"施工合同"}
            For Each n As String In nm
                DataTables(n).sqlReplaceFor("项目名称",e.DataRow("项目名称"),"项目编号 = \'" & e.DataRow("项目编号") & "\'")
                DataTables(n).save
            Next
        End If
End Se lect

--  作者:有点色
--  发布时间:2016/12/20 16:01:00
--  
 这段代码不应该报错的。做个实例看看。
--  作者:yancheng
--  发布时间:2016/12/20 16:23:00
--  
是这样的,这个代码写在:DataColChanged里面的。

提醒错误是,在窗口,保存旧行,再新增加行,时提示错误。

--  作者:yancheng
--  发布时间:2016/12/20 16:27:00
--  
我现在其实疑问在,一个新增加行的编号。单元格。它的原始值 肯定为空。关键能不能用:.Original来访问它?
--  作者:有点色
--  发布时间:2016/12/20 16:30:00
--  
以下是引用yancheng在2016/12/20 16:27:00的发言:
我现在其实疑问在,一个新增加行的编号。单元格。它的原始值 肯定为空。关键能不能用:.Original来访问它?

 

我测试,没问题。

 

你也可以直接判断是不是新增的行,用rowstate属性获取,新增的行没必要去获取值。