Foxtable(狐表)用户栏目专家坐堂 → 本年最后一次Bug报告(专业报表)


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

主题:本年最后一次Bug报告(专业报表)

帅哥哟,离线,有人找我吗?
蓝色理想
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:561 积分:4284 威望:0 精华:0 注册:2014/6/12 19:15:00
本年最后一次Bug报告(专业报表)  发帖心情 Post By:2014/12/31 13:00:00 [显示全部帖子]

Bug描述:在合并的表格中,若行数超过表格可容纳数,则会自动在最后一行增行,导致表格混乱。

见下图:

 


图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:二尾狐 帖子:561 积分:4284 威望:0 精华:0 注册:2014/6/12 19:15:00
  发帖心情 Post By:2014/12/31 13:02:00 [显示全部帖子]

为了增加行数,左侧 最后一行几个字是故意添加上去的。

增加一行的结果就是,出纳核销下面莫名其妙的多了一行。。。。。。。。。。


 回到顶部
帅哥哟,离线,有人找我吗?
蓝色理想
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:561 积分:4284 威望:0 精华:0 注册:2014/6/12 19:15:00
  发帖心情 Post By:2014/12/31 13:02:00 [显示全部帖子]

在中间的空白部分,录入多行也有一样的现象发生

 

 

请问如何解决?


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


加好友 发短信
等级:二尾狐 帖子:561 积分:4284 威望:0 精华:0 注册:2014/6/12 19:15:00
  发帖心情 Post By:2015/1/7 13:20:00 [显示全部帖子]

以下是具体例子,请甜版帮忙看看
sql server数据库,无法分离上传


'''


'----------------------------------打印模块开始-----------------------------------
Dim doc As New PrintDoc  '定义一个报表
Doc.PageSetting.PaperKind = 9 '设定为A4纸
Doc.PageSetting.Landscape = True '设置A4横向
Doc.PageSetting.LeftMargin = 5 '设置左边距
Doc.PageSetting.RightMargin = 5 '设置右边距
Doc.PageSetting.BottomMargin = 5 '设置上边距
Doc.PageSetting.BottomMargin = 5 '设置下边距
Doc.AutoRotate = True '禁止自动旋转打印内容  注意:奇怪的现象,必须设置能自动旋转打印内容,不预览直接打印时才能横向打印。

Dim rt As New prt.RenderTable() '定义一个表格对象
rt.X = 46  '表格左部位置
rt.Y = 55 '表格上部位置
rt.Width=240 '设置表格总宽度
doc.Body.Children.Add(rt) '将表格对象加入到报表中
rt.Style.GridLines.All = New prt.Linedef  '设置网格线
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '所有文本内容水平居中对齐
rt.Style.TextAlignVert = prt.AlignHorzEnum.Center '所有文本内容垂直居中对齐
rt.Style.Font  = New Font("宋体", 13,FontStyle.Bold)  ' FontStyle.Regular) '设置字体


rt.CellStyle.Spacing.All = 0 '内容距离网格线1毫米
'设置主标题
rt.Cells(0,0).text = "新疆缔森地产开发有限公司资金支付审批单"
rt.Cells(0,0).SpanCols = 8 '合并第一行全部单元格,用于显示主标题
rt.Cells(0,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '主标题居中
rt.Cells(0,0).Style.Font = New Font("宋体", 18, FontStyle.Bold) '设置主标题字体
rt.Rows(0).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第一行的网格线
'设置副标题
'       rt.Cells(1,0).text = Format(Date.Today,"yyyy年MM月dd日")    '"2014年7月22日" '通过左边空格数量来调整副标题位置
rt.Cells(1,0).text = Format(Date.Today,"yyyy")  & " 年 "  &  Format(Date.Today,"MM")  & " 月 "  & Format(Date.Today,"dd")  & " 日 "       '"2014年7月22日" '通过左边空格数量来调整副标题位置
rt.Cells(1,0).Style.Font = New Font("宋体", 13, FontStyle.Regular)
rt.Cells(1,0).SpanCols = 8 '合并地二行全部单元格,用于显示副标题
rt.Cells(1,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '副标题内容居中
rt.Rows(1).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第二行的网格线
rt.Rows(1).Style.Borders.Bottom = New prt.Linedef  '恢复第二行底端的网格线
rt.Rows(1).Height = 8 '设置第二行的高度,拉开和表格主体的距离.
'设置列标题

'rt.cells(2,0).SpanCols = 3  '合并第一行前三个单元格
'rt.Cells(2,3).SpanCols = 3  '合并第一行最后三个单元格
rt.cells(2,0).Text = "支 付 要 求"  '设置第一行第一个单元格的内容
rt.cells(3,0).SpanRows = 8 '向下合并8行

Dim rpar2 As New prt.RenderParagraph() '定义一个段落对象
Dim f2 As New Font("宋体", 12,FontStyle.Regular)
rpar2.Style.Spacing.Top = 2 '设置段落上间距
rpar2.Content.AddText("  1、报销凭证为会计档案的总要组成部分,保存15年以上,请仔细粘贴,务使牢固,便于翻阅。"  & vbcrlf , f2)
rpar2.Content.AddText( "  2、按从上到下,从左至右的顺序粘贴。"   & vbcrlf , f2)
rpar2.Content.AddText( "  3、审批权限人必须按照财务支出审批制度规定的权限范围签批,出纳有权拒绝办理。"   & vbcrlf , f2)
rpar2.Content.AddText( "  4、出纳办完资金支付时,要在借款金额栏加盖现金付讫印章。"   & vbcrlf , f2)
rpar2.Content.AddText( "  5、本单为机打申请单,申请内容手写无效。"  & vbcrlf , f2)

rpar2.Style.TextAlignHorz = prt.AlignHorzEnum.Left
rpar2.Style.Padding.All = 2
Dim ra2 As prt.RenderArea
ra2 = rt.Cells(3,0).Area '引用单元格的容器
ra2.Children.Add(rpar2) '加入图片到RenderArea中



rt.cells(2,1).Text = "部 门"
rt.cells(2,2).SpanCols=2
rt.cells(2,4).Text = "经办人"
rt.cells(2,6).Text = "按审核权限签章"
rt.cells(2,6).SpanCols=2

rt.Cells(3,1).Text ="报销金额"
rt.cells(3,2).SpanCols=2
rt.cells(3,2).Text = CUMoney(e.Form.Controls("TextBox2").text  *10000)
rt.Cells(3,2).Style.Font = New Font("宋体", 13, FontStyle.Regular)
rt.cells(3,2).Style.TextAlignHorz =prt.AlignHorzEnum.Left
rt.Cells(3,4).Text ="小 写"
rt.Cells(3,5).Text =  "¥" &  Format( e.Form.Controls("TextBox2").text  *10000,"#,##0.00")
rt.Cells(3,5).Style.Font = New Font("宋体", 13, FontStyle.Regular)
rt.Cells(3,5).Style.TextAlignHorz = prt.AlignHorzEnum.Left

rt.Cells(3,6).Text ="部门审核"
rt.Cells(4,6).Text ="会计稽核"
rt.Cells(5,6).Text ="财务经理"
rt.Cells(6,6).Text ="财务总监"
rt.Cells(7,6).Text ="分管财务" & vbcrlf & "副总经理"
rt.Cells(8,6).Text ="总 经 理"
rt.Cells(9,6).Text ="董 事 长"

rt.Cells(9,1).Text ="出纳核销"
rt.cells(9,2).SpanCols=4

'设置中间大矩形区域
rt.cells(4,1).SpanCols=5
rt.cells(4,1).SpanRows = 5

'看看付款比例是否超过警戒值,在资金申请单上发出警告
Dim AttationStr  As String = ""
If  Tables("日期可调资金计划表").Current("当前要付支付后比例") >= 0.85 Then
    AttationStr =  "  ★★★ 注意 付款比例已超过85%  ★★★"
End If

'填写中间部分内容
rt.Cells(4,1).Style.TextAlignHorz =prt.AlignHorzEnum.Left
rt.Cells(4,1).Style.TextAlignVert=prt.AlignVertEnum.Top
rt.Cells(4,1).Style.LineSpacing= 120 '设置行间距150为1.5倍行间距
rt.Cells(4,1).Style.TextAlignVert = prt.AlignVertEnum.Center
rt.Cells(4,1).Style.Font = New Font("宋体", 12, FontStyle.Regular)

Dim rpar As New prt.RenderParagraph() '定义一个段落对象
Dim f As New Font("宋体", 12,FontStyle.Bold)
Dim ff As New Font("宋体", 12,FontStyle.Regular)





 回到顶部
帅哥哟,离线,有人找我吗?
蓝色理想
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:561 积分:4284 威望:0 精华:0 注册:2014/6/12 19:15:00
  发帖心情 Post By:2015/1/7 13:20:00 [显示全部帖子]

'看看两行能否放得下,放不下就加个小尾巴
Dim TailStr  As String = ""
If  len(Tables("日期可调资金计划表").Current("合同名称"))>80 Then
    TailStr="……"
    rpar.Style.Spacing.Top = 0.5 '设置段落上间距
Else
    rpar.Style.Spacing.Top = 3  '设置段落上间距
End If

'rpar.Content.AddText("  注 意:" , f)
'rpar.Content.AddText("这是资金汇总申请单,明细付款单附后。"   & vbcrlf  & vbcrlf)
rpar.Content.AddText("  开发项目及产品:", f)
rpar.Content.AddText(Tables("日期可调资金计划表").Current("开发项目")  & "--"  & Tables("日期可调资金计划表").Current("开发产品")  & vbcrlf  )
rpar.Content.AddText("  乙方情况:", f)
rpar.Content.AddText(  Tables("日期可调资金计划表").Current("乙方") )
If  Tables("日期可调资金计划表").Current.IsNull("挂靠单位") = False Then
    rpar.Content.AddText( "--" & Tables("日期可调资金计划表").Current("挂靠单位") &  vbcrlf)
Else
    rpar.Content.AddText(   vbcrlf  )
End If
rpar.Content.AddText("  合同名称:", f)
rpar.Content.AddText( left(e.Form.Controls("TextBox1").text ,80) & TailStr & vbcrlf,ff)
rpar.Content.AddText("  本次申请金额:", f)
rpar.Content.AddText(format(e.Form.Controls("TextBox2").text*1,"#,##0.00") & "万元"  & vbcrlf ,ff )

Dim ra As prt.RenderArea
ra = rt.Cells(4,1).Area '引用单元格的容器
ra.Children.Add(rpar) '加入图片到RenderArea中

For i As Integer = 2 To 9
    rt.Rows(i).Height = 10  '设置行高
Next

rt.Cols(0).Width =50 '设置第1列列宽  支付要求
rt.Cols(1).Width =22 '设置第2列列宽  部门
rt.Cols(2).Width =27 '设置第3列列宽
rt.Cols(4).Width =20 '设置第4列列宽  经办人
rt.Cols(5).Width =42 '设置第5列列宽
rt.Cols(6).Width =22 '设置第6列列宽  审核人
rt.Cols(7).Width =35 '设置第7列列宽

'设置水印
Dim rt2 As prt.RenderText '定义一个文本对象
rt2 = New prt.RenderText '设置文本对象的内容
rt2.Text = "缔森地产" '设置文本内容
rt2.Width = "Parent.Width" '宽度等于页面宽度
rt2.Height = "Parent.Height" '高度等于页面高度
rt2.Style.TextAngle = 0 '旋转45度
rt2.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中对齐
rt2.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中对齐
' rt2.Style.FontSize = 140 '字体大小为8磅
rt2.Style.Font = New Font("宋体", 140, FontStyle.Bold)
rt2.Style.TextColor = Color.Yellow '文本颜色为灰色
Doc.WaterMark = rt2 '作为水印使用


'Doc.Preview() '预览报表
Doc.Print


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


加好友 发短信
等级:二尾狐 帖子:561 积分:4284 威望:0 精华:0 注册:2014/6/12 19:15:00
  发帖心情 Post By:2015/1/7 13:21:00 [显示全部帖子]

最简单的测试,只要这行

rpar2.Content.AddText( "  5、本单为机打申请单,申请内容手写无效。"  & vbcrlf , f2)

随便加上10-20个字,故障就出现了

 回到顶部
帅哥哟,离线,有人找我吗?
蓝色理想
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:561 积分:4284 威望:0 精华:0 注册:2014/6/12 19:15:00
  发帖心情 Post By:2015/1/7 15:37:00 [显示全部帖子]

'''


'----------------------------------打印模块开始-----------------------------------
Dim doc As New PrintDoc  '定义一个报表
Doc.PageSetting.PaperKind = 9 '设定为A4纸
Doc.PageSetting.Landscape = True '设置A4横向
Doc.PageSetting.LeftMargin = 5 '设置左边距
Doc.PageSetting.RightMargin = 5 '设置右边距
Doc.PageSetting.BottomMargin = 5 '设置上边距
Doc.PageSetting.BottomMargin = 5 '设置下边距
Doc.AutoRotate = True '禁止自动旋转打印内容  注意:奇怪的现象,必须设置能自动旋转打印内容,不预览直接打印时才能横向打印。

Dim rt As New prt.RenderTable() '定义一个表格对象
rt.X = 46  '表格左部位置
rt.Y = 55 '表格上部位置
rt.Width=240 '设置表格总宽度
doc.Body.Children.Add(rt) '将表格对象加入到报表中
rt.Style.GridLines.All = New prt.Linedef  '设置网格线
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '所有文本内容水平居中对齐
rt.Style.TextAlignVert = prt.AlignHorzEnum.Center '所有文本内容垂直居中对齐
rt.Style.Font  = New Font("宋体", 13,FontStyle.Bold)  ' FontStyle.Regular) '设置字体


rt.CellStyle.Spacing.All = 0 '内容距离网格线1毫米
'设置主标题
rt.Cells(0,0).text = "新疆缔森地产开发有限公司资金支付审批单"
rt.Cells(0,0).SpanCols = 8 '合并第一行全部单元格,用于显示主标题
rt.Cells(0,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '主标题居中
rt.Cells(0,0).Style.Font = New Font("宋体", 18, FontStyle.Bold) '设置主标题字体
rt.Rows(0).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第一行的网格线
'设置副标题
'       rt.Cells(1,0).text = Format(Date.Today,"yyyy年MM月dd日")    '"2014年7月22日" '通过左边空格数量来调整副标题位置
rt.Cells(1,0).text = Format(Date.Today,"yyyy")  & " 年 "  &  Format(Date.Today,"MM")  & " 月 "  & Format(Date.Today,"dd")  & " 日 "       '"2014年7月22日" '通过左边空格数量来调整副标题位置
rt.Cells(1,0).Style.Font = New Font("宋体", 13, FontStyle.Regular)
rt.Cells(1,0).SpanCols = 8 '合并地二行全部单元格,用于显示副标题
rt.Cells(1,0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '副标题内容居中
rt.Rows(1).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第二行的网格线
rt.Rows(1).Style.Borders.Bottom = New prt.Linedef  '恢复第二行底端的网格线
rt.Rows(1).Height = 8 '设置第二行的高度,拉开和表格主体的距离.
'设置列标题

'rt.cells(2,0).SpanCols = 3  '合并第一行前三个单元格
'rt.Cells(2,3).SpanCols = 3  '合并第一行最后三个单元格
rt.cells(2,0).Text = "支 付 要 求"  '设置第一行第一个单元格的内容
rt.cells(3,0).SpanRows = 8 '向下合并8行

Dim rpar2 As New prt.RenderParagraph() '定义一个段落对象
Dim f2 As New Font("宋体", 12,FontStyle.Regular)
rpar2.Style.Spacing.Top = 2 '设置段落上间距
rpar2.Content.AddText("  1、报销凭证为会计档案的总要组成部分,保存15年以上,请仔细粘贴,务使牢固,便于翻阅。"  & vbcrlf , f2)
rpar2.Content.AddText( "  2、按从上到下,从左至右的顺序粘贴。"   & vbcrlf , f2)
rpar2.Content.AddText( "  3、审批权限人必须按照财务支出审批制度规定的权限范围签批,出纳有权拒绝办理。"   & vbcrlf , f2)
rpar2.Content.AddText( "  4、出纳办完资金支付时,要在借款金额栏加盖现金付讫印章。"   & vbcrlf , f2)
rpar2.Content.AddText( "  5、本单为机打申请单,申请内容手写无效。这里是故意添加的内容"  & vbcrlf , f2)

rpar2.Style.TextAlignHorz = prt.AlignHorzEnum.Left
rpar2.Style.Padding.All = 2
Dim ra2 As prt.RenderArea
ra2 = rt.Cells(3,0).Area '引用单元格的容器
ra2.Children.Add(rpar2) '加入图片到RenderArea中



rt.cells(2,1).Text = "部 门"
rt.cells(2,2).SpanCols=2
rt.cells(2,4).Text = "经办人"
rt.cells(2,6).Text = "按审核权限签章"
rt.cells(2,6).SpanCols=2

rt.Cells(3,1).Text ="报销金额"
rt.cells(3,2).SpanCols=2
rt.cells(3,2).Text = CUMoney(10000)
rt.Cells(3,2).Style.Font = New Font("宋体", 13, FontStyle.Regular)
rt.cells(3,2).Style.TextAlignHorz =prt.AlignHorzEnum.Left
rt.Cells(3,4).Text ="小 写"
rt.Cells(3,5).Text =  "¥" &  Format( 10000,"#,##0.00")
rt.Cells(3,5).Style.Font = New Font("宋体", 13, FontStyle.Regular)
rt.Cells(3,5).Style.TextAlignHorz = prt.AlignHorzEnum.Left

rt.Cells(3,6).Text ="部门审核"
rt.Cells(4,6).Text ="会计稽核"
rt.Cells(5,6).Text ="财务经理"
rt.Cells(6,6).Text ="财务总监"
rt.Cells(7,6).Text ="分管财务" & vbcrlf & "副总经理"
rt.Cells(8,6).Text ="总 经 理"
rt.Cells(9,6).Text ="董 事 长"

rt.Cells(9,1).Text ="出纳核销"
rt.cells(9,2).SpanCols=4

'设置中间大矩形区域
rt.cells(4,1).SpanCols=5
rt.cells(4,1).SpanRows = 5

'看看付款比例是否超过警戒值,在资金申请单上发出警告
Dim AttationStr  As String = ""

'填写中间部分内容
rt.Cells(4,1).Style.TextAlignHorz =prt.AlignHorzEnum.Left
rt.Cells(4,1).Style.TextAlignVert=prt.AlignVertEnum.Top
rt.Cells(4,1).Style.LineSpacing= 120 '设置行间距150为1.5倍行间距
rt.Cells(4,1).Style.TextAlignVert = prt.AlignVertEnum.Center
rt.Cells(4,1).Style.Font = New Font("宋体", 12, FontStyle.Regular)

Dim rpar As New prt.RenderParagraph() '定义一个段落对象
Dim f As New Font("宋体", 12,FontStyle.Bold)
Dim ff As New Font("宋体", 12,FontStyle.Regular)

'看看两行能否放得下,放不下就加个小尾巴
Dim TailStr  As String = ""
rpar.Style.Spacing.Top = 0.5 '设置段落上间距

'rpar.Content.AddText("  注 意:" , f)
'rpar.Content.AddText("这是资金汇总申请单,明细付款单附后。"   & vbcrlf  & vbcrlf)
rpar.Content.AddText("  开发项目及产品:", f)
rpar.Content.AddText("开发项目哦哦哦哦哦哦哦哦"  & vbcrlf  )
rpar.Content.AddText("  乙方情况:", f)
rpar.Content.AddText(  "乙方测试测试测试测试" )
rpar.Content.AddText(   vbcrlf  )

rpar.Content.AddText("  合同名称:", f)
rpar.Content.AddText( TailStr & vbcrlf,ff)
rpar.Content.AddText("  本次申请金额:", f)
rpar.Content.AddText(format(1,"#,##0.00") & "万元"  & vbcrlf ,ff )

Dim ra As prt.RenderArea
ra = rt.Cells(4,1).Area '引用单元格的容器
ra.Children.Add(rpar) '加入图片到RenderArea中

For i As Integer = 2 To 9
    rt.Rows(i).Height = 10  '设置行高
Next

rt.Cols(0).Width =50 '设置第1列列宽  支付要求
rt.Cols(1).Width =22 '设置第2列列宽  部门
rt.Cols(2).Width =27 '设置第3列列宽
rt.Cols(4).Width =20 '设置第4列列宽  经办人
rt.Cols(5).Width =42 '设置第5列列宽
rt.Cols(6).Width =22 '设置第6列列宽  审核人
rt.Cols(7).Width =35 '设置第7列列宽

'设置水印
Dim rt2 As prt.RenderText '定义一个文本对象
rt2 = New prt.RenderText '设置文本对象的内容
rt2.Text = "缔森地产" '设置文本内容
rt2.Width = "Parent.Width" '宽度等于页面宽度
rt2.Height = "Parent.Height" '高度等于页面高度
rt2.Style.TextAngle = 0 '旋转45度
rt2.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中对齐
rt2.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中对齐
' rt2.Style.FontSize = 140 '字体大小为8磅
rt2.Style.Font = New Font("宋体", 140, FontStyle.Bold)
rt2.Style.TextColor = Color.Yellow '文本颜色为灰色
Doc.WaterMark = rt2 '作为水印使用


Doc.Preview() '预览报表

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


加好友 发短信
等级:二尾狐 帖子:561 积分:4284 威望:0 精华:0 注册:2014/6/12 19:15:00
  发帖心情 Post By:2015/1/7 15:37:00 [显示全部帖子]

搞定,这个可以直接运行
烦劳甜版帮我看看到底哪里出了问题?

 回到顶部
帅哥哟,离线,有人找我吗?
蓝色理想
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:561 积分:4284 威望:0 精华:0 注册:2014/6/12 19:15:00
  发帖心情 Post By:2015/1/7 16:46:00 [显示全部帖子]

自己顶一下           ^_^

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


加好友 发短信
等级:二尾狐 帖子:561 积分:4284 威望:0 精华:0 注册:2014/6/12 19:15:00
  发帖心情 Post By:2015/1/7 16:55:00 [显示全部帖子]

搞定,多谢甜版指点


好像是这句出的问题,我以前的代码似乎多合并了一行,把 8 改成7后,问题解决 

rt.cells(3,0).SpanRows = 7 '向下合并8行


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