以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  专业报表打印代码太多的疑问  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=51133)

--  作者:scott518
--  发布时间: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
--  发布时间:2014/5/20 15:29:00
--  
代码太多,可以考虑把一部分写成内部函数再调用,这样就分开了.

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

--  作者:scott518
--  发布时间:2014/5/20 15:37:00
--  

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


--  作者:Bin
--  发布时间:2014/5/20 15:38:00
--  
那就分开写到内部函数去.
--  作者:有点甜
--  发布时间:2014/5/20 15:40:00
--  
 回复3楼,不是叫你用公用函数,每一个报表,写成一个内部函数,在按钮里调用即可。
--  作者:scott518
--  发布时间:2014/5/20 15:50:00
--  
谢谢!这样是可以,那函数多了不会影响速度吧,现在其他函数快50个了。如果每张表单一个不是上百个,另外,函数为什么不能根据名称自动排序呢,不然打印的报表全部用"print_"开头就很容易找到了。
--  作者:Bin
--  发布时间:2014/5/20 15:51:00
--  
不会.
--  作者:有点甜
--  发布时间:2014/5/20 15:53:00
--  
 回复6楼,内部函数是可以指定分类的,你设置一下它们的分类即可。
--  作者:scott518
--  发布时间:2014/5/20 15:56:00
--  
那倒是,谢谢两位老师,看来只能这样了。
--  作者:scott518
--  发布时间:2014/5/20 16:00:00
--  
另外请教下,函数名如果用中文速度和其他方面与英文都一样吧,函数多了加上英文又不好,有时自己都不记得了,还要打开来看才知道。