以文本方式查看主题 - 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 --
|
||||
-- 作者:有点蓝 -- 发布时间: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 |