以文本方式查看主题

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

--  作者:老鼠
--  发布时间:2019/8/14 8:35:00
--  [求助]专业报表代码

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


目前代码如下:
Dim doc As New PrintDoc    \'定义一个报表
doc.PageSetting.Width = 121 \'纸张宽度为121毫米
doc.PageSetting.Height = 89 \'纸张高度为89毫米
Dim rt As New prt.RenderText      \'定义一个文本对象
Doc.PageSetting.LeftMargin = 5 \'设置左边距
Doc.PageSetting.RightMargin = 7 \'设置右边距
Doc.PageSetting.TopMargin =9 \'设置上边距
Doc.PageSetting.BottomMargin = 10 \'设置下边距
Dim ra As New prt.RenderArea
ra.Style.Spacing.Bottom = 3
ra.DataBinding.DataSource = BindTables("在职人员")        \'将容器绑定到在职人员
rt.Text = "[Fields!档案编码.Value]" 
ra.Children.Add(rt)       \'将打印对象添加到容器中
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中
rt.Style.FontBold = True \'字体加粗
rt.Style.FontSize = 16 \'字体大小为16磅
rt = New prt.RenderText     \'创建另一个文本对象
rt.Text= "[Fields!姓名.Value]" 
ra.Children.Add(rt)       \'将打印对象添加到容器中
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中
rt.Style.FontBold = True \'字体加粗
rt.Style.FontSize = 16 \'字体大小为16磅
rt = New prt.RenderText     \'创建另一个文本对象
rt.Text = "[Fields!属性.Value]" 
ra.Children.Add(rt)       \'将打印对象添加到容器中
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中
rt.Style.FontSize = 10 \'字体大小为16磅
doc.body.Children.Add(ra)       \'将文本对象加入到报表
doc.Preview()     \'预览

--  作者:老鼠
--  发布时间:2019/8/14 8:43:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:职工档案编码管理系统.table


--  作者:有点蓝
--  发布时间:2019/8/14 10:00:00
--  
大概这样,细节自行调整

Dim doc As New PrintDoc    \'定义一个报表
doc.PageSetting.Width = 121 \'纸张宽度为121毫米
doc.PageSetting.Height = 89 \'纸张高度为89毫米
Dim rt As New prt.RenderText      \'定义一个文本对象
Doc.PageSetting.LeftMargin = 5 \'设置左边距
Doc.PageSetting.RightMargin = 7 \'设置右边距
Doc.PageSetting.TopMargin =9 \'设置上边距
Doc.PageSetting.BottomMargin = 10 \'设置下边距
Dim ra As New prt.RenderArea
ra.Style.Spacing.Bottom = 3

Dim rm As prt.RenderEmpty \'定一个空对象
For i As Integer = 0 To Tables("在职人员").Rows.Count - 1 Step 4
    ra = New prt.RenderArea
    rm = new prt.RenderEmpty \'定义一个新的空对象
    rm.BreakBefore = prt.BreakEnum.Page \'打印前换页
    doc.Body.Children.Add(rm) \'加入到报表中
    For j As Integer = 0 To 3
        Dim x As Integer = 10 + j*25
        Dim r As Row = Tables("在职人员").Rows(i+j)
        rt = New prt.RenderText
        rt.Text = r("档案编码")
        rt.x=x
        rt.y=10
        ra.Children.Add(rt)
        rt = New prt.RenderText
        rt.Text = r("姓名")
        rt.Style.TextAngle = -90
        rt.x=x
        rt.y=25
        ra.Children.Add(rt)
        rt = New prt.RenderText
        rt.Text = "(" & r("属性") & ")"
        rt.x=x
        rt.y=60
        ra.Children.Add(rt)
    Next
    doc.body.Children.Add(ra)
Next
doc.Preview()     \'预览

--  作者:老鼠
--  发布时间:2019/8/14 10:45:00
--  
首先感谢老师的指导!可是名字没有坚排正面效果。这个名字这里有其它办法吗?
图片点击可在新窗口打开查看此主题相关图片如下:无标题.jpg
图片点击可在新窗口打开查看这是生成的效果图。

--  作者:有点蓝
--  发布时间:2019/8/14 11:11:00
--  
去掉旋转代码,把姓名里每一个字符后面加一个换行符:http://www.foxtable.com/webhelp/topics/1338.htm
--  作者:老鼠
--  发布时间:2019/8/15 8:19:00
--  
老师好!我还是没有学习到。
   ra.Children.Add(rt)
        rt = New prt.RenderText
        rt.Text = r("姓名")
        rt.Style.WordWrap = True
        rt.Style.FontBold = True    \'字体加粗
        rt.Style.FontSize = 22      \'字体大小为22磅
        rt.x=x
        rt.y=25
上面是我改的,但是不完善;不知道这个自动换行,如何实现?还请老师指点!!!

--  作者:有点蓝
--  发布时间:2019/8/15 8:32:00
--  
例如

Dim s As String = "张三四"
For i As Integer = s.Length - 1 To 1 Step -1
    s = s.Insert(i,vbcrlf)
Next
msgbox( s)

--  作者:老鼠
--  发布时间:2019/8/15 10:29:00
--  
感谢有点蓝老师!你发的例子我已经理解,但加入到专业报表中就不知道如何下手?按自己的理解加入进去后提示如图:
图片点击可在新窗口打开查看此主题相关图片如下:120.jpg
图片点击可在新窗口打开查看下面是我自己加入部分:

 rt.Text = r("姓名")
        Dim h As String = r("姓名")
        For k As Integer = h.Length -1 To 1 Step -1  \'返回字符长度及指定位置
            h = h.Insert(k.vbcrlf)    \'在指定位置


--  作者:有点蓝
--  发布时间:2019/8/15 10:56:00
--  
Dim s As String = r("姓名")
For i As Integer = s.Length - 1 To 1 Step -1
    s = s.Insert(i,vbcrlf)
Next
rt.Text = s

建议包装为内部函数使用

--  作者:老鼠
--  发布时间:2019/8/15 11:18:00
--  
谢谢老师的热心指点!但不理解的是:为什么这时的代码后面要加:Next