Foxtable(狐表)用户栏目专家坐堂 → 更新报表(生产另一报表),提示文档未保存


  共有2978人关注过本帖树形打印复制链接

主题:更新报表(生产另一报表),提示文档未保存

帅哥哟,离线,有人找我吗?
lzgt
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:69 积分:789 威望:0 精华:0 注册:2017/7/1 18:52:00
更新报表(生产另一报表),提示文档未保存  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:69 积分:789 威望:0 精华:0 注册:2017/7/1 18:52:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109678 积分:558082 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/27 16:43:00 [只看该作者]

每次都保存为不同的名称,否则WebBrowser在打开这个文件的时候,第二次是无法保存的

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

 回到顶部
帅哥哟,离线,有人找我吗?
lzgt
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:69 积分:789 威望:0 精华:0 注册:2017/7/1 18:52:00
  发帖心情 Post By:2020/7/27 16:56:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
lzgt
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:69 积分:789 威望:0 精华:0 注册:2017/7/1 18:52:00
  发帖心情 Post By:2020/7/27 17:03:00 [只看该作者]


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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109678 积分:558082 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/27 17:07:00 [只看该作者]

看3楼。动作是execl组件发起的,当然提示execl了

 回到顶部
帅哥哟,离线,有人找我吗?
lzgt
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:69 积分:789 威望:0 精华:0 注册:2017/7/1 18:52:00
  发帖心情 Post By:2020/7/28 9:44:00 [只看该作者]

按你教的方法保存为不同的文件名是可行的,但每次关闭窗体后又要删除这些文件(不然文件太多了)。还有其它的折中方法吗? 

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109678 积分:558082 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/28 9:48:00 [只看该作者]

没有折中方法

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

 回到顶部
帅哥哟,离线,有人找我吗?
lzgt
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:69 积分:789 威望:0 精华:0 注册:2017/7/1 18:52:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109678 积分:558082 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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()
……

 回到顶部