-1
Dim inc As Integer
Dim MaxRows As Integer
Dim con As New OleDb.OleDbConnection
Dim dbProvider As String
Dim dbSource As String
Dim dA As OleDb.OleDbDataAdapter
Dim dS As New DataSet
Dim SQL As String

Private Sub AbrirToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AbrirToolStripMenuItem.Click
    Dim strFileName As String
    Dim ClikedOk As Integer

    OpenFD.InitialDirectory = "C:\"
    OpenFD.Title = "Ubica la base de datos"
    OpenFD.Filter = "Agenda|Agenda.mdb"
    OpenFD.ShowDialog()

    If ClikedOk = DialogResult.OK Then
        strFileName = OpenFD.FileName
        dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
        dbSource = "Data Source = Agenda.mdb"

        con.ConnectionString = dbProvider & dbSource
        con.Open()
        SQL = "SELECT * FROM Contactos"
        dA = New OleDb.OleDbDataAdapter(SQL, con)
        dA.Fill(dS, "Agenda")

        con.Close()
        MaxRows = dS.Tables("Agenda").Rows.Count
        inc = -1

    End If
End Sub

我想要做的是:
用户应该按菜单项并选择数据库文件,然后数据源将被定向到用户指向数据库文件的位置。我应该在“dbSource = Data Source = ...”行中输入什么?访问数据库是 .mdb,因为我在使用 .accdb 时遇到了麻烦

4

2 回答 2

1

更改此行:

dbSource = "Data Source = Agenda.mdb"

对此:

dbSource = "Data Source=""" & OpenFD.FileName & """"

这将指向Data Source用户选择的文件。

于 2013-03-06T20:49:30.033 回答
0

好吧,你在那里有点麻烦。Jet 驱动程序是 32 位的,如果您想使用 jet 访问 64 位窗口中的数据库,则需要更新

您还可以将您的应用程序配置为在 WoW64 模式下运行以使用 32 位驱动程序。

如果你已经做了一些让喷气机工作的事情,那么你可以这样做:

dbSource = "Data Source=" & OpenFD.FileName;

如果您不想跳过让 Jet 工作的麻烦,那么您可以使用 .Net 库通过更改进行连接:

dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
dbSource = "Data Source = Agenda.mdb"

dbProvider = "Driver={Microsoft Access Driver (*.mdb)};"
dbSource = "Dbq=" & "Agenda.mdb;"

祝你好运。

于 2013-03-06T20:54:29.977 回答