以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  根据日期列内容生成一张表的列名  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=7649)

--  作者:blackzhu
--  发布时间:2010/7/20 17:14:00
--  根据日期列内容生成一张表的列名

我想根据一张表中日期列中的日期,自动生成另外一张表的列名或者列标题,代码怎么写


--  作者:czy
--  发布时间:2010/7/20 17:26:00
--  

Dim dtb As New DataTableBuilder("临时表")
Dim ColNames As List(Of String) = Datatables("订单").GetUniqueValues("[日期] Is Not Null","日期")
For Each ColName As String In ColNames
    dtb.AddDef(ColName.Replace(" 0:00:00",""), Gettype(String), 32)
Next
dtb.Build()
[此贴子已经被作者于2010-7-20 17:29:35编辑过]

--  作者:blackzhu
--  发布时间:2010/7/20 17:32:00
--  
测试OK,谢谢程版,还有问题再问
--  作者:blackzhu
--  发布时间:2010/7/20 17:36:00
--  
我想问一下,如一张表中,表名为("表A"),已经有A,B,C三列,然后再按照日期列的内容,再加载在A,B,C三列的后面.
--  作者:czy
--  发布时间:2010/7/20 20:05:00
--  
Dim ColNames As List(Of String) = Datatables("订单").GetUniqueValues("[日期] Is Not Null","日期")
For Each ColName As String In ColNames
    Datatables("表A").DataCols.Add(ColName.Replace(" 0:00:00",""), Gettype(String), 32)
Next

--  作者:blackzhu
--  发布时间:2010/7/21 7:55:00
--  

昨日谢错了,你这个代码测试OK,再问一个代码.

 

 表A中不是有A.B.C三列吗,其他的列名是根据另外一张表(例如"表B")的日期生成的,但是表b中有A.B.C以及日期和时间三列,我想的是只要表A中的A.B.C三列中的数据和表B中的A.B.C三列的数据一样,那么表B中的时间列的数据自动加载或复制到相对应的表A的日期列中:

 

例如:

 

表B                                                                   表A的效果

 

卡号    工号   姓名     日期                  时间               卡号        工号        姓名       2010-7-19

 12      34    李四     2010-7-19        7:30                12         34         李四        7:30 11:30  12:30

 12      34    李四     2010-7-19        11:30                                                    

 12      34    李四     2010-7-19        12:00


--  作者:狐狸爸爸
--  发布时间:2010/7/21 9:26:00
--  

大概就是这样吧,你慢慢调试琢磨:

 

 

Dim Arys As List(Of String())
Arys = DataTables("表").GetUniqueValues("a","b","c")
For Each Ary As String() In Arys
     Dim drs As List(of DataRow)

     drs = DataTables("表").Select("a=‘" & arys(0) & "\' And b = \'" & arys(1) & "\' And b= \'" & arys(2) & "\'" )

     Dim nr Row = Tables("新表").AddNew()

     nr("a") = arys(0)

     nr("b") = arys(1)

     nr("c") = arys(2)

    For Each dr As DataRow In drs

        nr("XX") = nr(XX) & dr("事件")

    Next

Next


--  作者:blackzhu
--  发布时间:2010/7/21 9:38:00
--  

狐爸,我是根据C版的代码:

 

表A中的卡号,姓名,工号是死的,2010-7-19的列名是根据表B的日期列的内容生成的,关键我要的是将表B中李四的时间加载到相应的日期列中.


--  作者:blackzhu
--  发布时间:2010/7/21 9:43:00
--  
看附件,从考勤表的内容生成到打印表的内容.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:考勤.table


--  作者:狐狸爸爸
--  发布时间:2010/7/21 9:45:00
--  

我四楼的代码就是这个意思啊,如果A表的a\\b\\c三列已经输入内容,而且是死的,那么更简单:

 

Dim drs As List(of DataRow)

For Each nr As DataRow In DataTables("表A").DataRows

    drs = DataTables("表").Select("a=‘" & nr("a") & "\' And b = \'" & br("b") & "\' And c= \'" & nr("c") & "\'" )

    For Each dr As DataRow In drs

        nr("xx") = nr("xx") & dr("xx")

    Next

Next