以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=27047)

--  作者:wsxdwh
--  发布时间:2012/12/20 17:27:00
--  [求助]

向lin_hailun(你有数据!)!!!

想生成一个按区、学校分组的参赛队员报表,学习使用分组打印和标签打印后编了一段代码,执行时编号和姓名分开了,每行只显示了一列,后面还出现了重叠现象。我的想法是:先按区、学校分组;然后显示每个队员的姓名和编号,并象标签一样显示。

 

 

 

 

Dim doc As New PrintDoc
Dim rt As New prt.RenderText
Dim ra1 As New prt.RenderArea
Dim ra2 As New prt.RenderArea
Dim ra3 As New prt.RenderArea

\'设置一级分组
ra1.Style.Spacing.Bottom = 2
ra1.DataBinding.DataSource = BindTables("报名表")
ra1.DataBinding.Grouping.Expressions.Add("Fields!区.Value")

\'打印一级分组的组名
rt.Text= "[Fields!区.Value]:"
rt.Style.FontSize = 14
rt.Style.FontBold = True
rt.Style.Spacing.Bottom = 2
ra1.Children.Add(rt)
\'设置二级分组
ra2 = New Prt.RenderArea
ra2.Style.Spacing.Bottom = 2
ra2.DataBinding.DataSource = ra1.DataBinding.DataSource
ra2.DataBinding.Grouping.Expressions.Add("Fields!学校.Value")
ra1.Children.Add(ra2)
\'打印二级分组的组名
rt = New prt.RenderText
rt.Text= "[Fields!学校.Value]:"
rt.Style.FontSize = 12
rt.Style.FontBold = True
rt.Style.Spacing.Bottom = 2
ra2.Children.Add(rt)

\'设置三级分组
ra3=New Prt.RenderArea
ra3.Stacking = prt.StackingRulesEnum.InlineLeftToRight
ra3.Width = 30 \'设置标签宽度
ra3.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割
ra3.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止垂直分割
ra3.Style.Spacing.Right = 2 \'设置标签之间的所有和上下间隔为2毫米
ra3.Style.Spacing.Bottom = 2
ra3.DataBinding.DataSource = BindTables("报名表")
\'Doc.Body.ChildRen.Add(ra) \'将容器加入到报表中
ra2.Children.Add(ra3) \'添加到二级分组中


\'设置标签内容
rt = New prt.RenderText
rt.Text = "编号:[Fields!编号.Value]"
\'rt.DataBinding.DataSource = ra2.DataBinding.DataSource
ra3.Children.Add(rt)
rt = New prt.RenderText
rt.Text = "姓名:[Fields!姓名.Value]"
\'rt.DataBinding.DataSource = ra2.DataBinding.DataSource
ra3.Children.Add(rt)

 


doc.body.Children.Add(ra1)
doc.Preview()

[此贴子已经被作者于2012-12-21 9:19:42编辑过]

--  作者:lin_hailun
--  发布时间:2012/12/20 18:09:00
--  
 好的,变成这样。

Dim doc As New PrintDoc
Dim rt As New prt.RenderText
Dim ra1 As New prt.RenderArea
Dim ra2 As New prt.RenderArea
Dim ra3 As New prt.RenderArea

\'设置一级分组
ra1.Style.Spacing.Bottom = 2
ra1.DataBinding.DataSource = BindTables("报名表")
ra1.DataBinding.Grouping.Expressions.Add("Fields!区.Value")

\'打印一级分组的组名
rt.Text= "[Fields!区.Value]:"
rt.Style.FontSize = 14
rt.Style.FontBold = True
rt.Style.Spacing.Bottom = 2
ra1.Children.Add(rt)
\'设置二级分组
ra2 = New Prt.RenderArea
ra2.Style.Spacing.Bottom = 2
ra2.DataBinding.DataSource = ra1.DataBinding.DataSource
ra2.DataBinding.Grouping.Expressions.Add("Fields!学校.Value")
ra1.Children.Add(ra2)


\'打印二级分组的组名
rt = New prt.RenderText
rt.Text= "[Fields!学校.Value]:"
rt.Style.FontSize = 12
rt.Style.FontBold = True
rt.Style.Spacing.Bottom = 2
ra2.Children.Add(rt)


\'设置标签内容
ra3 = New prt.RenderArea
rt = New prt.RenderText
rt.Text = "编号:[Fields!编号.Value]"
ra3.Children.Add(rt)
rt = New prt.RenderText
rt.Text = "姓名:[Fields!姓名.Value]"
ra3.DataBinding.DataSource = ra2.DataBinding.DataSource
ra3.Children.Add(rt)
ra2.Children.Add(ra3)


doc.body.Children.Add(ra1)
doc.Preview()


--  作者:wsxdwh
--  发布时间:2012/12/20 20:18:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:标签.jpg
图片点击可在新窗口打开查看
这是我截取的显示图片,现在由两个问题:

1.开头出现几个校名是什么原因

2.我想要的效果为:

   硚口区:

   东------小学

   编号 300121    编号 30012     编号 30013     编号 30014       编号 30015      编号 30016

   姓名 张三        姓名 李四       姓名 往外       姓名 空间看      姓名 偶觉得     姓名 婆婆可

   ---

   ---

请指教!!!

[此贴子已经被作者于2012-12-20 20:20:53编辑过]

--  作者:wsxdwh
--  发布时间:2012/12/20 20:40:00
--  
期待中!!!
--  作者:wsxdwh
--  发布时间:2012/12/20 21:09:00
--  
期待中=======
--  作者:lin_hailun
--  发布时间:2012/12/20 21:41:00
--  
 明天吧,楼主,数据不再我机子上。明天帮你试一下。
--  作者:wsxdwh
--  发布时间:2012/12/20 22:18:00
--  

好的  先谢了!!!

 


--  作者:wsxdwh
--  发布时间:2012/12/21 9:18:00
--  
这样更好:

   硚口区:

   东------小学

   编号           姓名        编号          姓名          编号        姓名        编号       姓名           编号       姓名 

   30001       东风飞      30002      没机会       30003     电视上     30004    等事项        30005    机顶盒

   30006       地方法      。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

       。

       。

  。。。。。小学

    编号           姓名        编号          姓名          编号        姓名        编号       姓名           编号       姓名 

   30001       东风飞      30002      没机会       30003     电视上     30004    等事项        30005    机顶盒

   30006       地方法      。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。


--  作者:lin_hailun
--  发布时间:2012/12/21 9:45:00
--  
 好的,这样就差不多了。

Dim doc As New PrintDoc
Dim rt As New prt.RenderText
Dim ra1 As New prt.RenderArea
Dim ra2 As New prt.RenderArea
Dim ra3 As New prt.RenderArea

\'设置一级分组
ra1.Style.Spacing.Bottom = 2
ra1.DataBinding.DataSource = BindTables("报名表")
ra1.DataBinding.Grouping.Expressions.Add("Fields!区.Value")

\'打印一级分组的组名
rt.Text= "[Fields!区.Value]:"
rt.Style.FontSize = 14
rt.Style.FontBold = True
rt.Style.Spacing.Bottom = 2
ra1.Children.Add(rt)
\'设置二级分组
ra2 = New Prt.RenderArea
ra2.Style.Spacing.Bottom = 2
ra2.Stacking = prt.StackingRulesEnum.InlineLeftToRight
ra2.DataBinding.DataSource = ra1.DataBinding.DataSource
ra2.DataBinding.Grouping.Expressions.Add("Fields!学校.Value")
ra1.Children.Add(ra2)

\'打印二级分组的组名
ra3 = New prt.RenderArea
ra3.Stacking = prt.StackingRulesEnum.InlineLeftToRight
rt = New prt.RenderText
rt.Text= "[Fields!学校.Value]:"
rt.Style.FontSize = 12
rt.Style.FontBold = True
rt.Style.Spacing.Bottom = 2
ra3.Children.Add(rt)
For i As Integer = 0 To 4
    rt = New prt.RenderText
    rt.Text = "编号"
    rt.Width = 15
    ra3.Children.Add(rt)
    rt = New prt.RenderText
    rt.text = "姓名"
    rt.width = 15
    ra3.Children.Add(rt)
Next
ra2.Children.Add(ra3)

\'设置标签内容
ra3 = New prt.RenderArea
ra3.Width = 30
ra3.Stacking = prt.StackingRulesEnum.InlineLeftToRight
rt = New prt.RenderText
rt.Text = "[Fields!编号.Value]"
rt.Width = 15
ra3.Children.Add(rt)
rt = New prt.RenderText
rt.Text = "[Fields!姓名.Value]"
rt.Width = 15
ra3.DataBinding.DataSource = ra2.DataBinding.DataSource
ra3.Children.Add(rt)
ra2.Children.Add(ra3)


doc.body.Children.Add(ra1)
doc.Preview()


--  作者:sunbrain
--  发布时间:2012/12/21 9:47:00
--  

麻烦把实例数据也给我们看一下啊,这样也知道怎么学习啊

学习林大叔