2012-03-26 10 views
0

Ich möchte eine Verbindung zu DB2 von Excel-Makro ... Dies ist mein Code, aber es funktioniert nicht, Es gibt Fehler als "Laufzeitfehler" ... Kann mir jemand helfen ...DB2-Verbindung von Excel-Makro

Option Explicit 

Dim DBCONSRT, QRYSTR As String 

Dim DBCON, DBRS As Object 

Private Sub query() 
    DBCONSRT = "Driver=jdbc:db2://my_host;Database=PRTHD;hostname=NZ1;port=5355;protocol=TCPIP; uid=my_user;pwd=my_pass" 
    'CHANGE THE BELOW QUERY STRING ACCORDING TO YOUR NEED 
    QRYSTR = "select * from PRTHD.STRSK_OH_EOO" 
    Set DBCON = CreateObject("ADODB.Connection") 
    DBCON.ConnectionString = DBCONSRT 
    DBCON.Open 
    'BELOW CODE USED TO GET THE DATABASE CONECTION AND EXECUTE THE QUERY CHANGE ACCORDIGN TO YOUR NEED 
    Set DBRS = CreateObject("ADODB.Recordset") 
    With DBRS 
     .Source = QRYSTR 
     Set .ActiveConnection = DBCON 
     .Open 
    End With  
End Sub 

Edit: ich meinen Code in die folgenden geändert haben, aber ich bin immer noch ein Fehler. Der Fehler ist „kann nicht Objekt erstellen“ .. Kann mir ayone helfen ..

Dim DBCONSRT, QRYSTR As String 

Dim DBCON As Object 

Sub query() 

    DBCONSRT = "Provider=MSDASQL.1;Persist Security Info=False;User ID=user;Data Source=NZ1;DSN=NZ1;UID=user;SDSN=;HST=ibslnpb1.sysplex.homedepot.com;PRT=4101;Initial Catalog=PRTHD;" 

    DBCON = CreateObject("OLEDB.Connection") 
    DBCON.ConnectionString = DBCONSRT 
    DBCON.Open() 
End Sub 
+0

Ich könnte falsch liegen, aber ich denke nicht, dass Sie JDBC mit Excel verwenden können. Ich denke du willst ODBC. – bhamby

+0

Meinten Sie CreateObject ("ADODB.Connection") '? – Fionnuala

Antwort

0

Die JDBC-Funktionalität, die ich ziemlich sicher bin, wird nicht durch vba unterstützt, und ich glaube, Sie müssen ODBC-Anschlüsse verwenden, um eine Verbindung, wenn Sie DB2 versuchen, es in Excel zu integrieren.

Private Sub query() 
    DBCONSRT = "Provider=MSDASQL.1;Persist Security Info=False;User ID=user;Data Source=NZ1;DSN=NZ1;UID=user;SDSN=;HST=ibslnpb1.sysplex.homedepot.com;PRT=4101;In‌​itial Catalog=PRTHD;" 
    Using connection = New OleDbConnection(DBCONSRT) 
     connection.Open() 
     Dim cmd = connection.CreateCommand() 
     cmd.CommandText = QRYSTR //This is where your sql statement should go, or the variable that is equal to the query. 
     Using dr = cmd.ExecuteReader() 
      //Process your query results here 
     End Using 
    End Using 
End Sub 
+0

okie..i wird versuchen, mit ODBC-Konnektoren..Thanx – user1271146

+0

Ist der Code richtig? .... anders als Verbindungszeichenfolge – user1271146

+0

Sie müssten das ADODB-Objekt in OLEDB-Objekte ändern. – em3ricasforsale