以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]从水平表到垂直表 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=134241) |
||||
-- 作者:工匠 -- 发布时间:2019/4/30 16:51:00 -- [求助]从水平表到垂直表 老师好 请帮看看,这种水平数据表,如何根据选中表A的行(一行或多行),在窗口点击“从表B继承到表D(横向变为纵向)”按钮时,将表D数据表里符合等于表A那些被选择的行内容(编码/品名/规格/备注)进行按需求写到表D数据表,谢谢! 补充:如果表NOXX列对应行值是空白的,则该行对应列则不继承到表D
谢谢!
[此贴子已经被作者于2019/4/30 17:13:56编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2019/4/30 17:18:00 -- Dim t As Table = Tables("表A") |
||||
-- 作者:工匠 -- 发布时间:2019/4/30 17:44:00 -- 谢谢甜老师,现在可以按需求从表B继承,请帮再优化下 1.如果表B的: NO01-NO10含后续新增列对应行列是空白的单元格列,这列N0XX就不写入到表D(后续表B可能会随时增加列,会造成表D有太多不需要的行) 2.现在选择表A行,点击“从表B继承到表D(横向变为纵向)”,如果点了多次,会重复从表B写入,需要只写入不重复的(判断要求:1.选择的表A行 编码/品名/规格/备注 4个条件从表B里查找比较,并结合表D同时满足 编码/品名/规格/备注 4个条件+表B里同 编码/品名/规格/备注 4个条件行对应的NOXX列(NOXX列为 NO01-NO10含后续新增加列)不为空值)的行 万分感谢! |
||||
-- 作者:有点甜 -- 发布时间:2019/4/30 17:53:00 -- Dim t As Table = Tables("表A") For i As Integer = t.TopPosition To t.BottomPosition Dim dr1 As Row = t.Rows(i) Dim dr2 As DataRow = DataTables("表B").Find("编码 = \'" & dr1("编码") & "\' and 品名 = \'" & dr1("品名") & "\' and 规格 = \'" & dr1("规格") & "\' and 备注 = \'" & dr1("备注") & "\'") If dr2 IsNot Nothing Then For Each c As Col In Tables("表b").Cols If c.name.StartsWith("NO") AndAlso dr2.IsNull(c.name) = False Then Dim nr As DataRow = DataTables("表D").find("编码 = \'" & dr1("编码") & "\' and 品名 = \'" & dr1("品名") & "\' and 规格 = \'" & dr1("规格") & "\' and 备注 = \'" & dr1("备注") & "\' and nox = \'" & c.name & "\'") If nr Is Nothing Then nr = DataTables("表D").addnew nr("编码") = dr2("编码") nr("品名") = dr2("品名") nr("规格") = dr2("规格") nr("备注") = dr2("备注") nr("nox") = c.name nr("no") = dr2(c.name) End If Next End If Next |
||||
-- 作者:工匠 -- 发布时间:2019/5/5 23:41:00 -- 谢谢老师! |