-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 = ...」の行に何を入力する必要がありますか?.accdbの使用で問題が発生したため、アクセスデータベースは.mdbです。

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ビットウィンドウのデータベースにアクセスする場合は、更新する必要があります

32ビットドライバーを使用するようにWoW64モードで実行するようにアプリを構成することもできます。

ジェットを機能させることについて何かをした場合は、次のことができます。

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 に答える