Foxtable(狐表)用户栏目专家坐堂 → 多行多列的插入数据


  共有3022人关注过本帖树形打印复制链接

主题:多行多列的插入数据

帅哥哟,离线,有人找我吗?
bobolan521
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:632 积分:7217 威望:0 精华:1 注册:2013/11/26 7:49:00
多行多列的插入数据  发帖心情 Post By:2014/3/6 22:20:00 [只看该作者]

表A

       姓名    工序1    工序2    工序3    

       小王       1          0         3        

       小李       2          3         0        

       小红       0          4         5        

 

请问一下该用什么代码能将表A里大于0的记录读取写到表B里

表B

       姓名    工序    数量

       小王    工序1    1

       小王    工序3    3

       小李    工序1    2

       小李    工序2    3

       小红    工序2    4

       小红    工序3    5


 回到顶部
帅哥哟,离线,有人找我吗?
有点酸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1093 积分:6682 威望:0 精华:0 注册:2013/7/1 9:05:00
  发帖心情 Post By:2014/3/6 22:24:00 [只看该作者]

dim gsx() AS string = {"工序1","工序2","工序3"}

for each dr as datarow in datatables("表A").Datarows

     for each gx as string in gxs

           if dr(gx) > 0 then

               dim dr1 as datarow = datatables("表B").Addnew

               dr1("姓名") = dr("姓名")

               dr1("工序") = gx

               dr1("数量") = dr(gx)

          end if

     next

next


 回到顶部
帅哥哟,离线,有人找我吗?
bobolan521
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:632 积分:7217 威望:0 精华:1 注册:2013/11/26 7:49:00
  发帖心情 Post By:2014/3/6 22:34:00 [只看该作者]

好像不能运行

 回到顶部
帅哥哟,离线,有人找我吗?
有点酸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1093 积分:6682 威望:0 精华:0 注册:2013/7/1 9:05:00
  发帖心情 Post By:2014/3/6 22:38:00 [只看该作者]

Dim gsx() As String = {"工序1","工序2","工序3"}
For Each dr As DataRow In DataTables("表A").Datarows
    For Each gx As String In gsx
        If dr(gx) > 0 Then
            Dim dr1 As DataRow = DataTables("表B").Addnew
            dr1("姓名") = dr("姓名")
            dr1("工序") = gx
            dr1("数量") = dr(gx)
        End If
    Next
Next

 

再不行的话,就自己设计好表A和表B,输入数据发上来,方便别人测试。


 回到顶部
帅哥哟,离线,有人找我吗?
bobolan521
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:632 积分:7217 威望:0 精华:1 注册:2013/11/26 7:49:00
  发帖心情 Post By:2014/3/6 22:45:00 [只看该作者]

你好麻烦你再帮我看一下,如果根据表B 生成表A呢

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar

[此贴子已经被作者于2014-3-6 22:53:08编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
bobolan521
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:632 积分:7217 威望:0 精华:1 注册:2013/11/26 7:49:00
  发帖心情 Post By:2014/3/6 22:48:00 [只看该作者]

麻烦你再帮忙看一下,用什么代码能利用B表返回去生成A表呢

[此贴子已经被作者于2014-3-6 22:59:13编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
y2287958
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4643 积分:33865 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2014/3/7 6:02:00 [只看该作者]

If MainTable.Name = "表B"
    DataTables("表B").DataRows.Clear
    For Each dr As DataRow In DataTables("表A").DataRows
        For Each dc As DataCol In DataTables("表A").DataCols
            If dc.Name <> "姓名" AndAlso dr(dc.Name) > 0
                Dim dr1 As DataRow = DataTables("表B").AddNew
                dr1("姓名") = dr("姓名")
                dr1("工序名称") = dc.Name
                dr1("数量") = dr(dc.Name)
            End If
        Next
    Next
End If

 回到顶部
帅哥哟,离线,有人找我吗?
zyqzyy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5879 威望:0 精华:0 注册:2013/7/29 12:00:00
  发帖心情 Post By:2014/3/7 8:47:00 [只看该作者]

请参考帮助

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


 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/3/7 8:58:00 [只看该作者]

附件传不了,贴代码:

表A转表B:

DataTables("表B").DataRows.Clear()
For Each adr As DataRow In DataTables("表A").DataRows
    If adr.IsNull("姓名") = False Then
        For Each adc As DataCol In DataTables("表A").DataCols
            If adc.Name.StartsWith("工序") Then
                Dim bdr As DataRow = DataTables("表B").AddNew()
                bdr("姓名") = adr("姓名")
                bdr("工序") = adc.Name
                bdr("数量") = adr(adc.Name)
            End If
        Next
    End If
Next
DataTables("表B").Save()
MainTable = Tables("表B")

 

表B转表A(C):

DataTables("表C").DataRows.Clear()
Dim vals As List(Of String) = DataTables("表B").SQLGetValues("姓名","姓名 Is Not Null")
For Each val As String In vals
    Dim ddr As DataRow = DataTables("表C").AddNew()
    ddr("姓名") = val
    For Each bdr As DataRow In DataTables("表B").DataRows
        For Each ddc As DataCol In DataTables("表C").DataCols
            If ddc.Name = bdr("工序") AndAlso bdr("姓名") = val Then
                ddr(ddc.Name) = bdr("数量")
            End If
        Next
    Next
Next
Tables("表C").Sort = "姓名 Desc"
MainTable = Tables("表C")


 回到顶部
帅哥哟,离线,有人找我吗?
bobolan521
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:632 积分:7217 威望:0 精华:1 注册:2013/11/26 7:49:00
  发帖心情 Post By:2014/3/8 18:40:00 [只看该作者]

谢谢lsy,我试过你写的代码可以用
[此贴子已经被作者于2014-3-8 18:41:09编辑过]

 回到顶部