以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  多表内容的提取  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=86007)

--  作者:260964006
--  发布时间:2016/6/7 17:52:00
--  多表内容的提取

有价格表2015、价格表2016、价格表2014~~,这些表的结构完全一样。含零件图号、零件名称、车型、价格等。

现我需要一张汇总表:1、当上述表增加零件图号时,就把新零件图号增加到汇总表,但是不重复。2、通过零件图号导入零件名称、车型。3、不同列导入价格,即第一列的价格来源价格表2014,第一列的价格来源价格表2015,第一列的价格来源价格表2016.如果此图号仅在某一表有价格,那就此列有数据,其他列为空。

能否实现,谢谢


--  作者:狐狸爸爸
--  发布时间:2016/6/8 8:01:00
--  

第一个问题,参考:

http://www.foxtable.com/help/topics/2490.htm

 

第二个和第三个问题,参考:

http://www.foxtable.com/help/topics/1458.htm

 

先参考上述帮助解决,如果搞不定,可以上传例子。

 


--  作者:260964006
--  发布时间:2016/6/14 11:15:00
--  

 If e.Row("车型") IsNot "售后"  Then
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

  增加功能已经具有了,但是还有判断没有实现:

 1、“车型”不是“售后”才执行此程序。

2、汇总表来自多表零件图号一致时,仅增加一行。


--  作者:大红袍
--  发布时间:2016/6/14 12:25:00
--  
If e.DataRow("车型") <> "售后"  Then
    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
End If

--  作者:260964006
--  发布时间:2016/6/14 14:07:00
--  

2、汇总表来自多表零件图号相同时,仅增加一行不能实现。如图,我希望只显示一行的图号就可以了。


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

随便问句:怎么固定按某一列排序显示,每次登陆都变化为按序号去了。


--  作者:大红袍
--  发布时间:2016/6/14 14:18:00
--  
If e.DataRow("车型") <> "售后"  Then
    Select Case e.DataCol.name
        Case "零件图号"
            If e.newvalue > "" Then
                Dim dr As DataRow = DataTables("价格汇总表").Find("零件图号 = \'" & e.newValue & "\'")
                If dr Is Nothing Then
                    dr = DataTables("价格汇总表").AddNew()
                    dr("零件图号") = e.DataRow("零件图号")
                    dr("零件名称") = e.DataRow("零件名称")
                    dr("车型") = e.DataRow("车型")
                End If
            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
End If

--  作者:260964006
--  发布时间:2016/6/14 14:27:00
--  

 

上述程序使这些价格表2015、价格表2016、价格表2014~~,不能录入相同图号了。

目的是使这些非关系的价格表2015、价格表2016、价格表2014~~,主要信息汇总,汇总唯一性是零件图号。但不能限制原表的任何东西。


--  作者:大红袍
--  发布时间:2016/6/14 15:08:00
--  
 6楼代码,不会影响各个表录入任意数据的啊。
--  作者:260964006
--  发布时间:2016/6/14 16:43:00
--  

If e.DataCol.Name = "零件图号" Then
    Dim dr As DataRow
    dr = DataTables("价格表2015").Find("零件图号 = \'" &

e.DataRow("零件图号") & "\'" )
    If dr IsNot Nothing
        e.DataRow("年2015_A点_供应商简称")= dr("A点_供应商简称")
        e.DataRow("年2015_A点_含税单价")= dr("A点_含税单价_更新

后")
        e.DataRow("年2015_B点_供应商简称")= dr("B点_供应商简称")
        e.DataRow("年2015_B点_含税单价")= dr("B点_含税单价_更新

后")
    End If
End If
If e.DataCol.Name = "零件图号" Then
    Dim dr As DataRow
    dr = DataTables("价格表2016").Find("零件图号 = \'" &

e.DataRow("零件图号") & "\'" )
    If dr IsNot Nothing
        e.DataRow("年2016_A点_供应商简称")= dr("A点_供应商简称")
        e.DataRow("年2016_A点_含税单价")= dr("A点_含税单价_更新

后")
        e.DataRow("年2016_B点_供应商简称")= dr("B点_供应商简称")
        e.DataRow("年2016_B点_含税单价")= dr("B点_含税单价_更新

后")
    End If
End If

第二、第三个问题没有数据过来。而且希望是同步更新的那种。


--  作者:大红袍
--  发布时间:2016/6/14 16:55:00
--  

 拷贝6楼的代码,写到各个表(2014、2015、2016)的datacolchanged事件去