以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  按钮代码问题求助  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=128269)

--  作者:lisheng1971
--  发布时间:2018/12/2 19:06:00
--  按钮代码问题求助
Dim tb As WinForm.TabControl = e.Form.Controls("TabControl1")
Dim pg As WinForm.TabPage = tb.SelectedPage
Dim doc As PrintDoc = e.Form.GernatePrintDoc(pg)
If tb.SelectedPage.Text = "Page1" Then
    Dim tm As String  = ProjectPath & "Attachments\\准考证A.doc" \'指定模板文件
    Dim fl1 As String = "D:\\准考证\\准考证A.doc" \'指定目标文件
    Dim fl2 As String = "D:\\准考证\\准考证A.pdf" \'指定目标PDF文件
    Dim wrt As New WordReport(Tables("管理表"),tm,fl1) \'定义一个WordReport
    wrt.Build() \'逐行生成报表
    wrt.SaveToPDF(fl2) \'保存为PDF文件
    wrt.Quit() \'退出
    Dim Proc As New Process \'打开PDF文件
    Proc.File = fl2
    Proc.Start()
ElseIf tb.SelectedPage.Text = "Page2" Then
    Dim tm As String  = ProjectPath & "Attachments\\准考证B.doc" \'指定模板文件
    Dim fl1 As String = "D:\\准考证\\准考证B.doc" \'指定目标文件
    Dim fl2 As String = "D:\\准考证\\准考证B.pdf" \'指定目标PDF文件
    Dim wrt As New WordReport(Tables("管理表"),tm,fl1) \'定义一个WordReport
    wrt.Build() \'逐行生成报表
    wrt.SaveToPDF(fl2) \'保存为PDF文件
    wrt.Quit() \'退出
    Dim Proc As New Process \'打开PDF文件
    Proc.File = fl2
    Proc.Start()
End If
上述代码在所在页面时,如在表(为副表)中选择N行,但却只显示第1行的准考证,而不是我想要的N张准考证!
Dim tm As String  = ProjectPath & "Attachments\\准考证B.doc" \'指定模板文件
    Dim fl1 As String = "D:\\准考证\\准考证B.doc" \'指定目标文件
    Dim fl2 As String = "D:\\准考证\\准考证B.pdf" \'指定目标PDF文件
    Dim wrt As New WordReport(Tables("管理表"),tm,fl1) \'定义一个WordReport
    wrt.Build() \'逐行生成报表
    wrt.SaveToPDF(fl2) \'保存为PDF文件
    wrt.Quit() \'退出
    Dim Proc As New Process \'打开PDF文件
    Proc.File = fl2
    Proc.Start()
但上面这段代码却可以选择表中的N行,显示N张准考证;窗口是单独的、表不是副表;
这个问题是什么原因造成的?请版主指教!

--  作者:lisheng1971
--  发布时间:2018/12/2 20:01:00
--  
另外再追加一个按钮整合的问题:
比如在Page2中的表(副表),对应有2个模板,一个是Excel的,另一个是Word的,我如果想按模板导出的话,要做2个导出按钮,整个项目做下来,类似的情况还有很多,那要做很多个按钮,现在想在一个按钮中实现,这个代码应该如何编写?比如下面的代码,在不同的页面中可以实现,但要在同一个页面,不知能否可行?请版主指教!
Dim tb As WinForm.TabControl = e.Form.Controls("TabControl1")
Dim pg As WinForm.TabPage = tb.SelectedPage
Dim doc As PrintDoc = e.Form.GernatePrintDoc(pg)
If tb.SelectedPage.Text = "Page2" Then
    Dim tm As String  = ProjectPath & "Attachments\\准考证.doc" \'指定模板文件
    Dim fl1 As String = "D:\\准考证\\准考证.doc" \'指定目标文件
    Dim fl2 As String = "D:\\准考证\\准考证.pdf" \'指定目标PDF文件
    Dim wrt As New WordReport(Tables("管理表"),tm,fl1) \'定义一个WordReport
    wrt.Build() \'逐行生成报表
    wrt.SaveToPDF(fl2) \'保存为PDF文件
    wrt.Quit() \'退出
    Dim Proc As New Process \'打开PDF文件
    Proc.File = fl2
    Proc.Start()
ElseIf tb.SelectedPage.Text = "Page1" Then
    Dim Book As New XLS.Book(ProjectPath & "Attachments\\资格验审.xls")
    Dim fl As String = ProjectPath & "Reports\\资格验审.xls"
    Book.Build()
    Book.Save(fl)
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
    App.Visible = True
    ShowAppWindow("Page1",2)
    Ws.PrintPreview
    App.Quit
End If
如果都在Page2中,该如何才能点击同一个按钮,实现两种不同的导出效果?

--  作者:有点甜
--  发布时间:2018/12/2 20:32:00
--  

回复1楼

 

Dim wrt As New WordReport(Tables("管理表"),tm,fl1) \'定义一个WordReport

 

改成

 

Dim wrt As New WordReport(Tables("窗口1_Table1"),tm,fl1) \'定义一个WordReport

 

回复2楼

 

如果你的excel和word要同时生成,那么,两段代码合并在一起即可


--  作者:lisheng1971
--  发布时间:2018/12/2 21:49:00
--  
谢谢!!!第一个问题,我大概能理解了。
第二个追加问题:不是要同时生成,那样我就不困惑了,是按所需选择性的生成

--  作者:lisheng1971
--  发布时间:2018/12/2 22:14:00
--  
补充说明一下:因为流程原因,要先进行安排,然后根据安排生成准考证,比如在Page2页面,当我点击按钮,应该出现选择之类的,当我先选择生成安排表,然后填写好数据后再导回,这时我如再点击按钮,出现选择后,我选生成准考证
--  作者:lisheng1971
--  发布时间:2018/12/2 22:57:00
--  
Dim tb As WinForm.TabControl = e.Form.Controls("TabControl1")
Dim pg As WinForm.TabPage = tb.SelectedPage
Dim doc As PrintDoc = e.Form.GernatePrintDoc(pg)
If tb.SelectedPage.Text = "page2" Then
    Dim tm As String  = ProjectPath & "Attachments\\准考证.doc" \'指定模板文件
    Dim fl1 As String = "D:\\准考证\\准考证.doc" \'指定目标文件
    Dim fl2 As String = "D:\\准考证\\准考证.pdf" \'指定目标PDF文件
    Dim wrt As New WordReport(Tables("管理_Table8"),tm,fl1) \'定义一个WordReport
    wrt.Build() \'逐行生成报表
    wrt.SaveToPDF(fl2) \'保存为PDF文件
    wrt.Quit() \'退出
    Dim Proc As New Process \'打开PDF文件
    Proc.File = fl2
    Proc.Start()
ElseIf tb.SelectedPage.Text = "Page2" Then
    Dim Book As New XLS.Book(ProjectPath & "Attachments\\考核.xls")
    Dim fl As String = ProjectPath & "Reports\\考核.xls"
    Book.Build()
    Book.Save(fl)
    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
    App.Visible = True
    ShowAppWindow("考核",2)
    Ws.PrintPreview
    App.Quit
End If
比如上述代码,就只执行第一段的代码,我是想能否点击按钮后,根据当前流程选择要生成的word或Excel报表?

--  作者:有点甜
--  发布时间:2018/12/2 23:11:00
--  
你选择流程怎么选择的?弹出一个窗口选择?选择完以后,记录一下选择了哪一个不行?
--  作者:lisheng1971
--  发布时间:2018/12/2 23:35:00
--  
流程大概就是:比如在page2页面,点击按钮,弹出一个窗口(要不没法选),然后我根据需求选择要生成的报表
--  作者:有点甜
--  发布时间:2018/12/3 9:11:00
--  
以下是引用lisheng1971在2018/12/2 23:35:00的发言:
流程大概就是:比如在page2页面,点击按钮,弹出一个窗口(要不没法选),然后我根据需求选择要生成的报表

 

你再做一个窗口啊,窗口加入两个按钮,点击不同按钮执行不同操作。


--  作者:lisheng1971
--  发布时间:2018/12/3 15:47:00
--  
Dim tb As WinForm.TabControl = e.Form.Controls("TabControl1")
Dim pg As WinForm.TabPage = tb.SelectedPage
Dim doc As PrintDoc = e.Form.GernatePrintDoc(pg)
If tb.SelectedPage.Text = "page2" Then
    Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
    dlg.Filter= "Excel文件|*.xls|Word文件|*.doc|Access文件|*.mdb" \'设置筛选器
    If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
        MessageBox.Show("你选择的是:" & dlg.FileName,"提示") \'提示用户选择的文件
        Dim Book As New XLS.Book(ProjectPath & "Attachments\\考核.xls")
        Dim fl As String = ProjectPath & "Reports\\考核.xls"
        Book.Build()
        Book.Save(fl)
        Dim App As New MSExcel.Application
        Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
        Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
        App.Visible = True
        ShowAppWindow("考核",2)
        Ws.PrintPreview
        App.Quit
    ElseIf dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
        MessageBox.Show("你选择的是:" & dlg.FileName,"提示") \'提示用户选择的文件
        Dim tm As String  = ProjectPath & "Attachments\\准考证.doc" \'指定模板文件
        Dim fl1 As String = "D:\\准考证\\准考证.doc" \'指定目标文件
        Dim fl2 As String = "D:\\准考证\\准考证.pdf" \'指定目标PDF文件
        Dim wrt As New WordReport(Tables("管理_Table8"),tm,fl1) \'定义一个WordReport
        wrt.Build() \'逐行生成报表
        wrt.SaveToPDF(fl2) \'保存为PDF文件
        wrt.Quit() \'退出
        Dim Proc As New Process \'打开PDF文件
        Proc.File = fl2
        Proc.Start()
    End If
End If
版主,经过对帮助的学习,编写了上述代码,到是基本实现了,一个按钮控制在同一个page页面中的表的两种打印预览方式,只是相对还是麻烦些,我要在弹出的窗口中到相应的盘中N个模板文件中找出我想要的模板文件后选择好再点OK就可以;
现在想实现:我只有2个模板,1个EXCEL、1个WORD,是否可以整合在代码中,点击按钮后,选择EXCEL或WORD模板打印预览?