Foxtable(狐表)用户栏目专家坐堂 → 根据日期列内容生成一张表的列名


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

主题:根据日期列内容生成一张表的列名

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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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


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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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


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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/7/21 10:21:00 [显示全部帖子]

Dim Vals As List(Of String) = Datatables("考勤").GetUniqueValues("[日期] Is Not Null","日期")
For Each Val As String In Vals
    Val = Val.Replace(" 0:00:00","")
    If Datatables("打印表").DataCols.Contains(Val) = False Then
        Datatables("打印表").DataCols.Add(Val, Gettype(String), 32)
    End If
Next
Dim drs As List(of Datarow)
For Each nr As Datarow In Datatables("打印表").DataRows
    For Each val As String In Vals
        Val = Val.Replace(" 0:00:00","")
        drs = Datatables("考勤").Select("工号 = '" & nr("工号") & "' And 姓名 = '" & nr("姓名") & "' And 卡号 = '" & nr("卡号") & "' And 日期 = #" & Val & "#")
        nr(val) = ""
        For Each dr As Datarow In drs
            nr(val) = nr(val) & dr("时间") & ","
        Next
        nr(val) = nr(val).Trim(",")
   Next
Next

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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/7/21 10:36:00 [显示全部帖子]

这种代码很普通的,以后你练习多了,可以做得更好
[此贴子已经被作者于2010-7-21 10:35:41编辑过]

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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/7/21 11:36:00 [显示全部帖子]

以下是引用blackzhu在2010-7-21 11:22:00的发言:

  这个代码如果是工号等列没有内容,直接靠考勤表直接生成的呢?

 

用Filler先填充这些列的数据


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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/7/21 14:01:00 [显示全部帖子]

看看帮助中DataCols的属性和方法,有一个Delete方法,用于删除通过代码增加的临时列

 回到顶部