以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于关闭附件窗体问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154389)

--  作者:裴保民
--  发布时间:2020/9/13 21:11:00
--  关于关闭附件窗体问题

在 BeforeClose 事件中添加了如下代码:运行后当附件有打开时会出错,怎么避免这个错误呢?

Dim fjzl As String = "充值凭证附件资料"
If FileSys.DirectoryExists( ProjectPath & fjzl) = True Then
    FileSys.DeleteDirectory(ProjectPath & fjzl,2,2) \'则彻底删除之
End If

图片点击可在新窗口打开查看此主题相关图片如下:截图00.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2020/9/13 21:44:05编辑过]

--  作者:有点蓝
--  发布时间:2020/9/13 21:48:00
--  
如果都是execl文件,直接杀掉进程

Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
For Each p As System.Diagnostics.Process In ps
    output.show(p.processName)
    If ("Excel" = p.ProcessName)
        msgbox(p.MainWindowTitle)
        \'p.kill
    End If
Next

如果杂七杂八什么类型文件都有,就不好办了

--  作者:裴保民
--  发布时间:2020/9/13 21:54:00
--  
也有txt文件


--  作者:有点蓝
--  发布时间:2020/9/13 21:59:00
--  
txt文件一般不会有影响
--  作者:裴保民
--  发布时间:2020/9/13 22:01:00
--  
 这是附件的文件类型
"*.doc;*.docx;*.xlsx;*.xls;*.txt"


--  作者:有点蓝
--  发布时间:2020/9/13 22:01:00
--  
word
Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
For Each p As System.Diagnostics.Process In ps
    output.show(p.processName)
    If ("WINWORD" = p.ProcessName)
        msgbox(p.MainWindowTitle)
     \'   p.kill
    End If
Next


--  作者:裴保民
--  发布时间:2020/9/13 22:14:00
--  
Dim llkqsh As WinForm.TextBox = e.Form.Controls("llkqshTextBox")
Dim llkzzh As WinForm.TextBox = e.Form.Controls("llkzzhTextBox")
Dim ccrq As WinForm.DateTimePicker = e.Form.Controls("czrqDateTimePicker")
Dim fjzl As String = "充值凭证附件资料"
Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
For Each p As System.Diagnostics.Process In ps
    output.show(p.processName)
    If ("Excel" = p.ProcessName)
        p.kill
    End If
    If FileSys.DirectoryExists( ProjectPath & fjzl) = True Then
        FileSys.DeleteDirectory(ProjectPath & fjzl,2,2) \'则彻底删除之
    End If
Next
If jinzhihangjianyidong=False Then
    Dim Result As DialogResult
    Result = MessageBox.Show("窗体处于编辑状态,是否放弃编辑退出?", "提示" ,MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
    If Result = DialogResult.No Then
        jinzhihangjianyidong=True
        DataTables("充值凭证表").RejectChanges
        DataTables("充值凭证表").Save
        Tables("充值凭证表").Filter =""
    ElseIf result = DialogResult.Yes Then
        If llkqsh.text = Nothing OrElse llkqsh.Text.Length < 3   OrElse   llkzzh.text = Nothing OrElse llkzzh.Text.Length < 3   OrElse   ccrq.Value= Nothing  Then
            MessageBox.Show("输入的数据有误,保存数据失败!", "提示")
            jinzhihangjianyidong=True
            Tables("充值凭证表").Current.Reject
            DataTables("充值凭证表").Save
            Tables("充值凭证表").Filter =""
        Else
            jinzhihangjianyidong=True
            DataTables("充值凭证表").Save
            Tables("充值凭证表").Filter =""
        End If
    ElseIf  Result = DialogResult.Cancel Then
        jinzhihangjianyidong=False
        e.cancel = True
        Return
    End If   
End If

蓝老师麻烦看看哪有问题,运行后还是错误


--  作者:有点蓝
--  发布时间:2020/9/13 22:40:00
--  
Dim fjzl As String = "充值凭证附件资料"
Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
For Each p As System.Diagnostics.Process In ps
    output.show(p.processName)
    If ("Excel" = p.ProcessName)
        p.kill
    End If
Next
    If FileSys.DirectoryExists( ProjectPath & fjzl) = True Then
        FileSys.DeleteDirectory(ProjectPath & fjzl,2,2) \'则彻底删除之
    End If
If jinzhihangjianyidong=False Then
    Dim Result As DialogResult

--  作者:裴保民
--  发布时间:2020/9/13 23:01:00
--  
只要附件打开,关闭窗体是总是弹出提示框,并且也不删除文件夹,怎么设置不弹出呢?

图片点击可在新窗口打开查看此主题相关图片如下:截图01.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2020/9/13 23:05:34编辑过]

--  作者:有点蓝
--  发布时间:2020/9/13 23:16:00
--  
output.show(p.processName) \'检查进程名称,不同系统可能execl显示的名称不一样的。

或者使用try处理一下,提醒用户手工关闭文件:http://www.foxtable.com/webhelp/topics/2070.htm