以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  打印报表问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=81289)

--  作者:lake163
--  发布时间:2016/2/23 17:33:00
--  打印报表问题
以下代码:打印当前表、选定行的WORD格式报表
With Tables("XXXX")

    For i As Integer = .TopPosition To .BottomPosition     \'选定行

        CurrentTable.Position = i

        Dim dr  = CurrentTable.Rows(i)

        Dim xm = dr("姓名")

        Dim fl As String = ProjectPath & "Reports\\"  & xm & ".doc"

        Dim tm As String  = ProjectPath & "Attachments\\.doc" \'指定模板文件

        Dim wrt As New WordReport(Tables("XXXX"),tm,fl) \'定义一个WordReport

        wrt.Build() \'生成报表

        wrt.Quit() \'显示报表

    Next

    MessageBox.Show("文件已生成")

End With


问题:

当选定一行、多行时都没有问题

但是当选定所有行时,在第一个循环时 运行到 wrt.Build() 时候很长,而且经常出错。

而将循环起始从第一行调到第二行,则没有这种情况,即将其中的两句改为:

        CurrentTable.Position = i+1

        Dim dr  = CurrentTable.Rows(i+1)


请高手指点,是什么原因啊?


[此贴子已经被作者于2016/2/23 17:34:23编辑过]

--  作者:大红袍
--  发布时间:2016/2/23 17:46:00
--  

试试这样

 

With Tables("XXXX")
    For i As Integer = .TopPosition To .BottomPosition     \'选定行
       
        Dim dr As Row = .Rows(i)
       
        Dim xm = dr("姓名")
       
        Dim fl As String = ProjectPath & "Reports\\"  & xm & ".doc"
       
        Dim tm As String  = ProjectPath & "Attachments\\表.doc" \'指定模板文件
       
        Dim wrt As New WordReport(Tables("XXXX"),tm,fl) \'定义一个WordReport
       
        wrt.BuildOne(dr) \'生成报表
       
        wrt.Quit() \'显示报表
       
    Next
   
    MessageBox.Show("文件已生成")
   
End With