Foxtable(狐表)用户栏目专家坐堂 → 专业报表打印代码太多的疑问


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

主题:专业报表打印代码太多的疑问

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
专业报表打印代码太多的疑问  发帖心情 Post By:2014/5/20 15:28:00 [只看该作者]

表单全部是用专业报表输出打印的,代码全部写在配置栏的一个打印按钮上,可根据当前操作的表单运行对应的代码。类似下面这样:

.......

rt.Rows(rt.Rows.Count-1).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉网格线
rt.Rows(rt.Rows.Count-1).Style.Borders.Top = New prt.LineDef("0.2mm", Color.Black) '恢复上方网格线
rt.Cells(rt.Rows.Count-1,0).SpanCols = 9
rt.Cells(rt.Rows.Count-1,0).Text = "第[PageNo]页,共[PageCount]页"
rt.Cells(rt.Rows.Count-1,0).Style.Font = New Font("宋体",10) '设置字体
rt.RowGroups(rt.Rows.Count-1,1).Style.TextAlignHorz = prt.AlignHorzEnum.Right '文本水平位置
rt.RowGroups(rt.Rows.Count-1,1).Footer = prt.TableHeaderEnum.All '指定表尾行
doc.Body.Children.Add(rt) '将表格对象加入到报表中
Doc.Preview() '预览报表

 

Case "采购单"
    Dim rt As New prt.RenderTable() '定义一个表格对象
    'Dim rx As New prt.RenderText '定义一个文本对象
    MtbName = Tables("采购单_主表")
    CurRow = Tables("采购单_主表").Current
    tb = Tables("采购单_明细")
    '检查当前表单是否设计了打印模板
    Dim dr As DataRow = DataTables("Argtb").Find("tbN = '" & Mtb & "'")
    If dr IsNot Nothing Then
        '设置打印纸张
        doc.PageSetting.PaperKind = dr("PaperKind")
        doc.PageSetting.Landscape = dr("Landscape") '是否横向打印
        Doc.PageSetting.LeftMargin = CInt(dr("PageL")) '设置左边距
        Doc.PageSetting.RightMargin = CInt(dr("PageR")) '设置右边距
        Doc.PageSetting.TopMargin = CInt(dr("PageT")) '设置上边距
        Doc.PageSetting.BottomMargin = CInt(dr("PageB")) '设置下边距
    Else
        MessageBox.Show("当前表单未设计打印模板!","提示")
        Return
    End If

........

 

现在的问题是:专业报表每个表单的打印代码都很长,现在才几张表就很多了,如果有几十张或更多代码编辑器有没有限制输入内容的多少?会不会影响速度?有没有简化的方法。因为每个表单格式内容都不同又不能共用。

谢谢!



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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/20 15:29:00 [只看该作者]

代码太多,可以考虑把一部分写成内部函数再调用,这样就分开了.

另外重复的代码可以考虑优化一下.

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/5/20 15:37:00 [只看该作者]

关键每个表单的表头,表尾,列数格式都不一样,经常要合并很多不同的列,感觉都不能共用函数没法写啊,主要担心代码编辑器中代码太多了有没有限制?


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/20 15:38:00 [只看该作者]

那就分开写到内部函数去.

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/20 15:40:00 [只看该作者]

 回复3楼,不是叫你用公用函数,每一个报表,写成一个内部函数,在按钮里调用即可。

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/5/20 15:50:00 [只看该作者]

谢谢!这样是可以,那函数多了不会影响速度吧,现在其他函数快50个了。如果每张表单一个不是上百个,另外,函数为什么不能根据名称自动排序呢,不然打印的报表全部用"print_"开头就很容易找到了。

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/20 15:51:00 [只看该作者]

不会.

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/20 15:53:00 [只看该作者]

 回复6楼,内部函数是可以指定分类的,你设置一下它们的分类即可。

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/5/20 15:56:00 [只看该作者]

那倒是,谢谢两位老师,看来只能这样了。

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/5/20 16:00:00 [只看该作者]

另外请教下,函数名如果用中文速度和其他方面与英文都一样吧,函数多了加上英文又不好,有时自己都不记得了,还要打开来看才知道。

 回到顶部
总数 11 1 2 下一页