以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]两表之间数据的同步问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=114488)

--  作者:liuwei2182
--  发布时间:2018/2/7 15:24:00
--  [求助]两表之间数据的同步问题
表a的1列、2列、3列,同步到表b的4列、5列、6列,用下面的代码,应该怎么改?大师帮忙

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("产品规格")
        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

--  作者:有点甜
--  发布时间:2018/2/7 15:30:00
--  
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("5") = e.DataRow("1")
            dr("6") = e.DataRow("2")
        Else
            dr("产品编号") = e.DataRow("产品编号")
        End If
    Case "1","2"
        Dim dr As DataRow = DataTables("库存").Find("产品编号 = \'" & e.DataRow("产品编号") & "\'")
        If dr IsNot Nothing Then
            dr("5") = e.DataRow("1")
            dr("6") = e.DataRow("2")

        End If
End Select

--  作者:liuwei2182
--  发布时间:2018/2/7 15:31:00
--  
其他的汉字怎么办?


--  作者:有点甜
--  发布时间:2018/2/7 15:32:00
--  
 你两个表,必须根据编号列进行对比,你两个表都要有一个编号列。
--  作者:liuwei2182
--  发布时间:2018/2/7 15:34:00
--  
以下是引用有点甜在2018/2/7 15:30:00的发言:
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("5") = e.DataRow("1")
            dr("6") = e.DataRow("2")
        Else
            dr("产品编号") = e.DataRow("产品编号")
        End If
    Case "1","2"
        Dim dr As DataRow = DataTables("库存").Find("产品编号 = \'" & e.DataRow("产品编号") & "\'")
        If dr IsNot Nothing Then
            dr("5") = e.DataRow("1")
            dr("6") = e.DataRow("2")

        End If
End Select
3,4列怎么办呢



--  作者:有点甜
--  发布时间:2018/2/7 15:35:00
--  

看懂代码,要多少列,那就复制拷贝多少行。

 

初学者,把视频教程看一下 http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=67187

 


--  作者:liuwei2182
--  发布时间:2018/2/7 15:44:00
--  
OK了,谢谢,有点甜,除了这种方法,还有什么同步数据的方法吗?


--  作者:有点甜
--  发布时间:2018/2/7 15:53:00
--  
以下是引用liuwei2182在2018/2/7 15:44:00的发言:
OK了,谢谢,有点甜,除了这种方法,还有什么同步数据的方法吗?

 

如果要实时同步,必须用2楼的方法。

 

如果是父子表的情况,你可以直接引用父表数据

 

http://www.foxtable.com/webhelp/scr/0091.htm

 

http://www.foxtable.com/webhelp/scr/0106.htm

 


--  作者:liuwei2182
--  发布时间:2018/2/7 15:54:00
--  
我两个表中用日期列做 对比列,结果有的日期出现下列报错


.NET Framework 版本:2.0.50727.8766
Foxtable 版本:2017.12.31.1
错误所在事件:表,晋东公司生产日报,DataColChanged
详细错误信息:
调用的目标发生了异常。
无法在 System.DateTime 和 System.String 上执行“=”操作。

--  作者:有点甜
--  发布时间:2018/2/7 15:56:00
--  

Dim dr As DataRow = DataTables("库存").Find("产品编号 = \'" & e.DataRow("产品编号") & "\'")

 

改成

 

Dim dr As DataRow = DataTables("库存").Find("产品编号 = #" & e.DataRow("产品编号") & "#")