以文本方式查看主题

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

--  作者:wsxdwh
--  发布时间:2013/6/10 21:30:00
--  [求助] 报表

问题:“教练”没有显示出来。原因可能出在红色代码中,经测试没有获得"[Fields!区.Value]"的文本。

        如何修改,请专家指教!!!

Tables("报名表").Sort = "区号,级别,学校"

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

\'设置表名
r = New prt.RenderText
r.Text= jsmc
r.Style.Font = New Font("楷体", 16, FontStyle.Bold)
r.Style.FontBold = True
r.Style.TextAlignHorz = prt.AlignHorzEnum.Center
r.Style.Spacing.Bottom = 5
doc.Body.Children.Add(r)
r = New prt.RenderText
r.Text= "号码对照表"
r.Style.Font = New Font("楷体", 16, FontStyle.Bold)
r.Style.FontBold = True
r.Style.TextAlignHorz = prt.AlignHorzEnum.Center
r.Style.Spacing.Bottom = 5
doc.Body.Children.Add(r)

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

\'打印一级分组的组名
rt = New prt.RenderText
rt.Text= "[Fields!区.Value]代表队:"
rt.Style.FontSize = 12
rt.Style.FontBold = True
rt.Style.Spacing.Bottom = 2
ra1.Children.Add(rt)

rt = New prt.RenderText
rt.Text= "领队:   [Fields!领队.Value]"
rt.Style.FontSize = 12
rt.Style.FontBold = True
rt.Style.Spacing.Bottom = 2
\'rt.DataBinding.DataSource = ra1.DataBinding.DataSource
ra1.Children.Add(rt)

rt = New prt.RenderText
Dim str As String  = "[Fields!编号.Value]"
Dim ss As String
Dim jl As String
Dim jls As List(of String) =  DataTables("报名表").GetUniqueValues("竞赛名称 = \'海模\' And 区 = \'"[Fields!区.Value]"\',"辅导老师")
For Each jl  In  jls
    ss = ss & "   " & jl
Next

rt.Text= "教练:   "& ss &""
rt.Style.FontSize = 12
rt.Style.FontBold = True
rt.Style.Spacing.Bottom = 2
\'rt.DataBinding.DataSource = ra1.DataBinding.DataSource
ra1.Children.Add(rt)

ra3 = New prt.RenderArea
ra3.Width = 33
ra3.Style.Spacing.Bottom = 1
ra3.Stacking = prt.StackingRulesEnum.InlineLeftToRight
rt = New prt.RenderText
rt.Text = "[Fields!编号.Value]"
rt.Width = 15
rt.Style.Spacing.Bottom = 1
rt.Style.FontSize = 10.5
ra3.Children.Add(rt)
rt = New prt.RenderText
rt.Text = "[Fields!姓名.Value]"
rt.Width = 18
rt.Style.Spacing.Bottom = 1
rt.Style.FontSize = 10.5
ra3.Children.Add(rt)
ra3.DataBinding.DataSource = ra1.DataBinding.DataSource
ra1.Children.Add(ra3)

doc.body.Children.Add(ra1)
Doc.PageSetting.LeftMargin = 25 \'设置左边距
Doc.PageSetting.RightMargin = 15 \'设置右边距
Doc.PageSetting.TopMargin = 20 \'设置上边距
Doc.PageSetting.BottomMargin = 15 \'设置下边距

Tables("报名表").Sort = ""
doc.Preview()

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:wsxdwh
--  发布时间:2013/6/14 11:55:00
--  

请专家指教!

另请问怎么又出现窗口修改后不能保存?!!!


--  作者:Bin
--  发布时间:2013/6/14 12:06:00
--  
.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:wsxdwh
--  发布时间:2013/6/14 12:30:00
--  

谢谢!

现在还有一个问题 ,报表显示每个区的“教练”都是一样的,没有按区分开

[此贴子已经被作者于2013-6-14 12:53:10编辑过]

--  作者:wsxdwh
--  发布时间:2013/6/14 13:30:00
--  

请指教!

 

 

谢谢!

现在还有一个问题 ,报表显示每个区的“教练”都是一样的,没有按区分开

 

 

 


--  作者:wsxdwh
--  发布时间:2013/6/14 14:11:00
--  

谢谢!

现在还有一个问题 ,报表显示每个区的“教练”都是一样的,没有按区分组显示。

 

 

请专家指教! 

[此贴子已经被作者于2013-6-14 14:11:21编辑过]

--  作者:zaianda
--  发布时间:2013/6/14 14:42:00
--  
请问你在一楼贴的代码是放在哪里的,找不到呢。
--  作者:wsxdwh
--  发布时间:2013/6/14 14:46:00
--  

导航栏---项目编排----报名表----参赛队员表


--  作者:Bin
--  发布时间:2013/6/14 14:49:00
--  
以下是引用wsxdwh在2013-6-14 14:11:00的发言:

谢谢!

现在还有一个问题 ,报表显示每个区的“教练”都是一样的,没有按区分组显示。

 

 

请专家指教! 

[此贴子已经被作者于2013-6-14 14:11:21编辑过]

你原本的代码也没分区的意图 如果想分区那么就不可以使用这种方式实现了. 使用手动循环 一个个单元格赋值的方法做这样才能控制.
--  作者:狐狸爸爸
--  发布时间:2013/6/14 15:06:00
--  

是的,只能编码实现,不能用绑定的,我印象中之前给你写过类似的。

 

细节自己调整:

 

Dim doc As New PrintDoc \'定义一个报表
Dim js As String = "海模"
Dim s As String
Dim rt As prt.RenderText
rt = new prt.RenderText
rt.text = "2013年" & js & "地区代表队"
doc.body.Children.add(rt)
For Each dq As String In DataTables("报名表").GetUniqueValues("竞赛名称 = \'" & js & "\'","区")
    rt = new prt.RenderText
    rt.text = vbcrlf & "地区:" & dq
    doc.body.Children.add(rt)
   
    s = ""
    For Each nm As String In DataTables("报名表").GetUniqueValues("竞赛名称 = \'" & js & "\' And 区 = \'" & dq & "\'","领队")
        s  = s & nm & ","
    Next
    rt = new prt.RenderText
    rt.text = "领队:" & s.trim(",")
    doc.body.Children.add(rt)
   
    s = ""
    For Each nm As String In DataTables("报名表").GetUniqueValues("竞赛名称 = \'" & js & "\' And 区 = \'" & dq & "\'","教练")
        s  = s &  nm & ","
    Next
    rt = new prt.RenderText
    rt.text = "教练:" & s.trim(",")
    doc.body.Children.add(rt)
   
    Dim drs As List(of DataRow) =   DataTables("报名表").Select("竞赛名称 = \'" & js & "\' And 区 = \'" & dq & "\'")
    Dim tb As new prt.RenderTable
    For i As Integer = 0 To drs.count -1 Step 5 \'每行五个队员
        For n As Integer = i To math.Min(drs.count -1,i + 4) \'打印这五个队员
            tb.cells(n \\ 5, (n Mod 5) * 2).text = drs(n)("编号")
            tb.cells(n \\ 5, (n Mod 5) * 2 + 1).text = drs(n)("姓名")
        Next
    Next
    doc.body.Children.add(tb)
Next
doc.Preview() \'预览

[此贴子已经被作者于2013-6-14 15:15:07编辑过]