2016-10-12 5 views
0

MS Access 2007/2010データベースからデータを外挿そうとしています。MS Accessデータベースの接続文字列が正しくありません

VBAに次のコードがありますが、接続文字列が正しくありません。関連する参考文献ライブラリを追加しました

Private Sub btnGetMsAccessData_Click() 

Dim sConn As String 
Dim oConn As ADODB.Connection 
Dim oRs As ADODB.Recordset 
Dim sSQL As String 

sConn = "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=\\MyNetworkPath\BP-MasterDashboard Source\BP_Planning_by_PT_dept_be.accdb;Mode=Read" 

Set oConn = New ADODB.Connection  ' Open a connection. 
oConn.Open 


sSQL = "SELECT * FROM Tbl_Start_Leaver"  ' Make a query over the connection. 
Set oRs = New ADODB.Recordset 
oRs.Open sSQL, , adOpenStatic, adLockBatchOptimistic, adCmdText 

MsgBox oRs.RecordCount 

oConn.Close ' Close the connection. 
Set oConn = Nothing 

End Sub 

oConn.Open行で不明なアプリケーションエラーが表示されません。

ブックの1つにブックをリンクしようとしましたが、これは問題なく動作します。 それから、私は "Connection"を見て、それを私のコードにコピーしましたが、まだ喜んでいませんでした。 オートメーションエラー 予期しないエラーの任意のアイデアをいただければ幸いです

は言い続け。

ありがとうございます。

答えて

2

接続文字列は間違っていましたが、他にも問題がありました。接続文字列をADODB Connectionオブジェクトなどに割り当てないなど。ここでは、私があなたを稼働させることを望む更新されたコードです。

Private Sub btnGetMsAccessData_Click() 
    'Ensure you add a reference to Microsoft ADO Objects 
    Dim oConn As New ADODB.Connection 
    Dim oRs As New ADODB.Recordset 
    Dim sSQL As String: sSQL = "SELECT * FROM Tbl_Start_Leaver" 
    'Corrected Connection String from Thomas Inzina 
    Dim sConn As String: sConn = "Provider=Microsoft.ACE.OLEDB.12.0;UID=Admin;Data Source=" & _ 
           "\\MyNetworkPath\BP-MasterDashboard Source\BP_Planning_by_PT_dept_be.accdb;Mode=Read" 

    With oConn 
     .ConnectionString = sConn ' You need to assign the connection string to the ADODB.Connection Object 
     .Open 
    End With 

    'Make sure the connection isn't open before opening the recordset 
    'You also need to specify which connection you want to use as the second parameter (this was missed) 
    If oRs.State <> adStateOpen Then oRs.Open sSQL, oConn, adOpenStatic, adLockBatchOptimistic, adCmdText 

    'Close Connection and RS 
    If oConn.State = adStateOpen Then oConn.Close 
    If oRs.State = adStateOpen Then oRs.Close 

    'Clean Up 
    Set oRs = Nothing 
    Set oConn = Nothing 
End Sub 
+0

これは機能しませんでした。私はおそらく、私が必要とするlibリファレンスを考えています。 – mond007

+0

コードの2行目についての私のコメントを参照してください。 ADOへの参照が必要です。具体的には、「Microsoft ActiveX Data Objects 2.X Library」またはバージョン6.xが利用可能な場合があります。どちらもうまくいくはずです。 –

+0

私はMicrosoft ActiveX Data Objects 6.1ライブラリを持っています - これは問題ではないようです。 – mond007

関連する問題