以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  更新报表(生产另一报表),提示文档未保存  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=152972)

--  作者:lzgt
--  发布时间:2020/7/27 16:02:00
--  更新报表(生产另一报表),提示文档未保存
引用模板生成了报表,并另存为dpf在WebBrowser窗体中显示,功能正常。我刷新了数据后,想在同一窗体中(不关闭),生成另一份新报表。提示文档未保存。请教是打开的模板文件还是新的pdf文件未保存?应该如何实现 这个功能?   先谢过了。

代码如下

 Case "上条记录"     ‘更新数据源
            For Each c As WinForm.Control In Forms("frmxs01xsddedit").Controls
                If Typeof c Is WinForm.Button Then   \'判断控件是否是按钮
                    Dim but As WinForm.button = c    \'使用特定类型的变量引用控件
                    If but.TEXT = "上条记录"  Then
                        but.PerformClick
                        Exit For
                    End If
                End If
            Next
            
            Dim tmp As String  = ProjectPath & "Attachments\\销售定单.xls"
            Dim mht As String = ProjectPath & "Reports\\销售定单.pdf"
            Dim rpt As New XLS.Book(tmp)
            rpt.Build()
            rpt.Sheets(0).Rows(0).Visible = False \'隐藏第一个空行
            rpt.SaveToPDF (mht)            
            e.Form.Controls("WebBrowser1").address = mht 

[此贴子已经被作者于2020/7/27 16:03:08编辑过]

--  作者:lzgt
--  发布时间:2020/7/27 16:10:00
--  
查看帮助 加了红代码,还是报错,是excel 退出不保存 还有参数吗?

        Case "上条记录"
            For Each c As WinForm.Control In Forms("frmxs01xsddedit").Controls
                If Typeof c Is WinForm.Button Then   \'判断控件是否是按钮
                    Dim but As WinForm.button = c    \'使用特定类型的变量引用控件
                    If but.TEXT = "上条记录"  Then
                        but.PerformClick
                        Exit For
                    End If
                End If
            Next
            
            Dim tmp As String  = ProjectPath & "Attachments\\销售定单.xls"
            Dim mht As String = ProjectPath & "Reports\\销售定单.pdf"
            Dim rpt As New XLS.Book(tmp)
            rpt.Build()
            rpt.Sheets(0).Rows(0).Visible = False \'隐藏第一个空行
            rpt.SaveToPDF (mht)
            
            Dim App As New MSExcel.Application
            App.WorkBooks.Open(tmp).close
            app.quit
            
            e.Form.Controls("WebBrowser1").address = mht

--  作者:有点蓝
--  发布时间:2020/7/27 16:43:00
--  
每次都保存为不同的名称,否则WebBrowser在打开这个文件的时候,第二次是无法保存的

Dim mht As String = ProjectPath & "Reports\\销售定单.pdf"

--  作者:lzgt
--  发布时间:2020/7/27 16:56:00
--  
报错好像是EXCEL 发出的?  那还是退出book吗?
[此贴子已经被作者于2020/7/27 17:02:22编辑过]

--  作者:lzgt
--  发布时间:2020/7/27 17:03:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:报表报错.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2020/7/27 17:07:00
--  
看3楼。动作是execl组件发起的,当然提示execl了
--  作者:lzgt
--  发布时间:2020/7/28 9:44:00
--  
按你教的方法保存为不同的文件名是可行的,但每次关闭窗体后又要删除这些文件(不然文件太多了)。还有其它的折中方法吗? 

--  作者:有点蓝
--  发布时间:2020/7/28 9:48:00
--  
没有折中方法

可以在关闭窗口的时候写代码删除文件:http://www.foxtable.com/webhelp/topics/0331.htm

--  作者:lzgt
--  发布时间:2020/7/28 12:18:00
--  
还是这个主题,根据查阅到的其它帮助方件 我将代码改写如下 测试可以运行(没有报错出现)
但我拿掉红色的测试代码 MessageBox.show(mht & "文件打开")   就会报错 “文档未保存”。 这是什么情况? 有办法解决吗?


        Case "下条记录"
            Dim tmp As String  = ProjectPath & "Attachments\\销售定单.xls"
            Dim mht As String = ProjectPath & "Reports\\销售定单.PDF"

            e.Form.Controls("WebBrowser1").address = ""

            If FileIsOpened(mht)= True Then
                MessageBox.show(mht & "文件打开")
                ShowAppWindow("销售定单.PDF",5)
            End If
           
           ‘刷新记录
           For Each c As WinForm.Control In Forms("frmxs01xsddedit").Controls
                If Typeof c Is WinForm.Button  Then   \'判断控件是否是按钮
                    Dim but As WinForm.button = c    \'使用特定类型的变量引用控件
                    If but.TEXT = "下条记录"  Then
                        but.PerformClick
                        Exit For
                    End If
                End If
            Next
            
            If  Tables("tblxsxsdd").Current("shry") = ""   Then
                MessageBox.show("此单据未经审核,暂不提供预览","提示")
                Return
            End If
            

            Dim rpt As New XLS.Book(tmp)
            rpt.Build()
            rpt.Sheets(0).Rows(0).Visible = False \'隐藏第一个空行
            rpt.SaveToPDF (mht)
            e.Form.Controls("WebBrowser1").address = mht

--  作者:有点蓝
--  发布时间:2020/7/28 13:36:00
--  
试试

Case "下条记录"
            Dim tmp As String  = ProjectPath & "Attachments\\销售定单.xls"
            Dim mht As String = ProjectPath & "Reports\\销售定单.PDF"

            e.Form.Controls("WebBrowser1").address = ""
Application.DoEvents()
            If FileIsOpened(mht)= True Then
                MessageBox.show(mht & "文件打开")
                ShowAppWindow("销售定单.PDF",5)
            End If
           Application.DoEvents()
……