Foxtable(狐表)用户栏目专家坐堂 → 多行分别赋值的问题


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

主题:多行分别赋值的问题

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


加好友 发短信
等级:狐精 帖子:3223 积分:21401 威望:0 精华:0 注册:2016/3/28 16:57:00
多行分别赋值的问题  发帖心情 Post By:2021/7/28 10:04:00 [只看该作者]

老师,有有个报表打印按钮,报表中涉及到从审核意见表中找到对应的订单(用Id来识别)的复核日期,投标保证金表中有Id,与审核意见表中的Id是对应关系,复核日期就是对应审核意见表中最后一次审核的日期,当选择多行时,复核日期这儿应该怎么写呢?

Dim rs As List(of Row) = Tables("打投标保证金").GetCheckedRows
If rs.Count > 0 Then  '如果存在符合条件的行

    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
    Dim dr As DataRow = DataTables("用户管理").SQLFind("[职务] = '财务部制单'")
    If dr IsNot Nothing Then
        wrt.Replace("[制单人]",dr("姓名"))  '用代码替换制单人
    End If
    Dim dr1 As DataRow = DataTables("用户管理").SQLFind("[职务] = '财务部经理'")
    If dr1 IsNot Nothing Then
        wrt.Replace("[复核人]",dr1("姓名"))  '用代码替换复核人
    End If

    Dim dr2 As DataRow = DataTables("审核意见表").SQLFind("[表名称] = '" & "打投标保证金" & "'","审核日期 DESC")
    If dr2 IsNot Nothing Then
        wrt.Replace("[复核日期]",dr2("审核日期"))  '用代码替换复核日期
    End If

    For Each  r As Row In rs '逐行生成报表
        wrt.BuildOne(r)
        r.Checked =False
    Next
    wrt.SaveToPDF(fl2) '保存为PDF文件
    wrt.Quit() '退出
    Dim Proc As New Process '打开PDF文件
    Proc.File = fl2
    Proc.Start()

[此贴子已经被作者于2021/7/28 10:06:45编辑过]

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/28 10:08:00 [只看该作者]

模板发上来看看


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


加好友 发短信
等级:狐精 帖子:3223 积分:21401 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/7/28 10:20:00 [只看该作者]

比如我勾选的第一条审核日期是2021.07.16,勾选的第二条审核日期是2021.07.20,截图如下,审核意见窗口是绑定到审核意见表的,两个表都有Id列对应

 


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

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


word报表中有个审核日期,需要每张报表对应的审核日期是通过审核意见表来找的

[此贴子已经被作者于2021/7/28 10:21:52编辑过]

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/28 10:23:00 [只看该作者]

Dim dr1 As DataRow = DataTables("用户管理").SQLFind("[职务] = '财务部经理'")
    If dr1 IsNot Nothing Then
        wrt.Replace("[复核人]",dr1("姓名"))  '用代码替换复核人
    End If


    For Each  r As Row In rs '逐行生成报表

    Dim dr2 As DataRow = DataTables("审核意见表").SQLFind("[表名称] = '" & "打投标保证金" & "'","审核日期 DESC")
    If dr2 IsNot Nothing Then
        wrt.Replace
One("[复核日期]",dr2("审核日期"))  '用代码替换复核日期

    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()


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


加好友 发短信
等级:狐精 帖子:3223 积分:21401 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/7/28 11:17:00 [只看该作者]

老师,这样不行呢,替换复核日期对了,但是格式化没成功呢?

    For Each  r As Row In rs '逐行生成报表
        Dim dr2 As DataRow = DataTables("审核意见表").SQLFind("[表名称] = '" & "打投标保证金" & "' And [Id] = '" & r("Id") & "'","审核日期 DESC")  ’找到每条对应的ID
        If dr2 IsNot Nothing Then
        wrt.ReplaceOne("[复核日期]",dr2("审核日期"))  
        End If
        wrt.BuildOne(r)
        r.Checked =False
    Next

 第一条日期:

 


图片点击可在新窗口打开查看此主题相关图片如下:3.jpg
图片点击可在新窗口打开查看
第二条日期:

 


图片点击可在新窗口打开查看此主题相关图片如下:4.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2021/7/28 11:32:32编辑过]

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/28 11:32:00 [只看该作者]

去掉下面替换的代码,多余

Dim dr2 As DataRow = DataTables("审核意见表").SQLFind("[表名称] = '" & "打投标保证金" & "' And [Id] = '" & r("Id") & "'","审核日期 DESC")  ’找到每条对应的ID
        If dr2 IsNot Nothing Then
        wrt.ReplaceOne("[复核日期]",dr2("审核日期"))  
        End If

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


加好友 发短信
等级:狐精 帖子:3223 积分:21401 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/7/28 11:37:00 [只看该作者]

后没没有替换代码了,替换是执行了,就是格式化没对,其他的word代码的格式化也是这样写的可以

Dim rs As List(of Row) = Tables("打投标保证金").GetCheckedRows
If rs.Count > 0 Then  '如果存在符合条件的行
    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
    Dim dr As DataRow = DataTables("用户管理").SQLFind("[职务] = '财务部制单'")
    If dr IsNot Nothing Then
        wrt.Replace("[制单人]",dr("姓名")) 
    End If
    Dim dr1 As DataRow = DataTables("用户管理").SQLFind("[职务] = '财务部经理'")
    If dr1 IsNot Nothing Then
        wrt.Replace("[复核人]",dr1("姓名")) 
    End If
    For Each  r As Row In rs '逐行生成报表
        Dim dr2 As DataRow = DataTables("审核意见表").SQLFind("[表名称] = '" & "打投标保证金" & "' And [Id] = '" & r("Id") & "'","审核日期 DESC")
        If dr2 IsNot Nothing Then
            wrt.ReplaceOne("[复核日期]",dr2("审核日期"))  
        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()


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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/28 11:42:00 [只看该作者]

如果要写代码替换。不要在模板里格式
图片点击可在新窗口打开查看
改为
[复核日期]


然后代码:
wrt.ReplaceOne("[复核日期]",format(dr2("审核日期"),"yyyy-MM-dd")) 

 回到顶部