以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  本年最后一次Bug报告(专业报表)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=62412)

--  作者:蓝色理想
--  发布时间:2014/12/31 13:00:00
--  本年最后一次Bug报告(专业报表)

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

见下图:

 


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

--  作者:蓝色理想
--  发布时间:2014/12/31 13:02:00
--  

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

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


--  作者:蓝色理想
--  发布时间:2014/12/31 13:02:00
--  

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

 

 

请问如何解决?


--  作者:有点甜
--  发布时间:2014/12/31 15:05:00
--  

 不要设置最后一行的高度。

 

 不会做,就请上传具体例子测试。


--  作者:蓝色理想
--  发布时间: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)





--  作者:蓝色理想
--  发布时间: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


--  作者:蓝色理想
--  发布时间:2015/1/7 13:21:00
--  
最简单的测试,只要这行

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

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

--  作者:有点甜
--  发布时间:2015/1/7 14:18:00
--  
 请贴上可以直接运行的代码,或者可以运行的例子啊
--  作者:蓝色理想
--  发布时间: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() \'预览报表

--  作者:蓝色理想
--  发布时间:2015/1/7 15:37:00
--  
搞定,这个可以直接运行
烦劳甜版帮我看看到底哪里出了问题?