以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]窗口按钮跨表多列转行提取数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=144827) |
||||
-- 作者:lds -- 发布时间:2019/12/31 -- [求助]窗口按钮跨表多列转行提取数据
在学习中遇到了困难,窗口按钮多 此主题相关图片如下:列转行.png 列转行,根据商品信息表中多列门店中有数量的行,将该列的列名取后两位到分货单店名列,填充对应门店行的供应商,商品代码及数量信息。 |
||||
-- 作者:lds -- 发布时间:2019/12/31 9:02:00 -- Dim dtb As New DataTableBuilder("分货单1") dtb.AddDef("供应商代码", Gettype(String), 6) dtb.AddDef("商品代码", Gettype(String), 10) dtb.AddDef("店名", Gettype(String), 10) dtb.AddDef("数量", Gettype(String), 10) dtb.Build() Dim kms() As String = {"百一","白河","建设","长江","卧龙"} For Each dr1 As DataRow In DataTables("商品信息").DataRows For Each km As String In kms Dim dr2 As DataRow = DataTables("分货单1").AddNew() dr2("供应商代码") = dr1("供应商代码") dr2("商品代码") = dr1("商品代码") dr2("店名") = km dr2("数量") = dr1(km) Next Next MainTable = Tables("分货单1") 这是根据帮助文档改的,大概效果是这样,但这是生成的临时表,希望长久保存在分货单表,还有如何让生成的店名用数字代替。如:百一 = 0001 ,白河=0006,建设=0007
此主题相关图片如下:列转行.jpg |
||||
-- 作者:有点蓝 -- 发布时间:2019/12/31 9:08:00 -- For Each adr As DataRow In DataTables("商品信息").Select("商品代码 is not null") For Each adc As DataCol In DataTables("商品信息").DataCols If adc.Name.StartsWith("门店") AndAlso adr.IsNull(adc.Name) = False Then Dim dm As String = adc.Name.split("_")(1) Dim bdr As DataRow = DataTables("分货单").Find("商品代码=\'" & adr("商品代码") & "\' And 店名=\'" & dm & "\'") If bdr Is Nothing Then bdr = DataTables("分货单").AddNew() bdr("店名") = dm bdr("供应商") = adr("供应商代码") bdr("商品代码") = adr("商品代码") End If bdr("数量") = adr(adc.Name) End If Next Next
|
||||
-- 作者:lds -- 发布时间:2019/12/31 10:04:00 -- 谢谢蓝版帮助!如果我的表不是多行表头,把 ”门店-“去掉 门店-百一 改成百一,门店-建设改成 建设 变成单行表头要怎么取各门店列名 For Each adr As DataRow In DataTables("商品信息").Select("商品代码 is not null") For Each adc As DataCol In DataTables("商品信息").DataCols If adc.Name.StartsWith("门店") AndAlso adr.IsNull(adc.Name) = False Then Dim dm As String = adc.Name.split("_")(1) Dim bdr As DataRow = DataTables("分货单").Find("商品代码=\'" & adr("商品代码") & "\' And 店名=\'" & dm & "\'") If bdr Is Nothing Then bdr = DataTables("分货单").AddNew() bdr("店名") = dm bdr("供应商") = adr("供应商代码") bdr("商品代码") = adr("商品代码") End If bdr("数量") = adr(adc.Name) End If Next Next
|
||||
-- 作者:有点蓝 -- 发布时间:2019/12/31 10:10:00 -- 建议保留多层表头,比较方便判断 If adc.Name <> "商品代码" andalso adc.Name <> "商品名称" andalso adc.Name <> xxxx列 and ...... Then Dim dm As String = adc.Name
|
||||
-- 作者:lds -- 发布时间:2019/12/31 10:23:00 -- 收到,谢谢指教! |