以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 多行分别赋值的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=170484)
|
-- 作者:cd_tdh
-- 发布时间: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编辑过]
|
-- 作者:有点蓝
-- 发布时间:2021/7/28 10:08:00
--
模板发上来看看
|
-- 作者:cd_tdh
-- 发布时间:2021/7/28 10:20:00
--
比如我勾选的第一条审核日期是2021.07.16,勾选的第二条审核日期是2021.07.20,截图如下,审核意见窗口是绑定到审核意见表的,两个表都有Id列对应
此主题相关图片如下:1.jpg
此主题相关图片如下:2.jpg
word报表中有个审核日期,需要每张报表对应的审核日期是通过审核意见表来找的
[此贴子已经被作者于2021/7/28 10:21:52编辑过]
|
-- 作者:有点蓝
-- 发布时间: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.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()
|
-- 作者:cd_tdh
-- 发布时间: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编辑过]
|
-- 作者:有点蓝
-- 发布时间: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
-- 发布时间: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()
|
-- 作者:有点蓝
-- 发布时间:2021/7/28 11:42:00
--
如果要写代码替换。不要在模板里格式改为 [复核日期]
然后代码: wrt.ReplaceOne("[复核日期]",format(dr2("审核日期"),"yyyy-MM-dd"))
|