Foxtable(狐表)用户栏目专家坐堂 → 老大,帮我看看这个专业报表代码应该怎么改?


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

主题:老大,帮我看看这个专业报表代码应该怎么改?

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
老大,帮我看看这个专业报表代码应该怎么改?  发帖心情 Post By:2012/7/21 16:22:00 [只看该作者]

Tables(e.Form.Name & "_Table1") .Select(0, 0, CurrentTable.Rows.Count - 1, CurrentTable.Cols.Count - 1)
Dim doc As New PrintDoc '定义一个报表
'Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Dim ra As New prt.RenderArea
Dim rt As prt.RenderText
ra.Width = 60 '设置标签宽度
ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never '禁止水平分割
ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never '禁止垂直分割
ra.Style.Spacing.Right = 2 '设置标签之间的所有和上下间隔为2毫米
ra.Style.Spacing.Bottom = 2
ra.Style.Padding.All = 1 ' 标签内容距离边框为1毫米
ra.Style.Borders.All = New prt.Linedef(0.3, Color.Black) '设置边框
ra.DataBinding.DataSource = BindTables("代券信息_Table1") '将容器绑定到员工表
Dim Bar As New BarCodeBuilder
Bar.Symbology = Barpro.Symbology.QRCode
Bar.Code = "[Fields!代券代码.Value]"
Dim rm As New prt.RenderImage
rm.Image = Bar.GetImage(200)
doc.Body.Children.Add(rm)
Doc.Body.ChildRen.Add(ra) '将容器加入到报表中 
rt = New prt.RenderText
rt.Text = "代券代码:[Fields!代券代码.Value]"
ra.Children.Add(rt) '添加到容器中
rt = New prt.RenderText
rt.Text = "启始日期:[Format(Fields!启始日期.Value,""yyyy-MM-dd"")]"
ra.Children.Add(rt) 
rt = New prt.RenderText
rt.Text = "结束日期:[Format(Fields!结束日期.Value,""yyyy-MM-dd"")]"
ra.Children.Add(rt) 
rt = New prt.RenderText
rt.Text = "使用规则:[Fields!使用规则.Value]"
ra.Children.Add(rt) '
Doc.Preview()


  我想是一行  并排 


  条形码      框子                   条形码    框子



  这样的格式

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/7/21 16:26:00 [只看该作者]

现在是这样的.

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

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


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

这是没有办法解决的,你只能不用绑定,手工编码遍历所有行,逐行生成条码和框子,逐个加入。

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/7/21 17:08:00 [只看该作者]

啊!不会吧?

Tables(e.Form.Name & "_Table1") .Select(0, 0, CurrentTable.Rows.Count - 1, CurrentTable.Cols.Count - 1)
Dim doc As New PrintDoc '定义一个报表
Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Dim ra As New prt.RenderArea
Dim rt As prt.RenderText
ra.Width = 60 '设置标签宽度
ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never '禁止水平分割
ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never '禁止垂直分割
ra.Style.Spacing.Right = 2 '设置标签之间的所有和上下间隔为2毫米
ra.Style.Spacing.Bottom = 2
ra.Style.Padding.All = 1 ' 标签内容距离边框为1毫米
ra.Style.Borders.All = New prt.Linedef(0.3, Color.Black) '设置边框
ra.DataBinding.DataSource = BindTables("代券信息_Table1") '将容器绑定到员工表
Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
Dim Bar As New BarCodeBuilder
Bar.Symbology = Barpro.Symbology.QRCode
Bar.BarRatio = 0.3
Bar.BarHeight = 5
Bar.Code = "代券代码:[Fields!代券代码.Value]"
Dim rm As New prt.RenderImage
rm.Image = Bar.GetImage(300)
ra.Children.Add(rm)
rt = New prt.RenderText
rt.Text = "代券代码:[Fields!代券代码.Value]"
ra.Children.Add(rt) '添加到容器中
rt = New prt.RenderText
rt.Text = "启始日期:[Format(Fields!启始日期.Value,""yyyy-MM-dd"")]"
ra.Children.Add(rt)
rt = New prt.RenderText
rt.Text = "结束日期:[Format(Fields!结束日期.Value,""yyyy-MM-dd"")]"
ra.Children.Add(rt)
rt = New prt.RenderText
rt.Text = "使用规则:[Fields!使用规则.Value]"
ra.Children.Add(rt) '
Doc.Preview()

  我现在的这个 变成了.

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


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/7/21 17:08:00 [只看该作者]

但是不好看  ,EXCEL有这个二维码打印的字体吗?

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


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

其实自己遍历,不知道多方便,你打开CaseStudy目录下的文件: Excel报表.Table

 

然后在命令窗口执行下面的代码:

 


Dim doc As New PrintDoc
Dim Bar As New BarCodeBuilder
doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Bar.Symbology = Barpro.Symbology.QRCode
For Each r As Row In Tables("员工").Rows
    Dim rt As New prt.RenderTable() '定义一个表格对象
    rt.Style.GridLines.All = New prt.LineDef '将网格线类型设为默认类型
    rt.Width = 70 '表格宽度为70mm
    rt.Style.Spacing.All = 2 '和其他对象之间的间隔为2mm
    rt.SplitVertBehavior = prt.SplitBehaviorEnum.Never '避免垂直换页的时候,表格被分割成两部分.
    rt.Cols(0).Width = 20
    rt.cells(0,1).Text = "姓名"
    rt.Cells(0,2).Text = r("姓名")
    rt.Cells(1,1).Text = "部门"
    rt.Cells(1,2).Text = r("部门")
    rt.Cells(2,1).Text= "职务"
    rt.cells(2,2).Text = r("职务")
    rt.Cells(0,0).SpanRows = 3
    Bar.Code = r("地址")
    rt.Cells(0,0).Image = bar.GetImage
    doc.Body.Children.Add(rt) '将表格对象加入到
Next
Doc.Preview()


 回到顶部