以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何只更新符合要求的行内容  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=34276)

--  作者:mutoucm2
--  发布时间:2013/6/4 12:14:00
--  如何只更新符合要求的行内容

请问各位大神 ,如何只更新符合要求的行内容

 

表例如表A中有车号 车主 电话号码

表B有车号 车主 电话号码

 

希望将B表的电话号码更新到表A的电话号码列 ,需要每次只更新A表中电话列为空的行,怎么实现这个按钮功能?


--  作者:mutoucm2
--  发布时间:2013/6/4 12:15:00
--  
补充:是根据表B中的车号找到这个车的电话  然后更新到 表A中这个车号的电话列
--  作者:狐狸爸爸
--  发布时间:2013/6/4 12:20:00
--  
两个表根据车号建立关联,用表达式引用,不是很方便吗?
--  作者:mutoucm2
--  发布时间:2013/6/4 12:36:00
--  
还有很多内容不相同的,表达式引用怎么写,能否写个例子
--  作者:lsy
--  发布时间:2013/6/4 12:39:00
--  

表B的DataColChanged

 

If e.DataCol.Name = "电话号码" Then
    Dim dr As DataRow = DataTables("表A").Find("车号 = \'" & e.DataRow("车号") & "\' And 电话号码 Is Null")
    If dr IsNot Nothing Then
        dr("电话号码") = e.DataRow("电话号码")
    End If
End If

 

按钮代码:

For Each r As Row In Tables("表A").Rows
    For Each r1 As Row In Tables("表B").Rows
        If r("车号") = r1("车号") AndAlso r("电话号码") = "" Then
            r("电话号码")  = r1("电话号码")
        End If
    Next
Next

[此贴子已经被作者于2013-6-4 12:49:59编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/6/4 12:41:00
--  

如果用按钮,也很简单,按钮的代码设置为:

 

For Each dr1 As DataRow In DataTables("表A").Datarows
    If dr1.Isnull("电话号码") Then \'如果电话号码为空
            Dim dr2 As DataRow = DataTables("表A").Find("车号 = \'" & dr1("车号") & "\'")
            If dr2 IsNot Nothing Then
                dr1("电话号码") = dr2("电话号码")
            End If
    End If
Next

[此贴子已经被作者于2013-6-4 12:41:54编辑过]