Foxtable(狐表)用户栏目专家坐堂 → 引用与同步数据


  共有6181人关注过本帖树形打印复制链接

主题:引用与同步数据

帅哥哟,离线,有人找我吗?
7032175
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:383 积分:2757 威望:0 精华:0 注册:2011/9/1 14:26:00
引用与同步数据  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1418 积分:7167 威望:0 精华:0 注册:2013/3/18 8:37:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:383 积分:2757 威望:0 精华:0 注册:2011/9/1 14:26:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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


 回到顶部