以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  动态打印调用  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104912)

--  作者:nbsugu_z
--  发布时间:2017/8/8 13:40:00
--  动态打印调用
模板名为:测试 

工作表A中有 单位列 和月份列(月份是字符型)等
现在要达到动态模板打印条件为同时满足所有记录:相同单位 同一月份记录打印,又如A单位7月份所有记录打印 B单位5月份所有记录打印
如何修改下面代码。测试了多次不成功。要求能出现对话框,供我输入月份、单位 生成打印文件



Dim Book As New XLS.Book(ProjectPath & "Attachments\\测试.xls")
        Dim fl As String = ProjectPath & "Reports\\测试.xls"
                Book.Build() \'生成细节区
        Book.Save(fl) \'保存工作簿
        Dim Proc As New Process \'打开工作簿
        Proc.File = fl
        Proc.Start()

--  作者:有点甜
--  发布时间:2017/8/8 14:18:00
--  
Dim str As String = "A单位,8月"
If InputValue(str, "提示", "请输入:") Then
    Dim ary() As String = str.split(",")
    If ary.length = 2 Then
        Tables("表A").Filter = "第一列 = \'" & ary(0) & "\' and 第二列 = \'" & ary(1) & "\'"
        Dim Book As New XLS.Book(ProjectPath & "Attachments\\测试.xls")
        Dim fl As String = ProjectPath & "Reports\\测试.xls"
        Book.Build() \'生成细节区
        Book.Save(fl) \'保存工作簿
        Dim Proc As New Process \'打开工作簿
        Proc.File = fl
        Proc.Start()
    End If
End If

--  作者:nbsugu_z
--  发布时间:2017/8/8 14:33:00
--  
.NET Framework 版本:2.0.50727.8689
Foxtable 版本:2017.8.3.1
错误所在事件:窗口,main,TreeView1,NodeMouseClick
详细错误信息:
打开存储文件失败。


--  作者:有点甜
--  发布时间:2017/8/8 14:35:00
--  

说明你没有对应的文件【Attachments\\测试.xls】,注意后缀名是不是xlsx。

 

或者做个例子发上来测试下。


--  作者:nbsugu_z
--  发布时间:2017/8/8 14:48:00
--  

Dim str As String = "A单位,8月"
If InputValue(str, "提示", "请输入:") Then
    Dim ary() As String = str.split(",")
    If ary.length = 2 Then
        Tables("表A").Filter = "第一列 = \'" & ary(0) & "\' and 第二列 = \'" & ary(1) & "\'"
        Dim Book As New XLS.Book(ProjectPath & "Attachments\\测试.xls") \'打开模板

Dim fl As String = ProjectPath & "Reports\\测试.xls"
Dim
Sheet As XLS.Sheet = Book.Sheets(0)
Sheet
(3,9).Value = "<日期 = # " & Date.Today & "#>"  \'写入打印条件
Book.Build()
\'生成报表
Book.Save(fl)

Dim
Proc As New Process
Proc.File = fl
Proc.Start()



就是Sheet(3,9).Value = "<日期 = # " & Date.Today & "#>" 这行代码如何改写同时满足月份和单位,因为表A中月份和单位不是放在第一列和第二列的。



--  作者:有点甜
--  发布时间:2017/8/8 14:52:00
--  
Dim str As String = "A单位,8月"
If InputValue(str, "提示", "请输入:") Then
    Dim ary() As String = str.split(",")
    If ary.length = 2 Then
        Dim Book As New XLS.Book(ProjectPath & "Attachments\\测试.xls") \'打开模板
        Dim fl As String = ProjectPath & "Reports\\测试.xls"
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        Sheet(3,9).Value = "<单位 = \'" & ary(0) & "\' and 月份 = \'" & ary(1) & "\'>"  \'写入打印条件
        Book.Build() \'生成报表
        Book.Save(fl)
        Dim Proc As New Process
        Proc.File = fl
        Proc.Start()
    End If
End If

--  作者:nbsugu_z
--  发布时间:2017/8/8 14:56:00
--  
Dim Book As New XLS.Book(ProjectPath & "Attachments\\测试.xls")
        Dim fl As String = ProjectPath & "Reports\\测试.xls"
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
      Sheet(3,9).Value = "<月份 = # " & Date.Today & "#>"  \'写入打印条件
                Book.Build() \'生成细节区
        Book.Save(fl) \'保存工作簿
        Dim Proc As New Process \'打开工作簿
        Proc.File = fl
        Proc.Start()


可能我表达不清楚,上面的一行“打印条件代码,不知道如何修改成同时满指定的月份和指定的单位,并且有对话框供输入或选择。

--  作者:有点甜
--  发布时间:2017/8/8 14:59:00
--  
认认真真看6楼。不会做上传具体实例。
--  作者:nbsugu_z
--  发布时间:2017/8/8 15:08:00
--  
解决了,只是对话框很不方便
--  作者:有点甜
--  发布时间:2017/8/8 15:09:00
--  
以下是引用nbsugu_z在2017/8/8 15:08:00的发言:
解决了,只是对话框很不方便

 

那你可以单独做一个窗口,提供单位、月份选择,最后合成条件,生成报表。

 

具体问题做例子发上来。