我的代码要求用户输入文件夹路径,然后将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发布于 2017-12-02 01:55:51
是,我想知道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)注意,上面的代码可能会为dataDirectory返回Nothing (null)。据我所知,设置"DataDirectory“的唯一场景是使用ClickOnce发布的应用程序。
如果dataDirectory为null,则可能需要为其分配Application.StartupPath属性。
我不知道任何官方文档表明这是正确的过程,但代码是基于ExpandDataDirectory method的。
AppDomain.CurrentDomain.ActivationContext对象上还有一个非公开作用域的DataDirectory属性,但您需要使用反射来检索该属性。
请注意,如果要使用|DataDirectory|占位符,但将其指向您选择的路径,则可以使用:
AppDomain.CurrentDomain.SetData("DataDirectory", "your path here")https://stackoverflow.com/questions/47584972
复制相似问题