以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  引用与同步数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=31790)

--  作者:7032175
--  发布时间:2013/4/20 15:59:00
--  引用与同步数据
由于不敢贸然升级,所以先详细的说一下,看看能不能解决。

二个表:表A  表B 

表A里面有四个列,第一列,第二列,第三列,数据列。(表A是主表,数据列的内容会随时变化)
表B里面有四个列,第一列,第二列,第三列,数据列 。

在表B里面输入符合相同的,第一列,第二列,第三列内容而后自动引用表A的数据列的内容到表B数据列里面,
但是表A里面的数据列会随时变化,那么如何实现表A里面的数据变化后同,表B里面符合相同内容的列的数据列也一起变化。

如下是符合内容的引用代码,但是如何实现表A里面的数据变化,表B也一起变化,就不会了,请狐爸爸帮看一下。
If e.DataCol.Name = "第一列" Or e.DataCol.Name="第二列" Or e.DataCol.Name="第三列"  Then 
    If e.DataRow.IsNull(" 第一列 ") Then 
        e.DataRow(" 第二列 ") = Nothing
        e.DataRow(" 第三列 ") = Nothing
    Else
        Dim dr As DataRow
        dr=DataTables("表A").Find(" 第一列  =\'" & e.DataRow(" 第一列 ") & "\'And  第二列  =\'" & e.DataRow(" 第二列 ") & "\'And 砖号 =\'" & e.DataRow("第三列 ") & "\'")
        If dr IsNot Nothing Then
            e.DataRow(" 数据列 ") = dr(" 数据列 ")
           
        End If
    End If
End If

--  作者:XYT
--  发布时间:2013/4/20 16:07:00
--  

DataColChanged事件代码设置为:

 

Select Case e.DataCol.name
    Case "工厂","工段","日期"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("工厂") = False AndAlso dr.IsNull("工段") = False AndAlso dr.IsNull("日期") =False Then
            Dim pr As DataRow = DataTables("工资标准").Find("分厂 = \'" & dr("工厂") & "\' and 工段  = \'" & dr("工段") & "\' And 执行日期 <= #" & dr("日期") & "#", "执行日期 Desc")
            If pr IsNot Nothing Then
                dr("工资标准")  = pr("工资标准")    
            End If
        End If
End Select

 

参考下


--  作者:Bin
--  发布时间:2013/4/20 16:07:00
--  
表A DataCloChanged事件中
if e.dataCol.Name="数据列" then
 datatables("表B").find(" 第一列  =\'" & e.DataRow(" 第一列 ") & "\'And  第二列  =\'" & e.DataRow(" 第二列 ") & "\'And 砖号 =\'" & e.DataRow("第三列 ") & "\'")("数据列")=e.NewValue
end if

--  作者:7032175
--  发布时间:2013/4/21 15:52:00
--  
我采用的是这段代码,但是有一个问题,如果表B 里面没有符合表A的条件列,在表A里面编辑的时候就会报错,要如何改这段代码,不会报错。
if e.dataCol.Name="数据列" then
 datatables("表B").find(" 第一列  =\'" & e.DataRow(" 第一列 ") & "\'And  第二列  =\'" & e.DataRow(" 第二列 ") & "\'And 砖号 =\'" & e.DataRow("第三列 ") & "\'")("数据列")=e.NewValue
end if

--  作者:狐狸爸爸
--  发布时间:2013/4/22 9:47:00
--  

写代码要规范:

 

If e.DataCol.Name="数据列" Then
    Dim dr As DataRow = DataTables("表B").find(" 第一列  =\'" & e.DataRow(" 第一列 ") & "\'And  第二列  =\'" & e.DataRow(" 第二列 ") & "\'And 砖号 =\'" & e.DataRow("第三列 ") & "\'")
    If dr IsNot Nothing Then
        dr("数据列")=e.NewValue
    End If
End If