我有代码要求用户提供文件夹路径,然后将MDB文件复制到该文件夹进行备份。但是,MDB正在从错误的文件夹中复制。如何修复它以便在备份和恢复MDB时使用正确的数据文件夹?
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Try
Dim fbd As New FolderBrowserDialog
If fbd.ShowDialog() = vbOK Then
System.IO.File.Copy("MHC.mdb", fbd.SelectedPath & "\MHC.mdb")
MsgBox("Done")
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub btnRestore_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRestore.Click
Try
Dim fbd As New FolderBrowserDialog
If fbd.ShowDialog() = vbOK Then
File.Delete("MHC.mdb")
System.IO.File.Copy(fbd.SelectedPath & "\MHC.mdb", "MHC.mdb")
MsgBox("Done")
Application.Restart()
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
答案 0 :(得分:1)
是的,我想知道DataDirectory路径。
与此示例类似的连接字符串中使用的 | DataDirectory | 路径占位符:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Northwind.MDB
:
Dim objDataDir As Object = AppDomain.CurrentDomain.GetData("DataDirectory")
Dim dataDirectory As String = TryCast(objDataDir, String)
请注意,上述代码可以为Nothing
返回dataDirectory
(null)。我所知道的唯一设置“DataDirectory”的场景是使用ClickOnce发布的应用程序。
如果dataDirectory
为空,那么您可能希望为其分配Application.StartupPath
属性。
我不知道任何官方文档说明这是正确的程序,但代码是基于ExpandDataDirectory method。
DataDirectory
对象上还有一个非公开范围的AppDomain.CurrentDomain.ActivationContext
属性,但您需要使用反射来检索该属性。
请注意,如果您想使用|DataDirectory|
占位符,但将其指向您选择的路径,则可以使用:
AppDomain.CurrentDomain.SetData("DataDirectory", "your path here")