2010-08-03 9 views
10

Ich versuche, verschiedene VBA-Projekte mit einem Oracle 10g-Back-End mit ADO (2.8) und keine TNS zu verbinden.Verbindungsstringsyntax für Classic ADO/ODBC/Oracle 10g EZConnect

  1. eine Oracle Instant Client
  2. den begleitenden ODBC-Treiber
  3. Installieren einrichten (Testen Sie die Verbindung mit EZConnect über: Nach verschiedenen Versuchen haben wir, dass die einfachste Reihe von Schritten für eine saubere Installation umfassen entschieden SQL plus)
  4. (Testen Sie die Verbindung mit einem Windows DSN erstellen)

Alles bis hier funktioniert gut. Das Problem ist, kann ich nicht die Syntax herauszufinden, ADO zu sagen, die Instant Client ODBC-Treiber zu verwenden, die in meiner ODBC-Treiber-Liste erscheint als „Oracle in MyTest“ (ohne Anführungszeichen). Die Verwendung des MSFT ODBC-Treibers mit EZConnect als this post schlägt vor, dass es nicht besser funktioniert als vor dem Einrichten des Instant-Clients (was überhaupt nicht der Fall ist). Aber this post scheint es möglich vorzuschlagen, ohne Angabe genau, wie und connectionstrings.com nur sagt Ihnen, was die Datenquelle Teil der Zeichenfolge aussieht, dh EinUser/irgendein @ Aserver: Portnummer/InstanceName

Kurzversion: Was ist der Exakte Syntax einer klassischen ADO-Verbindungszeichenfolge, die auf einen Instant-Client-ODBC-Treiber verweist?

Vielen Dank im Voraus für Ihre Hilfe. Habe mir eine dumme lange Zeit mit SO gehend zu erhalten ...

+0

Dieser Beitrag http://forums.oracle.com/forums/thread.jspa?threadID=621679&tstart=90 scheint zu erklären, warum MSFTs ODBC-Treiber den ORCL-Instant-Client nicht mag - er liefert DLLs, die er nicht unterstützt für ODBC, ohne ihre Abhängigkeiten einzuschließen. leider nichts, was ich tun könnte, würde MSFT Fahrer bekommen, um diese Abhängigkeiten zu sehen sogar, wenn ich sie in in den Ordner IC kopiert. – downwitch

+0

Bei der Arbeit (ich bin jetzt zu Hause, meine Zeitzone ist MEZ) machen wir das die ganze Zeit. Es gibt (eine vorhandene) Access DB und manchmal, wenn eine neue Oracle DB hinzugefügt wird, füge ich im Kontrollzentrum eine ODBC Verbindung hinzu (ähnlich wie hier beschrieben http://support.microsoft.com).com/kb/303968) Als nächstes gehe ich und dann gehe das Durchgangsobjekt in der Access DB kopieren und ändern Sie den DB-Namen in dieser endlos langen Zeichenfolge. Ich denke du suchst nach dieser langen Saite. Nun, wenn deine Frage morgen noch unbeantwortet ist, muss ich vielleicht diese Zeichenfolge einfügen und es könnte helfen. – hol

+0

Vielen Dank für Ihre Hilfe, aber ich bin tatsächlich auf der Suche nach einer Verbindung direkt zum Oracle-Server in seiner "nativsten" Syntax, die entweder EZ Connect oder eine Art Verbindungsstring Embedded TNS wie dieser Artikel beschreibt mit http: // www.codeproject.com/KB/vbscript/connection_string.aspx aber was fehlschlägt, wie ich in meinem ersten Kommentar beschreibe. – downwitch

Antwort

2

Versuchen Sie, diese und die Werte gegebenenfalls ersetzen:

Set Connection = CreateObject("ADODB.Connection") 

blnTest = Connection.Open("Driver={Oracle in instantclient};Dbq=127.0.0.1:1521/SERVICENAMEHERE", "USERNAME", "PASSWORD") 

Wenn Oracle in instant funktioniert nicht die HKEY_LOCAL_MACHINE \ SOFTWARE überprüfen \ ODBC \ ODBCINST.INI \ ODBC Treiber Registrierungsschlüssel, um zu sehen, welcher Wert für den Oracle Instant Client ist (es kann eine Versionsnummer angehängt sein).

Wenn dies noch nicht für Sie arbeiten. Hinterlasse einen Kommentar mit den Details was passiert ist und ich werde versuchen, die Antwort für dich anzupassen.

0
' Create a connection object.' 
Dim cn As ADODB.Connection 
Set cn = New ADODB.Connection 

' Create a recordset object.' 
Dim rs As ADODB.Recordset 
Set rs = New ADODB.Recordset 

' Provide the connection string.' 
Dim strConn As String 
Dim str As String 

'Use the SQL Server OLE DB Provider.' 
strConn = "Driver=(Oracle in OraHome92);" & "Data Source=;Uid=;Pwd=;" 

'Now open the connection.' 
cn.Open strConn 
With rs 

    ' Assign the Connection object.' 
    ActiveConnection = cn 

    ' Extract the required records.' 
    .Open "SELECT ", cn 


End With 
4

Ähnlich ‚user1206604 Antwort - Ich habe eine ODBC-Verbindung mit ODBC-Datenquellen-Administrator bis (halber Beispiel werden wir es nennen‚DEMO‘) und schließen Sie wie folgt aus:

Dim conn As New adodb.Connection 
Set conn = New adodb.Connection 

connStr = "Provider=OraOLEDB.Oracle;Data Source=DEMO;User Id=yourUserID;Password=yourPassword;" 
conn.Open connStr 

Dim api As New adodb.Recordset 
Set api = New adodb.Recordset 

yourQueryString = "SELECT foo FROM bar" 
api.Open yourQueryString, conn, adOpenDynamic, adLockReadOnly 
'adjust above setting as needed 

while not api.EOF 
    'do interesting stuff here 
wend 

'clean up resources 
api.Close 
Set api = Nothing 

conn.Close 
Set conn = Nothing 

Die ODBC-Datenquellen-Administrator wird (auf meinem Rechner) im Startmenü> Programme gefunden> Oracle - oraClient10g> Konfiguration und Migration tools> Microsoft ODBC Administrator und sieht wie folgt aus:

ODBC Data Source Administrator

+0

Das hat mir das Leben gerettet. Vielen Dank! Ich musste einfach "Dim connStr, yourQueryString als String" deklarieren und "api.MoveNext" zur Schleife hinzufügen. – SeaBass