以文本方式查看主题 - 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模板打印预览?
|