以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  跨表填充  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=119290)

--  作者:jamhuton
--  发布时间:2018/5/22 10:31:00
--  跨表填充

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

把上图的箭头列的列名填入下图的同一列,对应的上图的数据也填入另外一列。


图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看

请老师帮忙,谢谢。

Dim f As New Filler
f.SourceTable = DataTables("帐单汇总") \'指定数据来源
f.SourceCols = "商家名称,月份,开票日期" \'指定数据来源列
f.DataTable = DataTables("往来帐") \'指定数据接收表
f.DataCols = "商家名称,摘要,日期" \'指定数据接收列
f.ExcludeExistValue = True
f.ExcludeNullValue = True
f.Distinct = True
f.Fill() \'填充数据



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

参考

 

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

 


--  作者:jamhuton
--  发布时间:2018/5/22 12:34:00
--  
Dim kms() As String = {"A","B","C","D","E","F"}
For Each dr1 As DataRow In DataTables("国内物流").DataRows
    For Each km As String In kms
        Dim dr2 As DataRow = DataTables("应付汇总").AddNew()
        dr2("业务类型") = dr1("业务类型")
        dr2("月份") = dr1("月份")
        dr2("业务量") = dr1("业务量")
        dr2("商家名称") = km
        dr2("金额") = dr1(km)
    Next
Next
l老师,这段代码如何避免被填充表出现重复行


--  作者:有点甜
--  发布时间:2018/5/22 15:26:00
--  
Dim kms() As String = {"A","B","C","D","E","F"}
For Each dr1 As DataRow In DataTables("国内物流").DataRows
    For Each km As String In kms
        Dim dr2 As DataRow = DataTables("应付汇总").find("业务类型=\'" & dr1("业务类型") & "\' and 月份=\'" & dr1("月份") & "\' and 业务量=\'" & dr1("业务量") & "\' and 商家名称=\'" & km & "\'")
        If dr2 Is Nothing Then dr2 = DataTables("应付汇总").addnew
        dr2("业务类型") = dr1("业务类型")
        dr2("月份") = dr1("月份")
        dr2("业务量") = dr1("业务量")
        dr2("商家名称") = km
        dr2("金额") = dr1(km)
    Next
Next

--  作者:jamhuton
--  发布时间:2018/5/22 16:03:00
--  
 dr2("金额") = dr1(km)

金额=0的不增加行

是不是改成下面
Dim dr2 As DataRow = DataTables("应付汇总").find("业务类型=\'" & dr1("业务类型") & "\' and 月份=\'" & dr1("月份") & "\' and 业务量=\'" & dr1("业务量") & "\' and 商家名称=\'" & km & "\' and 金额 > \'0\'")

--  作者:有点甜
--  发布时间:2018/5/22 16:44:00
--  

Dim kms() As String = {"A","B","C","D","E","F"}
For Each dr1 As DataRow In DataTables("国内物流").DataRows
    For Each km As String In kms       
        If dr1(km) > 0 Then
            Dim dr2 As DataRow = DataTables("应付汇总").find("业务类型=\'" & dr1("业务类型") & "\' and 月份=\'" & dr1("月份") & "\' and 业务量=\'" & dr1("业务量") & "\' and 商家名称=\'" & km & "\'")
            If dr2 Is Nothing Then dr2 = DataTables("应付汇总").addnew
            dr2("业务类型") = dr1("业务类型")
            dr2("月份") = dr1("月份")
            dr2("业务量") = dr1("业务量")
            dr2("商家名称") = km
            dr2("金额") = dr1(km)           
        End If
    Next
Next


--  作者:jamhuton
--  发布时间:2018/5/23 13:43:00
--  
dr2("金额") = dr1(km)    
还有一个问题,按照这样做之后,上面这金额有变化,又增加了一行,比如之前是555的,后面更改数据666后,油会增加一行,而不是把555改成666.


--  作者:有点甜
--  发布时间:2018/5/23 14:22:00
--  
以下是引用jamhuton在2018/5/23 13:43:00的发言:
dr2("金额") = dr1(km)    
还有一个问题,按照这样做之后,上面这金额有变化,又增加了一行,比如之前是555的,后面更改数据666后,油会增加一行,而不是把555改成666.

 

其余列有没有变化?如果其余列没有变化,是不会重复添加行的。

 

如果还有问题,上传一个项目测试。


--  作者:jamhuton
--  发布时间:2018/5/23 14:48:00
--  

Dim kms() As String = {"A","B","C","D","E","F"}
For Each dr1 As DataRow In DataTables("国内物流").DataRows
    For Each km As String In kms        
        If dr1(km) > 0 Then
            Dim dr2 As DataRow = DataTables("应付汇总").find("业务类型=\'" & dr1("业务类型") & "\' and 月份=\'" & dr1("月份") & "\' and 业务量=\'" & dr1("业务量") & "\' ")
            If dr2 Is Nothing Then dr2 = DataTables("应付汇总").addnew
            dr2("业务类型") = dr1("业务类型")
            dr2("月份") = dr1("月份")
            dr2("业务量") = dr1("业务量")
            dr2("商家名称") = km
            dr2("金额") = dr1(km)            
        End If
    Next
Next


把下面红色的部分删除了貌似没问题了

 Dim dr2 As DataRow = DataTables("应付汇总").find("业务类型=\'" & dr1("业务类型") & "\' and 月份=\'" & dr1("月份") & "\' and 业务量=\'" & dr1("业务量") & "\' and 商家名称=\'" & km & "\'")


--  作者:有点甜
--  发布时间:2018/5/23 14:50:00
--  
回复9楼,如果你不需要【商家名称】作判断,那就可以删掉。否则,你要加上的。