以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于表A从表B动态获取数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127791)

--  作者:工匠
--  发布时间:2018/11/22 10:17:00
--  [求助]关于表A从表B动态获取数据
老师好!
现在有个需求,请帮做个按钮代码,谢谢!
1.现在有2个不同数据源的2个结构基本一样的表A和表B(表A在“现”数据源,表B在“原”数据源,表A和表B都有一列“单号”列,“原”数据源表B是另外文员在不断的录入数据)
2.现在要实现:在窗口做个按钮“从表B取数据”,实现每点击一次按钮“从表B取数据”,先判断表A“单号”列的(单号数据)如果在表B的“单号”列里是否存在,如果没有,就把表B“单号”列里的(单号数据)复制新增到表A“单号”列。(就是表A单号列数据要和表B“单号”列数据一样,但是都不能重复)
3.数据库是SQL数据库,表A和表B都都没有完全加载所有数据的
万分感谢!

--  作者:有点甜
--  发布时间:2018/11/22 10:21:00
--  

参考

 

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

 

 


--  作者:工匠
--  发布时间:2018/11/22 13:35:00
--  
谢谢有点甜老师,早上问题根据帮助已经实现一半需求了,请麻烦再帮在现基础上做个优化:过滤条件后才复制新增:1.日期:从2018-01-01 00:00 开始的数据  2.状态为“未完成” 的数据,3.单号不重复的数据,万分感谢!
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim sCols() As String = {"单号", "名称", "数量", "日期",“状态”}
Dim dCols() As String = {"单号", "名称", "订单数量", "日期", “状态”}
cmd.C 
cmd.CommandText = "SELECT * Fr om {表B}"
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.DataRows
    Dim nr As DataRow = DataTables("表A").AddNew()
    For i As Integer =0 To sCols.Length -1
        nr(dCols(i)) = dr(sCols(i))
    Next
Next
[此贴子已经被作者于2018/11/22 15:11:52编辑过]

--  作者:有点甜
--  发布时间:2018/11/22 16:31:00
--  
Dim dhs As String = DataTables("表A").sqlGetComboListString("单号").replace("|", "\',\'")
cmd.CommandText = "SELECT * From {表B} as a where 日期 > #2018-01-01# and 状态=\'未完成\' and 单号 not in (\'" & dhs & "\')"
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.DataRows
    Dim nr As DataRow = DataTables("表A").AddNew()
    For i As Integer =0 To sCols.Length -1
        nr(dCols(i)) = dr(sCols(i))
    Next
Next