以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请老师指教,错误在哪里?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=7183)

--  作者:erdbeer
--  发布时间:2010/5/22 23:37:00
--  请老师指教,错误在哪里?


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

Dim doc As New PrintDoc \'定义一个报表
Dim rt1 As New prt.RenderText \'定义一个箱号文本对象
Dim rt2 As New prt.RenderText \'定义一个件数文本对象
Dim rt3 As New prt.RenderText \'定义一个区域文本对象
Dim rt4 As New prt.RenderText \'定义一个客户代码文本对象
Dim Count As Integer = Tables("在库明细").Current("件数")
doc.PageSetting.Width = 102 \'纸张宽度为102毫米
doc.PageSetting.Height = 76 \'纸张高度为76毫米

For i As Integer =1 To Count
    rt1.Text =  Tables("在库明细").Current("起始箱号") + Count - 1
    rt1.Style.Font = New Font("宋体", 36, FontStyle.Bold) \'设置字体
    rt1.Width = "Auto" \'自动设置宽度
    rt1.X =10 \'指定水平位置
    rt1.y =5 \' 指定垂直位置
    rt1.Style.Borders.All = New prt.Linedef(0.3, Color.black) \'设置边框
    rt2.Text =  Tables("在库明细").Current("件数")
    rt2.Width = "Auto" \'自动设置宽度
    rt2.X =10\'指定水平位置
    rt2.y =25\'指定垂直位置
    rt2.Style.Borders.All = New prt.Linedef(0.3, Color.black) \'设置边框
    doc.Body.Children.Add(rt1) \'将文本对象加入到报表
    doc.Body.Children.Add(rt2) \'将文本对象加入到报表
    Count=Count-1
    doc.Preview() \'预览
Next

 

专业报表中的代码执行后,出现这个错误提示,请老师指教,谢谢!


--  作者:狐狸爸爸
--  发布时间:2010/5/22 23:42:00
--  

Dim doc As New PrintDoc \'定义一个报表
Dim rt1 As prt.RenderText \'定义一个箱号文本对象
Dim rt2 As prt.RenderText \'定义一个件数文本对象
Dim rt3 As New prt.RenderText \'定义一个区域文本对象
Dim rt4 As New prt.RenderText \'定义一个客户代码文本对象
Dim Count As Integer = Tables("在库明细").Current("件数")
doc.PageSetting.Width = 102 \'纸张宽度为102毫米
doc.PageSetting.Height = 76 \'纸张高度为76毫米

For i As Integer =1 To Count

    rt1 = New prt.RenderText
    rt2 = New prt.RenderText
    rt1.Text =  Tables("在库明细").Current("起始箱号") + Count - 1
    rt1.Style.Font = New Font("宋体", 36, FontStyle.Bold) \'设置字体
    rt1.Width = "Auto" \'自动设置宽度
    rt1.X =10 \'指定水平位置
    rt1.y =5 \' 指定垂直位置
    rt1.Style.Borders.All = New prt.Linedef(0.3, Color.black) \'设置边框
    rt2.Text =  Tables("在库明细").Current("件数")
    rt2.Width = "Auto" \'自动设置宽度
    rt2.X =10\'指定水平位置
    rt2.y =25\'指定垂直位置
    rt2.Style.Borders.All = New prt.Linedef(0.3, Color.black) \'设置边框
    doc.Body.Children.Add(rt1) \'将文本对象加入到报表
    doc.Body.Children.Add(rt2) \'将文本对象加入到报表
    Count=Count-1
    doc.Preview() \'预览
Next

[此贴子已经被作者于2010-5-22 23:41:57编辑过]

--  作者:菜鸟foxtable
--  发布时间:2010/5/22 23:42:00
--  
doc.Preview() \'预览
感觉上这个放错地方了。。没细看/
--  作者:czy
--  发布时间:2010/5/22 23:53:00
--  

好象这样的循环打印有问题。

预览时不能清除上一次的值,不知真正打印时会不会这样。


--  作者:狐狸爸爸
--  发布时间:2010/5/23 0:20:00
--  
以下是引用czy在2010-5-22 23:53:00的发言:

好象这样的循环打印有问题。

预览时不能清除上一次的值,不知真正打印时会不会这样。

 

打印肯定也是这样的


--  作者:erdbeer
--  发布时间:2010/5/23 0:26:00
--  
家里没有打印机,用虚拟打印机打出来的,就是像czy说的那样,有重叠,上次一的内容不能清空
--  作者:狐狸爸爸
--  发布时间:2010/5/23 0:33:00
--  

楼主,你每次打印都是同一个printDoc,结果当然是这样的。

 

要不重复,就得每次打印都创建一个新的PrintDoc:

 

For i As Integer =1 To Count
     Dim doc As New PrintDoc \'定义一个报表
     Dim rt1 As New prt.RenderText \'定义一个箱号文本对象
     Dim rt2 As New prt.RenderText \'定义一个件数文本对象
     Dim Count As Integer = Tables("在库明细").Current("件数")
     doc.PageSetting.Width = 102 \'纸张宽度为102毫米
     doc.PageSetting.Height = 76 \'纸张高度为76毫米

     rt1.Text =  Tables("在库明细").Current("起始箱号") + Count - 1
     rt1.Style.Font = New Font("宋体", 36, FontStyle.Bold) \'设置字体
     rt1.Width = "Auto" \'自动设置宽度
     rt1.X =10 \'指定水平位置
     rt1.y =5 \' 指定垂直位置
     rt1.Style.Borders.All = New prt.Linedef(0.3, Color.black) \'设置边框
     rt2.Text =  Tables("在库明细").Current("件数")
     rt2.Width = "Auto" \'自动设置宽度
     rt2.X =10\'指定水平位置
     rt2.y =25\'指定垂直位置
     rt2.Style.Borders.All = New prt.Linedef(0.3, Color.black) \'设置边框
     doc.Body.Children.Add(rt1) \'将文本对象加入到报表
     doc.Body.Children.Add(rt2) \'将文本对象加入到报表
     doc.Preview() \'预览
Next

 

或者

 

Dim doc As PrintDoc \'定义一个报表变量
Dim rt1 As prt.RenderText \'定义一个箱号文本对象变量
Dim rt2 As prt.RenderText \'定义一个件数文本对象变量
For i As Integer =1 To Count
     doc = New PrintDoc \'定义一个报表
     rt1 = New prt.RenderText \'定义一个箱号文本对象
     rt2 = New prt.RenderText \'定义一个件数文本对象
     Dim Count As Integer = Tables("在库明细").Current("件数")
     doc.PageSetting.Width = 102 \'纸张宽度为102毫米
     doc.PageSetting.Height = 76 \'纸张高度为76毫米

     rt1.Text =  Tables("在库明细").Current("起始箱号") + Count - 1
     rt1.Style.Font = New Font("宋体", 36, FontStyle.Bold) \'设置字体
     rt1.Width = "Auto" \'自动设置宽度
     rt1.X =10 \'指定水平位置
     rt1.y =5 \' 指定垂直位置
     rt1.Style.Borders.All = New prt.Linedef(0.3, Color.black) \'设置边框
     rt2.Text =  Tables("在库明细").Current("件数")
     rt2.Width = "Auto" \'自动设置宽度
     rt2.X =10\'指定水平位置
     rt2.y =25\'指定垂直位置
     rt2.Style.Borders.All = New prt.Linedef(0.3, Color.black) \'设置边框
     doc.Body.Children.Add(rt1) \'将文本对象加入到报表
     doc.Body.Children.Add(rt2) \'将文本对象加入到报表
     doc.Preview() \'预览
Next

 

 

另外你的循环语句中出现Count = Count- 1,是啥意思?这一句让人感觉很奇怪。

 

[此贴子已经被作者于2010-5-23 0:36:28编辑过]

--  作者:erdbeer
--  发布时间:2010/5/23 0:33:00
--  

 在doc.Print() 后面加上


    rt1.Text = ""
    rt2.Text = ""

 

应该就可以解决这个问题了


--  作者:狐狸爸爸
--  发布时间:2010/5/23 0:34:00
--  
看7楼,你还需要补补帮助文件,打打基本功。
--  作者:erdbeer
--  发布时间:2010/5/23 9:51:00
--  

学生刚刚开始学,确实是很多的不懂,还要恶补下帮助文件

循环语句中出现Count = Count- 1,是为了让打印的内容是流水号

可能是个菜鸟的土办法吧

 

在doc.Print() 后面加上 
    rt1.Text = ""
    rt2.Text = ""

虽然是不得法,也算是个土办法吧,呵呵,见笑了