以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 报表事件代码问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=113902) |
-- 作者:benwong2013 -- 发布时间:2018/1/25 9:42:00 -- 报表事件代码问题 系统有一个报表的清单,栏位分别为 序号,表单编号,此清单中会不断的加入表单; 附件中的表单会依照表单编号栏位的内容来命名文档, 现需要在报表事件中加入代码,希望只要取用此清单中有记录的表单编号进行输出的话,就会执行以下的代码,请问应该如何修改,谢谢! If e.Book.TempLate = "laberNo-TM" Then Dim Bar As New BarCodeBuilder Bar.Symbology = Barpro.Symbology.Code39 Bar.Code = e.DataRow("报告编号") Bar.BarRatio = 2 Bar.BarHeight = 10 Bar.QuietZoneWidth = 2 Bar.AddCheckSum = False Bar.DisplayChecksum = False Bar.DisplayStartStopChar = False bar.SaveImage(ProjectPath & "Images\\BarCode.gif",900) |
-- 作者:有点甜 -- 发布时间:2018/1/25 9:46:00 -- 1、目前你遇到什么问题?输出的结果有什么问题?
2、这个意思? If e.DataRow("报告编号") > "" then [此贴子已经被作者于2018/1/25 9:46:17编辑过]
|
-- 作者:benwong2013 -- 发布时间:2018/1/25 9:56:00 -- 现在遇到的问题就是我想用户在使用清单中任何一个表单编号对应的模板的时候,能执行报表事件中的代码,生成条形码,所以想问一下如何修改,而不用每一个报表模板都要一段对应的代码 |
-- 作者:有点甜 -- 发布时间:2018/1/25 10:02:00 -- 1、你模板如何命名?命名规则是什么,举例说明。
2、试试 If e.DataRow Is Not Nothing AndAlso e.DataRow.DataTable.Name = "表A" AndAlso e.Book.TempLate = e.DataRow("第一列") Then |
-- 作者:benwong2013 -- 发布时间:2018/1/25 10:10:00 -- 模板的命名和清单中表单编号的命名是一致的,如清单中表单编号为WI-001,那么对于的模板就是WI-001.xls 请问这个代码可以修改成这样嘛? Dim bhs As List(Of String) = DataTables("表A").GetValues("表单编号") For Each bh As String In bhs If e.Book.TempLate = bh Then Dim Bar As New BarCodeBuilder Bar.Symbology = Barpro.Symbology.Code39 Bar.Code = e.DataRow("报告编号") Bar.BarRatio = 2 Bar.BarHeight = 10 Bar.QuietZoneWidth = 2 Bar.AddCheckSum = False Bar.DisplayChecksum = False Bar.DisplayStartStopChar = False bar.SaveImage(ProjectPath & "Images\\BarCode.gif",900) end if next |
-- 作者:有点甜 -- 发布时间:2018/1/25 10:25:00 -- If e.DataRow Is Not Nothing AndAlso e.DataRow.DataTable.Name = "表A" AndAlso e.Book.TempLate = e.DataRow("表单编号") Then |
-- 作者:benwong2013 -- 发布时间:2018/1/25 15:48:00 -- 依照你的代码还是无法生成,另外我依照自己的代码,可以生成,但问题就是生成的是T_Report 表栏”当前记录编号“旧的数据,而不是执行报表事件出来的条码; Dim bhs As List(Of String) = DataTables("B_Form").GetValues("表单编号") For Each bh As String In bhs If e.DataRow IsNot Nothing AndAlso e.DataRow.DataTable.Name = "T_Report" AndAlso e.Book.TempLate = bh Then Dim Bar As New BarCodeBuilder Bar.Symbology = Barpro.Symbology.Code39 Bar.Code = e.DataRow("当前表单编号") MessageBox.Show("当前表单编号:" & e.DataRow("当前表单编号") & "-" & bh) Bar.BarRatio = 2 Bar.BarHeight = 10 Bar.QuietZoneWidth = 2 Bar.AddCheckSum = False Bar.DisplayChecksum = False Bar.DisplayStartStopChar = False bar.SaveImage(ProjectPath & "Images\\BarCode2.gif",300) End If Next [此贴子已经被作者于2018/1/25 15:48:40编辑过]
|
-- 作者:benwong2013 -- 发布时间:2018/1/25 15:56:00 -- 看到了,报表事件的代码是发生在我报表生成之前,造成系统在报表生成的时候只读取了之前条码的图片,请问如何处理? Dim fr As DataRow = DataTables("B_CSlist").SQLFind("姓名 = \'" & User.Name & "\'") Dim bhs As List(Of String) = DataTables("LocalItem").GetValues("表单编号") For Each bh As String In bhs If bh IsNot Nothing Then Dim nr As DataRow = DataTables("T_TFRecord").addnew nr("报告编号") = Tables("T_Report").Current("报告编号") nr("表单编号") = bh Dim bg As String = nr("报告编号").SubString(3,9) Dim max As String Dim idx As Integer Max = DataTables("T_TFRecord").SQLCompute("Max(记录流水编号)","Substring(记录流水编号,1,9) = \'"& bg &"\'") If Max > "" Then idx = CInt(max.Substring(9,3) + 1) Else idx = 1 End If nr("记录流水编号") = bg & Format(idx,"000") Dim hrs As List(Of DataRow) = DataTables("LocalItem").Select("表单编号 = \'"& bh &"\'") For Each hr As DataRow In hrs hr("记录流水编号") = nr("记录流水编号") If nr.Isnull("任务编号") Then nr("任务编号") = hr("任务编号") Else nr("任务编号") = nr("任务编号") & "," & hr("任务编号") End If Dim tr As DataRow = DataTables("T_Item").Find("任务编号 = \'" & hr("任务编号") & "\'") tr("内测标识") = True tr("开单状态") = True If tr.IsNull("记录流水编号") Then tr("记录流水编号") = hr("记录流水编号") Else tr("记录流水编号") = tr("记录流水编号") & "," & hr("记录流水编号") End If tr.save() nr.Save() Next Tables("T_Report").Current("当前表单编号") = nr("记录流水编号") Tables("T_Report").Current.save If FileSys.FileExists(ProjectPath & "Attachments\\" & bh & ".xls") Then Dim sb As String = "" Dim drs As List(Of DataRow) = DataTables("B_FormEQ").SQLSelect("表单编号 = \'"& bh &"\' And 实验室编号 = \'"& fr("区域") &"\'") For Each dr As DataRow In drs sb = sb & "/" & dr("设备类型")& ":" & dr("设备编号") Next Dim Book As New XLS.Book(ProjectPath & "Attachments\\" & bh & ".xls") book.Marks.add("设备编号",sb) Dim fl As String = ProjectPath & "Reports\\" & Tables("T_Report").current("报告编号")& "&" & bh & ".xls" Book.Build() \'生成细节区 Book.Save(fl) \'保存工作簿 Dim Proc As New Process \'打开工作簿 Proc.File = fl Proc.Start() Else MessageBox.Show("未找到编号为【" & bh & "】的表单") End If End If Next e.Form.close |
-- 作者:benwong2013 -- 发布时间:2018/1/25 16:00:00 -- 搞定,应该是代码执行过程中先后的问题,我调整了一下生成的方式; |
-- 作者:有点甜 -- 发布时间:2018/1/25 16:07:00 -- 如果不会做,实例发上来
msgbox(e.Book.TempLate) |