Foxtable(狐表)用户栏目专家坐堂 → [求助]交叉表引用字符


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

主题:[求助]交叉表引用字符

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


加好友 发短信
等级:婴狐 帖子:33 积分:513 威望:0 精华:0 注册:2009/3/8 23:20:00
[求助]交叉表引用字符  发帖心情 Post By:2011/12/26 22:20:00 [只看该作者]

请问,交叉表中能否实现下图的功能:


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看
在A表中是记录,通过按钮生成交叉表的形式,但交叉表只能是数值或者记录数,能不能生成字符,显示对应的行程,类似易表中findtext

 

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


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/26 22:32:00 [只看该作者]

这个没有办法,不过这样的问题,编码生成是很简单的,看看这里的示例二:

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

 

 

 

[此贴子已经被作者于2011-12-26 22:32:10编辑过]

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


加好友 发短信
等级:婴狐 帖子:33 积分:513 威望:0 精华:0 注册:2009/3/8 23:20:00
  发帖心情 Post By:2011/12/26 22:50:00 [只看该作者]

老六,我依葫芦画瓢,不行啊,请帮我看看是什么原因,最好能告诉我错在哪里以便我学习

Dim dtb As New DataTableBuilder("表b")
dtb.AddDef("车号", Gettype(String), 32)
For Each v As String In DataTables("表A").GetUniqueValues("","日期")
    dtb.AddDef(v, Gettype(Double))
Next

dtb.Build()
For Each v As String In DataTables("表A").GetUniqueValues("","车号")
    Dim dr1 As DataRow = DataTables("表B").AddNew()
    dr1("车号") = v
    For Each dr2 As DataRow In DataTables("表A").DataRows
        If dr2("车号") = v Then
            dr1(dr2("日期")) = dr2("行程")
        End If
    Next
Next
MainTable = Tables("表b")


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/26 23:00:00 [只看该作者]

Dim dtb As New DataTableBuilder("表F")
dtb.AddDef("车号", Gettype(String), 32)
For Each v As String In DataTables("表A").GetUniqueValues("","日期")
    Dim d As Date = v
    dtb.AddDef(format(d,"yyyy-MM-dd"), Gettype(String))
Next
dtb.Build()
For Each v As String In DataTables("表A").GetUniqueValues("","车号")
    Dim dr1 As DataRow = DataTables("表F").AddNew()
    dr1("车号") = v
    For Each dr2 As DataRow In DataTables("表A").DataRows
        If dr2("车号") = v Then
            Dim nm As String = Format(dr2("日期"),"yyyy-MM-dd")
            dr1(nm) = dr2("行程")
        End If
    Next
Next
MainTable = Tables("表F")

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


加好友 发短信
等级:婴狐 帖子:33 积分:513 威望:0 精华:0 注册:2009/3/8 23:20:00
  发帖心情 Post By:2011/12/26 23:09:00 [只看该作者]

哦,我没有把日期列的格式转成字符串了,谢谢老六!图片点击可在新窗口打开查看

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


加好友 发短信
等级:婴狐 帖子:33 积分:513 威望:0 精华:0 注册:2009/3/8 23:20:00
  发帖心情 Post By:2011/12/26 23:34:00 [只看该作者]

顺便再问一个,如果我要在A表筛选以后再生成F表,但DataTableBuilder没有filter方法,不能写成

dtb.Filter = Tables("表A").Filter,那应该怎么写呢

哦,只要把data table改成table,先筛选再生产临时表应该可以的,明天上电脑试下
[此贴子已经被作者于2011-12-27 0:29:32编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/27 8:18:00 [只看该作者]

1、GetUniqueValues可以设置条件

2、 

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

改为:

 

 For Each dr2 As Row In Tables("表A").DataRows

 


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


加好友 发短信
等级:婴狐 帖子:39 积分:420 威望:0 精华:0 注册:2011/11/19 16:31:00
  发帖心情 Post By:2011/12/27 10:33:00 [只看该作者]

以下是引用狐狸爸爸在2011-12-27 8:18:00的发言:

1、GetUniqueValues可以设置条件

2、 

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

改为:

 

 For Each dr2 As Row In Tables("表A").DataRows

 

2、这里应该是For Each dr2 As Row In Tables("表A").Rows

还有,筛选以后生成的表隐藏的字段都有的,只是值为空的,能不能不生成这些字段

[此贴子已经被作者于2011-12-27 11:11:59编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/12/27 11:58:00 [只看该作者]

组合多个SQLJoinTableBuilder法:


Dim n As Integer
Dim s As String
Dim dt1,dt2 As fxDataSource
Dim jb As SQLJoinTableBuilder
Dim ds As New List(Of String)
ds = DataTables("表A").GetUniqueValues("","日期")

For Each D As Date In ds
    s = format(d,"yyyy年_M月_d")    
    jb =New SQLJoinTableBuilder("查询","表A")
    jb.AddCols("车号")
    jb.AddExp(s,"行程")
    jb.Filter = "日期 = #" & D & "#"
    If n =0 Then
        dt1 = jb.BuildDataSource()
    Else
        dt2 = jb.BuildDataSource()
        dt1.Combine("车号",dt2,"车号")
    End If
    n+=1
Next

Tables("窗口1_Table1").DataSource = dt1
[此贴子已经被作者于2011-12-27 12:10:43编辑过]

 回到顶部