以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  报表事件 Afterbuild 的应用  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154433)

--  作者:edisontsui
--  发布时间:2020/9/15 8:12:00
--  报表事件 Afterbuild 的应用
我在数据表“钣金开料单”里面有一个excel报表“开料单”,在数据表“钣金出货数量”里面有一个excel报表“二维码”。我想在报表事件的 Afterbuild 里面写点代码, 以便在生成报表“开料单”之前,能够自动先生成报表“二维码”。但是不知道这些代码怎样写。谢谢。
--  作者:有点蓝
--  发布时间:2020/9/15 8:52:00
--  
参考:http://www.foxtable.com/webhelp/topics/1145.htm
--  作者:edisontsui
--  发布时间:2020/9/15 14:00:00
--  
Dim Book As New XLS.Book(ProjectPath & "Attachments\\出库单.xls")
Dim
 fl As String = ProjectPath & "Reports\\出库单.xls"
Book
.Build() \'生成细节区
Book
.Sheets(0).Rows.RemoveAt(0\'删除第一行,Excel报表的第一行通常是标记行
Book
.Save(fl) \'保存工作簿
Dim
 Proc As New Process \'打开工作簿
Proc
.File = fl
Proc
.Start()

我只要将上述代码修改excel表格名称之后放入 afterbuild 事件里面就行了吗?我试了,但是没效果。

--  作者:有点蓝
--  发布时间:2020/9/15 14:08:00
--  
改为自己的模板名称啊

If e.Book.TempLate = "开料单"
    Dim Book As New XLS.Book(ProjectPath & "Attachments\\二维码.xls")
    Dim fl As String = ProjectPath & "Reports\\出库单.xls"
    Book.Build() \'生成细节区
    Book.Sheets(0).Rows.RemoveAt(0) \'删除第一行,Excel报表的第一行通常是标记行
    Book.Save(fl) \'保存工作簿
    Dim Proc As New Process \'打开工作簿
    Proc.File = fl
    Proc.Start()
    
End If

--  作者:edisontsui
--  发布时间:2020/9/15 19:36:00
--  
我按照你的方法设置代码了,那个二维码的档案还是不会出来。
--  作者:有点蓝
--  发布时间:2020/9/15 20:40:00
--  
报表已经生成了,只是没有打开而已。报表事件里无法调用Process 

或者自己做按钮直接生成2个报表吧

    Dim Book As New XLS.Book(ProjectPath & "Attachments\\开料单.xls")
    Dim fl As String = ProjectPath & "Reports\\开料单.xls"
    Book.Build() \'生成细节区
    Book.Sheets(0).Rows.RemoveAt(0) \'删除第一行,Excel报表的第一行通常是标记行
    Book.Save(fl) \'保存工作簿
    Dim Proc As New Process \'打开工作簿
    Proc.File = fl
    Proc.Start()

    Book = New XLS.Book(ProjectPath & "Attachments\\二维码.xls")
    fl = ProjectPath & "Reports\\二维码.xls"
    Book.Build() \'生成细节区
    Book.Sheets(0).Rows.RemoveAt(0) \'删除第一行,Excel报表的第一行通常是标记行
    Book.Save(fl) \'保存工作簿
    Dim Proc2 As New Process \'打开工作簿
    Proc2.File = fl
    Proc2.Start()