Foxtable(狐表)用户栏目专家坐堂 → 生成报表,保存为pdf后,删除word报告失败,提示文件已占用


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

主题:生成报表,保存为pdf后,删除word报告失败,提示文件已占用

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


加好友 发短信
等级:二尾狐 帖子:551 积分:5234 威望:0 精华:0 注册:2018/11/6 10:54:00
生成报表,保存为pdf后,删除word报告失败,提示文件已占用  发帖心情 Post By:2022/10/9 15:17:00 [只看该作者]

 If tb.Current IsNot Nothing Then
        Dim cr As Row=tb.Current
        Dim tm As String  = ProjectPath & "Attachments\起重机检验报告模板.doc" '指定模板文件
        Dim fw As String = fld & "\" & cr("InwordNo") & "检测报告.doc" '指定目标文件,含牌照号或自编号
        Dim fp As String = fld & "\" & cr("InwordNo") & "检测报告.pdf" '指定目标文件,含牌照号或自编号
        If FileSys.FileExists(fp) Then
            Dim Result As DialogResult
            Result = Messagebox.Show("文件已经存在!是否替换","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question)
            If Result = DialogResult.Yes Then
                FileSys.DeleteFile(fp,2,2) '则彻底删除之
            Else
                Return 0
            End If
        End If
        Dim wrt As New WordReport(tb,tm,fw) '定义一个WordReport
        wrt.BuildOne(cr)
        wrt.SaveToPDF(fp) '保存为PDF文件
        wrt.Quit      '这个执行后,后台还有microsoft word 进程,导致下面的删除出错
        If FileSys.FileExists(fw) Then
            FileSys.DeleteFile(fw,2,2) '则彻底删除之
        End If
        
        'wrt.Show() '显示报表
        Dim Proc As New Process '打开PDF文件
        Proc.File = fp
        Proc.Start()
    End If


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


加好友 发短信
等级:超级版主 帖子:106665 积分:542508 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/10/9 15:35:00 [只看该作者]

等几秒再删除

wrt.Quit  
Threading.Thread.Sleep(3000)
 If FileSys.FileExists(fw) Then

 回到顶部