SQL Statement Syntax Oracle Excel VBA
Hallo zusammen,
ich befinde mich im VBA Editor und möchte per ODBC eine Oracle 9 Datenbank abfragen und die Daten in Excel ausgeben. Folgenden Code verwende ich
Dim cnOra As ADODB.Connection
Dim rsOra As ADODB.Recordset
Dim StrSelect As String
Dim db_name As String
Dim UserName As String
Dim Password As String
Dim i As Long
Set cnOra = New ADODB.Connection
Set rsOra = New ADODB.Recordset
db_name = "Oracle"
UserName = "User"
Password = "pw"
cnOra.Open "DSN=" + db_name + ";UID=" + UserName + ";PWD=" + Password + ";"
rsOra.CursorLocation = adUseServer
rsOra.Open _
" select E.* " _
& " from (Infor_relEs E left join Infor_relAc A " _
& " on E.Datenfelder_1 = A.MNr) " _
& " where E.Satzart = 'UA' ", cnOra, adOpenForwardOnly _
i = 1
While Not rsOra.EOF
Worksheets("Oracle").Cells(i, 1) = rsOra![Datenfelder_1]
rsOra.MoveNext
i = i + 1
Wend
rsOra.Close
cnOra.Close
Set rsOra = Nothing
Die Datenbank wird gefunden nur das SQL Statement scheint einen Fehler zu haben, den ich einfach nicht finde. Im jetzigen Zustand kommt die Meldung "[Oracle][ODBC][Ora]ORA-00942: table or view does not exist.
Wo liegt mein Fehler?
Vielen Dank
ich befinde mich im VBA Editor und möchte per ODBC eine Oracle 9 Datenbank abfragen und die Daten in Excel ausgeben. Folgenden Code verwende ich
Dim cnOra As ADODB.Connection
Dim rsOra As ADODB.Recordset
Dim StrSelect As String
Dim db_name As String
Dim UserName As String
Dim Password As String
Dim i As Long
Set cnOra = New ADODB.Connection
Set rsOra = New ADODB.Recordset
db_name = "Oracle"
UserName = "User"
Password = "pw"
cnOra.Open "DSN=" + db_name + ";UID=" + UserName + ";PWD=" + Password + ";"
rsOra.CursorLocation = adUseServer
rsOra.Open _
" select E.* " _
& " from (Infor_relEs E left join Infor_relAc A " _
& " on E.Datenfelder_1 = A.MNr) " _
& " where E.Satzart = 'UA' ", cnOra, adOpenForwardOnly _
i = 1
While Not rsOra.EOF
Worksheets("Oracle").Cells(i, 1) = rsOra![Datenfelder_1]
rsOra.MoveNext
i = i + 1
Wend
rsOra.Close
cnOra.Close
Set rsOra = Nothing
Die Datenbank wird gefunden nur das SQL Statement scheint einen Fehler zu haben, den ich einfach nicht finde. Im jetzigen Zustand kommt die Meldung "[Oracle][ODBC][Ora]ORA-00942: table or view does not exist.
Wo liegt mein Fehler?
Vielen Dank
Please also mark the comments that contributed to the solution of the article
Content-Key: 83607
Url: https://administrator.de/contentid/83607
Printed on: April 26, 2024 at 16:04 o'clock
6 Comments
Latest comment
Moin firsty78,
falls Dein verwendeter User nicht gleichzeitig der Owner des Schemas ist, dann solltest Du den Schema-Namen mit angeben, z.B. "...from UnserSchema.Infor_relEs E..."
[OT]
Abgesehen davon halte ich Dein SQL für ...na ja, sagen wir mal syntaktischen Overkill.
Wenn Ziel der Aktion ist, alle Datenfelder_1 in einer Excel-Spalte aufzulisten mit dem Kriterium, dass die Satzart gleich 'UA' ist und dass sich ein LEFT JOIN an irgendeine andere Tabelle flanschen lässt...
...dann reicht auch ein...
[/OT]
Grüße
Biber
falls Dein verwendeter User nicht gleichzeitig der Owner des Schemas ist, dann solltest Du den Schema-Namen mit angeben, z.B. "...from UnserSchema.Infor_relEs E..."
[OT]
Abgesehen davon halte ich Dein SQL für ...na ja, sagen wir mal syntaktischen Overkill.
Wenn Ziel der Aktion ist, alle Datenfelder_1 in einer Excel-Spalte aufzulisten mit dem Kriterium, dass die Satzart gleich 'UA' ist und dass sich ein LEFT JOIN an irgendeine andere Tabelle flanschen lässt...
...dann reicht auch ein...
select Datenfelder_1 from UnserSchema.Infor_relEs where Satzart = 'UA';
Grüße
Biber
Moin firsty78,
Aber eigentlich ist das ein Nebenschauplatz.
Was macht denn das Hauptproblem? Wollen wir das erst abhandeln?
Grüße
Biber
Oder meinst Du, dass es etwas überdimensioniert ist?
Dies meinte ich.Ich habe den left join, da ich aus der relac ebenfalls Daten laden möchte.
Davon ist aber nichts zu sehen. Oben steht nur ein "select E.*", wobei E der Alias für die Tabelle Infor_relEs ist. Die Felder der geJOINten Tabelle A (= Infor_RelAc) erblicken nie das Tageslicht beziehungsweise sind nicht im Resultset enthalten.Aber eigentlich ist das ein Nebenschauplatz.
Was macht denn das Hauptproblem? Wollen wir das erst abhandeln?
Grüße
Biber