我用commondialog和 SHFileOperation备份和恢复数据库文件(.mdb),当数据库文件存在时,便会弹出 确认文件替换 对话框,故向高人请教如下三个问题:
1. 不论我点“是”还是点“否”,都执行复制了。按钮“否”根本就没起作用。请问该怎么控制啊?2. 我设置的Comdlg1.Filter = "*.mdb"怎么没起作用呢?只想在选择文件时只能看到.mdb文件,可是我那么设置了,选择
文件时所有文件都显示啊,不是.mdb的文件也能够选择上?这到底是怎么回事啊?3. 在保存和打开通用对话框打开时,想只能选择一个.mdb文件,把ctrl和shift键都屏蔽了,该怎么处理?
以下是代码片段:
'数据库备份
Comdlg1.DialogTitle = "数据库备份"
Comdlg1.Filter = "*.mdb"
Comdlg1.InitDir = App.Path & "\DataBase\"
Comdlg1.FileName = "feipin.mdb"
Comdlg1.CancelError = True
Comdlg1.ShowSave
On Error GoTo ErrHandler
Dim SHFileOp As SHFILEOPSTRUCT
Call SHFileOperation(SHFileOp)
... '数据库恢复
Comdlg1.DialogTitle = "数据库恢复"
Comdlg1.Filter = "*.mdb"
Comdlg1.InitDir = App.Path & "\BackUp"
Comdlg1.FileName = ""
Comdlg1.CancelError = True
Comdlg1.ShowOpen
...
1. 不论我点“是”还是点“否”,都执行复制了。按钮“否”根本就没起作用。请问该怎么控制啊?2. 我设置的Comdlg1.Filter = "*.mdb"怎么没起作用呢?只想在选择文件时只能看到.mdb文件,可是我那么设置了,选择
文件时所有文件都显示啊,不是.mdb的文件也能够选择上?这到底是怎么回事啊?3. 在保存和打开通用对话框打开时,想只能选择一个.mdb文件,把ctrl和shift键都屏蔽了,该怎么处理?
以下是代码片段:
'数据库备份
Comdlg1.DialogTitle = "数据库备份"
Comdlg1.Filter = "*.mdb"
Comdlg1.InitDir = App.Path & "\DataBase\"
Comdlg1.FileName = "feipin.mdb"
Comdlg1.CancelError = True
Comdlg1.ShowSave
On Error GoTo ErrHandler
Dim SHFileOp As SHFILEOPSTRUCT
Call SHFileOperation(SHFileOp)
... '数据库恢复
Comdlg1.DialogTitle = "数据库恢复"
Comdlg1.Filter = "*.mdb"
Comdlg1.InitDir = App.Path & "\BackUp"
Comdlg1.FileName = ""
Comdlg1.CancelError = True
Comdlg1.ShowOpen
...
Comdlg1.Filter = "All Files (*.*)|*.*|" & "库文件("*.mdb)|"*.mdb| "
返回或设置一个值,该值指示当选取“取消”按钮时是否出错。语法object.CancelError [= boolean]CancelError 属性语法有下列部分:部分 描述
object 对象表达式,其值是“应用于”列表中的对象。
boolean 布尔表达式,如“设置值”中所描述,用以指示是否出错。
设置值用于 boolean 的设置有:设置值 描述
True 有错。
False (缺省值)没错。
说明当该属性设置为 True 时,无论何时选取“取消”按钮,均产生 32755 (cdlCancel) 号错误。既然这样,捕捉这个错误不就可以解决第一个问题了
正确格式为:Comdlg1.Filter = "库文件(*.mdb)|*.mdb|"
但是,文件名的下拉框里怎么出现了其它目录下的.mdb文件啊?
比如说:Comdlg1.InitDir = App.Path & "\DataBase\"目录下只有一个feipin.mdb文件,
在App.Path & "\BackUp\"目录下有两个.mdb文件。因为我将Comdlg1.InitDir 属性设置到DataBase,
所以保存对话框打开后,默认路径是DataBase。为什么BackUp目录下的两个.mdb文件也跑到文件名的下拉框了?而且还是绝对路径的(E:\废品\BackUp\feipin 2009-11-2.mdb)。想把文件名的下拉框屏蔽掉,不知道我说明白没,就是不让文件名下拉框里头有东西。我再测试下cancelerror
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU\mdb
下的内容。你那两个‘垃圾文件’是不是在那儿了.........
2.If vbYes = MsgBox("确定?", vbYesNo) Then
...
End If
3.Comdlg1.Flags = cdlOFNAllowMultiselect Or cdlOFNFileMustExist Or cdlOFNExplorer
能否选择多个文件,可以通过 .Flags 属性来设置:
常数:cdlOFNAllowMultiselect
值:&H200
说明:它指定文件名列表框允许多重选择。
运行时,通过按 SHIFT 键以及使用 UP ARROW 和 DOWN ARROW 键可选择多个文件。
作完此操作后,FileName 属性就返回一个包含全部所选文件名的字符串。串中各文件名用空格隔开。
因此,只要你没有设置 &H200 标志位,通用对话框就只能选择一个文件;设置了该标志位后,才能选择多个。