以文本方式查看主题

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

--  作者:cd_tdh
--  发布时间:2024/10/30 16:17:00
--  word报表问题
老师,我生多页word报表时,            
wrt.Replace("[负责人]", dr("姓名")) \'用代码替换负责人,第1页替换掉了没问题,第2页还是用到了第1页的dr("姓名"),请看看代码逻辑那儿有问题?制单人和复核人估计也是这个问题,只是目前制单人是一个,看不出来。
Dim rs As List(Of Row) = Tables("投标保函费用管理").GetCheckedRows
If rs.Count > 0 Then \'如果存在符合条件的行
    WaitShow() \'打开加载进度
    Dim tm As String = ProjectPath & "Attachments\\投标保函费用支付凭证.docx" \'指定模板文件
    Dim fl1 As String = ProjectPath & "Reports\\投标保函费用支付凭证.docx" \'指定目标文件
    Dim fl2 As String = ProjectPath & "Reports\\投标保函费用支付凭证.pdf" \'指定目标PDF文件
    Dim wrt As New WordReport(Tables("投标保函费用管理"), tm, fl1) \'定义一个WordReport
    For Each r As Row In rs \'逐行生成报表
        Dim dr As DataRow = DataTables("分支机构管理").sqlFind("[所属机构] = \'" & r("所属机构") & "\'") 
        If dr IsNot Nothing Then
            wrt.Replace("[负责人]", dr("姓名")) \'用代码替换负责人
        End If
        Dim dr1 As DataRow = DataTables("审核意见表").sqlFind("[审核部门] = \'财务部制单\' And [Id] = \'" & r("Id") & "\'")
        If dr1 IsNot Nothing Then
            wrt.Replace("[制单人]", dr1("审核人")) \'用代码替换制单人
        End If
        Dim dr2 As DataRow = DataTables("审核意见表").sqlFind("[审核部门] = \'财务部经理\' And [Id] = \'" & r("Id") & "\'")
        If dr2 IsNot Nothing Then
            wrt.Replace("[复核人]", dr2("审核人")) \'用代码替换复核人
        End If
        Dim dr3 As DataRow = DataTables("审核意见表").SQLFind("[表名称] = \'" & "投标保函费用管理" & "\' And [Id] = \'" & r("Id") & "\'", "审核日期 DESC")
        If dr3 IsNot Nothing Then
            wrt.ReplaceOne("[复核日期]", Format(dr3("审核日期"), "yyyy-MM-dd")) \'用代码替换制单人
        End If
        wrt.BuildOne(r)
        r.Checked = False
    Next
    wrt.SaveToPDF(fl2) \'保存为PDF文件
    wrt.Quit() \'退出
    Dim Proc As New Process \'打开PDF文件
    Proc.File = fl2
    Proc.Start()
    WaitClose() \'关闭加载进度
Else
    MessageBox.Show("请先勾选你需要打印的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
    Return
End If
[此贴子已经被作者于2024/10/30 16:27:28编辑过]

--  作者:cd_tdh
--  发布时间:2024/10/30 16:31:00
--  
找到问题了
wrt.Replace 改为 rt.ReplaceOne