以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请老师帮忙:DataColChanged先保存再自动更新的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=76381)

--  作者:xianzheng
--  发布时间:2015/10/28 1:05:00
--  请老师帮忙:DataColChanged先保存再自动更新的问题
老师,在DataColChanged,当前表(“基本资料”)发生变化时,"资料明细"表数据自动更新;我想改为当前表(“基本资料”)保存后"资料明细"表再数据自动更新,下面的代码如何改?
Select Case e.DataCol.name
    Case "简称"
        Dim dr As DataRow = DataTables("资料明细").Find("简称 = \'" & e.OldValue & "\'")
        If dr Is Nothing Then
            dr = DataTables("资料明细").AddNew()
            dr("简称") = e.DataRow("简称")
            dr("中文简称") = e.DataRow("中文简称")
            dr("区域") = e.DataRow("区域")
            dr("名称") = e.DataRow("名称")
            dr("纳税人类型") = e.DataRow("纳税人类型")
            dr("行业类型") = e.DataRow("行业类型")
            dr("所得税类型") = e.DataRow("所得税类型")
            dr("中文简称") = e.DataRow("中文简称")
        Else
            dr("简称") = e.DataRow("简称")
        End If
    Case "区域","名称","纳税人类型","行业类型","所得税类型","中文简称"
        Dim dr As DataRow = DataTables("资料明细").Find("简称 = \'" & e.DataRow("简称") & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select


--  作者:Hyphen
--  发布时间:2015/10/28 8:44:00
--  
在DataColChanged事件中记录所有被修改的行,然后在保存按钮事件中,根据所有被修改的行更改明细表的数据
--  作者:狐狸爸爸
--  发布时间:2015/10/28 9:05:00
--  
其实现在这样最好啊,虽然更新了,但直道你保存,这些更新才会生效,有什么不对吗?
--  作者:大红袍
--  发布时间:2015/10/28 9:10:00
--  

在代码里加一句保存的代码不就行了?

 

e.DataRow.Save


--  作者:xianzheng
--  发布时间:2015/10/28 9:21:00
--  
老师,我这些代码就是在DataColChanged事件中的,出现最大问题是我在录当前表(基本资料)时,有时发现某个单元格录错了但没有保存之前先删除错的重新录,然后把正确的保存,发现“资料明细”表(自动的)把错的自动保存一行错的,正确的保存一行,要解决的问题是错的信息不应自动保存
--  作者:xianzheng
--  发布时间:2015/10/28 9:29:00
--  
我想这样做但错的
If e.DataRow.Save=True Then
Select Case e.DataCol.name
    Case "简称"
        Dim dr As DataRow = DataTables("资料明细").Find("简称 = \'" & e.OldValue & "\'")
        If dr Is Nothing Then
            dr = DataTables("资料明细").AddNew()
            dr("简称") = e.DataRow("简称")
            dr("中文简称") = e.DataRow("中文简称")
            dr("区域") = e.DataRow("区域")
            dr("名称") = e.DataRow("名称")
            dr("纳税人类型") = e.DataRow("纳税人类型")
            dr("行业类型") = e.DataRow("行业类型")
            dr("所得税类型") = e.DataRow("所得税类型")
            dr("中文简称") = e.DataRow("中文简称")
        Else
            dr("简称") = e.DataRow("简称")
        End If
    Case "区域","名称","纳税人类型","行业类型","所得税类型","中文简称"
        Dim dr As DataRow = DataTables("资料明细").Find("简称 = \'" & e.DataRow("简称") & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select
end if

--  作者:大红袍
--  发布时间:2015/10/28 9:30:00
--  

直接写

 

e.DataRow.Save


--  作者:xianzheng
--  发布时间:2015/10/28 9:33:00
--  
是放在最后吗
--  作者:大红袍
--  发布时间:2015/10/28 9:34:00
--  

最前面,单独写


--  作者:xianzheng
--  发布时间:2015/10/28 9:39:00
--  
可以了,有老师指点真好!谢谢!