以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  赋值的时候如何能遍历所有列  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=42391)

--  作者:zhangchi96
--  发布时间:2013/11/10 15:21:00
--  赋值的时候如何能遍历所有列
“减少”按钮代码: 

For Each dr As Row In Tables("在职窗体_在职表").Rows

    If dr("减少原因") <> Nothing Then

        If dr("减少时间") = CurrentYM Then

               Dim r1 As DataRow = DataTables("在职职工表").Find("减少原因 Is Not Null ")

                Tables("不在职职工表").AddNew

                Dim r2 As Row = Tables("不在职职工表").Current

                r2("姓名") = r1("姓名")             \'第1列名是 姓名

                r2("性别") = r1("性别")             \'第2列名是 性别

               r2("出生年月") = r1("出生年月")   \'第3列名是 出生年月

                r2("籍贯") = r1("籍贯")             \'第4列名是 籍贯

               \' *****。。。。。。。。。。。。。还有第5列、第6列 等 很多100多列,没有写

                r1.delete

          End If

    End If

Next

因为【在职职工表】和【不在职职工表】两个表的结构完全一样,列数又很多,以后可能还有所增加或修改列名称,在*号处完全写完所有列不方便,请教怎么把所有的列全部赋值过来

 

 

[此贴子已经被作者于2013-11-10 15:23:17编辑过]

--  作者:yan2006l
--  发布时间:2013/11/10 17:45:00
--  

For Each dc As DataCol In DataTables("B").DataCols
         dr(dc.Name) = e.DataRow(dc.Name)
Next

 

如果列名不同,或者只需复制部分列,可以参考下面的代码:

    Dim nma() As String = {"A1","A2","A3","A4"} \'A表数据来源列
   
Dim nmb() As String = {"B1","B2","B3","B4"} \'B表数据接收列
   
Dim dr As DataRow = DataTables("表B").AddNew
   
For i As Integer = 0 To nma.Length - 1
        dr(nmb(i)) = e.DataRow(nma(i))
   
Next


--  作者:supwork
--  发布时间:2013/11/10 17:46:00
--  

是的软件功能讲究自动化,不要老是让开发者,事先给出所有列这种工作方式,必须有自动获取相关列的快速功能。在其它方面也是如此。

 


--  作者:zhangchi96
--  发布时间:2013/11/10 23:35:00
--  

谢谢大师的指教,太有用了,实际使用的时候我改了一点点

  

  For Each dc As DataCol In DataTables("在职职工表").DataCols
                  r2(dc.Name) = r1(dc.Name)
  Next

[此贴子已经被作者于2013-11-10 23:36:30编辑过]