Foxtable(狐表)用户栏目专家坐堂 → [求助]专业报表代码


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

主题:[求助]专业报表代码

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


加好友 发短信
等级:小狐 帖子:366 积分:3658 威望:0 精华:0 注册:2008/11/2 21:50:00
[求助]专业报表代码  发帖心情 Post By: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()     '预览

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


加好友 发短信
等级:小狐 帖子:366 积分:3658 威望:0 精华:0 注册:2008/11/2 21:50:00
  发帖心情 Post By:2019/8/14 8:43:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:职工档案编码管理系统.table


 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110773 积分:563797 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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()     '预览

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


加好友 发短信
等级:小狐 帖子:366 积分:3658 威望:0 精华:0 注册:2008/11/2 21:50:00
  发帖心情 Post By:2019/8/14 10:45:00 [只看该作者]

首先感谢老师的指导!可是名字没有坚排正面效果。这个名字这里有其它办法吗?
图片点击可在新窗口打开查看此主题相关图片如下:无标题.jpg
图片点击可在新窗口打开查看这是生成的效果图。

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110773 积分:563797 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/14 11:11:00 [只看该作者]

去掉旋转代码,把姓名里每一个字符后面加一个换行符:http://www.foxtable.com/webhelp/topics/1338.htm

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


加好友 发短信
等级:小狐 帖子:366 积分:3658 威望:0 精华:0 注册:2008/11/2 21:50:00
  发帖心情 Post By: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
上面是我改的,但是不完善;不知道这个自动换行,如何实现?还请老师指点!!!

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110773 积分:563797 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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)

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


加好友 发短信
等级:小狐 帖子:366 积分:3658 威望:0 精华:0 注册:2008/11/2 21:50:00
  发帖心情 Post By: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)    '在指定位置


 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110773 积分:563797 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

建议包装为内部函数使用

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


加好友 发短信
等级:小狐 帖子:366 积分:3658 威望:0 精华:0 注册:2008/11/2 21:50:00
  发帖心情 Post By:2019/8/15 11:18:00 [只看该作者]

谢谢老师的热心指点!但不理解的是:为什么这时的代码后面要加:Next 

 回到顶部
总数 16 1 2 下一页