Foxtable(狐表)用户栏目专家坐堂 → 关于excel的报表设计问题


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

主题:关于excel的报表设计问题

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


加好友 发短信
等级:童狐 帖子:285 积分:2254 威望:0 精华:0 注册:2011/8/16 10:11:00
  发帖心情 Post By:2017/4/17 21:56:00 [只看该作者]

Dim d As Date = Date.today
我替换成
Dim d As Date = e.Form.Controls("DateTimePicker1").value
因为要从界面的时间控件框取值

代码如下:

DataTables("打印表_临时").DeleteFor("")

Dim t1 As Table = Tables("早餐记录表")
Dim t2 As Table = Tables("午餐记录表")
Dim t3 As Table = Tables("晚餐记录表")
Dim t4 As Table = Tables("打印表_临时")
Dim d As Date = e.Form.Controls("DateTimePicker1").value
For Each dr As DataRow In t1.DataTable.Select("配餐日期 = #" & d & "#")
    Dim nr As DataRow = t4.DataTable.AddNew
    nr("配餐日期") = dr("配餐日期")
    nr("早餐菜谱") = dr("食物名称")
    nr("早餐重量") = dr("重量")
Next
For Each dr As DataRow In t2.DataTable.Select("配餐日期 = #" & d & "#")
    Dim nr As DataRow = t4.DataTable.Find("配餐日期 = #" & d & "# and 午餐菜谱 is not null")
    If nr Is Nothing Then nr = t4.DataTable.AddNew
    nr("配餐日期") = dr("配餐日期")
    nr("午餐菜谱") = dr("食物名称")
    nr("午餐重量") = dr("重量")
Next
For Each dr As DataRow In t3.DataTable.Select("配餐日期 = #" & d & "#")
    Dim nr As DataRow = t4.DataTable.Find("配餐日期 = #" & d & "# and 晚餐菜谱 is not null")
    If nr Is Nothing Then nr = t4.DataTable.AddNew
    nr("配餐日期") = dr("配餐日期")
    nr("晚餐菜谱") = dr("食物名称")
    nr("晚餐重量") = dr("重量")
Next
[此贴子已经被作者于2017/4/17 21:57:48编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/4/18 9:22:00 [只看该作者]

用填充

Dim t1 As Table = Tables("表A")
Dim t2 As Table = Tables("表B")
Dim t3 As Table = Tables("表C")
Dim t4 As Table = Tables("总表")
Dim d As Date = Date.today
Dim f As New Filler
f.SourceTable = DataTables("表A") '指定数据来源
f.SourceCols = "配餐日期,食物名称,重量" '指定数据来源列
f.DataTable = DataTables("总表") '指定数据接收表
f.DataCols = "配餐日期,早餐菜谱,早餐重量" '指定数据接收列
f.Append = False
f.Filter = "配餐日期 = #" & d & "# and 早餐菜谱 is not null"
f.Fill() '填充数据
f = New Filler
f.SourceTable = DataTables("表B") '指定数据来源
f.SourceCols = "配餐日期,食物名称,重量" '指定数据来源列
f.DataTable = DataTables("总表") '指定数据接收表
f.DataCols = "配餐日期,午餐菜谱,午餐重量" '指定数据接收列
f.Append = False
f.Filter = "配餐日期 = #" & d & "# and 午餐菜谱 is not null"
f.Fill() '填充数据
f = New Filler
f.SourceTable = DataTables("表C") '指定数据来源
f.SourceCols = "配餐日期,食物名称,重量" '指定数据来源列
f.DataTable = DataTables("总表") '指定数据接收表
f.DataCols = "配餐日期,晚餐菜谱,晚餐重量" '指定数据接收列
f.Append = False
f.Filter = "配餐日期 = #" & d & "# and 晚餐菜谱 is not null"
f.Fill() '填充数据

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


加好友 发短信
等级:童狐 帖子:285 积分:2254 威望:0 精华:0 注册:2011/8/16 10:11:00
  发帖心情 Post By:2017/4/18 17:38:00 [只看该作者]

修改了下代码有报错

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

附件里有源文件

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:孕妇营养营养食谱.foxdb



 回到顶部
帅哥,在线噢!
有点蓝
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/4/18 18:02:00 [只看该作者]

Dim f As New Filler
f.SourceTable = DataTables("早餐记录表") '指定数据来源
f.SourceCols = "配餐日期,食物名称,重量" '指定数据来源列
f.DataTable = DataTables("打印表_临时") '指定数据接收表
f.DataCols = "配餐日期,早餐菜谱,早餐重量" '指定数据接收列
f.Append = False
f.Filter = "配餐日期 = #" & d & "# and 食物名称 is not null"
f.Fill() '填充数据
f = New Filler
f.SourceTable = DataTables("午餐记录表") '指定数据来源
f.SourceCols = "配餐日期,食物名称,重量" '指定数据来源列
f.DataTable = DataTables("打印表_临时") '指定数据接收表
f.DataCols = "配餐日期,午餐菜谱,午餐重量" '指定数据接收列
f.Append = False
f.Filter = "配餐日期 = #" & d & "# and 食物名称 is not null"
f.Fill() '填充数据
f = New Filler
f.SourceTable = DataTables("晚餐记录表") '指定数据来源
f.SourceCols = "配餐日期,食物名称,重量" '指定数据来源列
f.DataTable = DataTables("打印表_临时") '指定数据接收表
f.DataCols = "配餐日期,晚餐菜谱,晚餐重量" '指定数据接收列
f.Append = False
f.Filter = "配餐日期 = #" & d & "# and 食物名称 is not null"
f.Fill() '填充数据

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


加好友 发短信
等级:童狐 帖子:285 积分:2254 威望:0 精华:0 注册:2011/8/16 10:11:00
  发帖心情 Post By:2017/4/19 18:44:00 [只看该作者]

谢谢您的指导,打印功能基本实现了,但是有两个小问题想请教下,
1,我已经在表的列属性里限制了小数后面2位,为啥报表生成还是4位呢?

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

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

2,我如何能在报表中根据我表中的菜名自动添加序号呢?我用了index的,但是不行,而且我表里没有顺序的列名,而且早中晚的菜的数量是不一样的,
请问下这功能如何实现

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170419184259.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170419184319.png
图片点击可在新窗口打开查看





[此贴子已经被作者于2017/4/19 18:44:33编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/19 20:01:00 [只看该作者]

1、你可以用表达式 <format([早餐重量], "0.00")>

 

2、你的模板是不是有问题?直接定义一个细节区就行了,不要写那么多行。


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


加好友 发短信
等级:童狐 帖子:285 积分:2254 威望:0 精华:0 注册:2011/8/16 10:11:00
  发帖心情 Post By:2017/4/19 22:50:00 [只看该作者]

我报表里要引用2个个表的数据,所以我写成直接引用,我把报表发上来给您看看,谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:报表.xls


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/19 23:05:00 [只看该作者]

 上面的可以用一个细节区把所有行弄出来。

 

 下面的,直接用统计就好了,直接统计临时表的数据。


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


加好友 发短信
等级:童狐 帖子:285 积分:2254 威望:0 精华:0 注册:2011/8/16 10:11:00
  发帖心情 Post By:2017/4/19 23:24:00 [只看该作者]

如果把所有行都弄出来的话就会出现要比如早餐我只有3个菜,但是午餐我有4个菜,序号就会出现1-4了,。。。但是我希望的单独去显示每一餐的菜的数量


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/20 9:06:00 [只看该作者]

 如果你17楼的模板满足你的需求的话,那你就那样做吧。

 

 关于序号的问题,你可以把序号列的值也在你【临时表】体现出来,赋值的时候,把序号也填上不就好了?


 回到顶部
总数 21 上一页 1 2 3 下一页