Foxtable(狐表)用户栏目专家坐堂 → 求根据参数生成表的代码


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

主题:求根据参数生成表的代码

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


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

逐个列判断,将日期格式的标题转换为日期,如果日期不在指定的两个日期之间的,就对应在临时表中增加一列,最后统一填入数据。

 

 


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


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

那就更简单,你自己写下吧,搞不定再说

 

 


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


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

我已经写好了:

 

 Dim dtb As New DataTableBuilder("统计")
 Dim
StartDate As Date = #5/1/2010# '起始日期
 Dim
Count As Integer = (#5/10/2010# - StartDate).TotalDays '计算间隔天数
 dtb.AddDef(
"分类码", GetType(String), 12)
 dtb.AddDef(
"分类名称", GetType(String), 24)
 For
i As Integer = 0 To Count '增加日期列
     dtb.AddDef(
"dc" & i, GetType(Double), "", Format(StartDate.AddDays(i),"yyyy-MM-dd"))
 Next

 dtb.AddDef(
"合计", GetType(Double))
 dtb.Build()

 MainTable
= Tables("统计")

 


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


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

其实你思路完全正确啊


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


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

1、写数据的问题,你可以解决的,不要偷懒,搞不定就看看帮助中的“数据填充器”和“手工编码填充数据”这两节。

2、统计表可以自定义标题的,为啥要建立一个临时表,将统计表的数据写入临时表,我不明白。

 


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


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

打开示例文件"统计演示.Table",执行下面的代码:

 

Dim b As New SQLCrossTableBuilder("统计表1","订单")
b.HGroups.AddDef("产品") '添加日期列用于垂直分组,按年分组
b.HGroups.AddDef("客户") '添加产品列用于垂直分组
b.VGroups.AddDef("日期",DateGroupEnum.None,"{0}") '添加客户列用于水平分组
b.Totals.AddDef("数量") '添加数量列用于统计
b.HorizontalTotal = True
b.Build '生成统计表
For Each dc As DataCol In DataTables("统计表1").DataCols
   Dim v As Date
   If Date.TryParse(dc.Caption,v) Then
        dc.Caption = Format(v,"yyyy-MM-dd")
   End If
Next
DataTables("统计表1").BuildHeader
Maintable = Tables("统计表1") '打开生成的统计表

 

你可以修改上面的代码,设置统计条件,只统计指定日期之间的数据

[此贴子已经被作者于2010-5-21 10:41:09编辑过]

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


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

没有别的办法,你逐个日期判断,如果统计表没有标题等于这个日期的列,就用代码加入该列。

 


 回到顶部