Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1776to1780
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

OraSession Oracleinprocserver

OraSession Oracleinprocserver
31.08.2020 14:00:00
Michael
Habe bis vor kurzem immer auf eine Oracle 11 DB mittels folgenden Codes zugreifen können:
Dim OraSession As Object
Dim OraDatabase As Object
Set OraSession = CreateObject("OracleInProcServer.XOraSession")

Seit Umstellung der DB auf Version 19C und damit auch Erneuerung der Client software am PC bekomme ich nur die Fehlermeldung : runtime error: The specified module could not be found.
Das ist aufgrund der Umstellung auch nicht verwunderlich.
Ich benötige nun eine Hilfe, wie ich den alten Code (Set OraSession = CreateObject("OracleInProcServer.XOraSession"))
für die V19c ändern kann.
Im Vorhinein schon mal herzlichen Dank
Michael

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: OraSession Oracleinprocserver
31.08.2020 14:25:04
peterk
Hallo
Laut Oracle:
Customers may migrate their OO4O data access code to ADO/OLE DB.
d.h. Du musst auf ADO umschreiben.
Peter
AW: OraSession Oracleinprocserver
01.09.2020 09:55:53
Michael
Danke für die Antwort.
Leider weiss ich nicht, wie ich das für ADO/OLE umschreiben soll.
Gibt es dafür Beispiele bzw. was muss ich in Vorbereitung (Referenzen etc. ) machen?
Bin für jede Unterstützung dankbar!
lg
Michael
AW: OraSession Oracleinprocserver
01.09.2020 14:28:22
Michael
Prozedur liest nur Daten aus der Oracle Datenbank aus - kein Schreiben!
Hier ein Teil der Routine der am Besten beschreibt wie das mit ODBC war.
-------------------------------------------------------------------------
Sub perf_input()
Dim OraSession As Object
Dim OraDatabase As Object
Dim RS As Object
Sheets("STU1").Activate
Range("A1").Select
'oeffnen der Oracle DAtabase und üebernahme der Daten
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.DbOpenDatabase("appdbprod", "maskdba/maskdbapw", 0&)
SEL = "C.CODE,A.TYP"
SOU1 = "MASKDBA.AKTIVE_MASKEN A, "
SOU2 = "MASKDBA.RETICLES B, "
SOU3 = "MASKDBA.MASK_LOCATIONS C "
SOU = SOU1 & SOU2 & SOU3
con = "A.ID=B.ID_MASK and B.ID_LOCATION=C.ID and B.AKTIV = 1 and (C.CODE='N' or C.CODE='E' or C.CODE='I' or C.CODE='K' or C.CODE='Q' or C.CODE='T')"
Set RS = OraDatabase.DbCreateDynaset("select " & SEL & " from " & SOU & " where " & con, 0&)
'Auslesen des Recordset
I = 0
While Not RS.EOF
For j = 0 To RS.Fields.Count - 1
If j = 0 Then
LOC = RS.Fields(j).Value
If LOC = "N" Then C1 = C1 + 1
If LOC = "E" Then C2 = C2 + 1
If LOC = "I" Then C3 = C3 + 1
If LOC = "K" Then C4 = C4 + 1
If LOC = "Q" Then C5 = C5 + 1
If LOC = "T" Then C6 = C6 + 1
' If X1 End If
If j = 1 Then
LOC = RS.Fields(j).Value
If LOC If LOC >= 2 Then C8 = C8 + 1
End If
Next j
RS.MoveNext
I = I + 1
Wend
RS.Close
OraDatabase.Close
_________________________________________________________________________________________
Aufgrund der Tips habe ich zumindest die Anmeldung via ADODB hinbekommen, aber beim RS.OPEN habe ich noch gewlatige probleme:
' Microsoft ActiveX Data Object 2.n Library must be referenced
Dim conDB As ADODB.Connection ' Connection Object
Dim rsRows As ADODB.Recordset ' DB Recordset
Dim strConnect As String ' Connect-String
strConnect = "Provider=OraOLEDB.Oracle" & _
";Data Source=" & "appdbprod" & _
";User Id=" & "maskxxx" & _
";Password=" & "maskxxxpw"
' Make the Connection
Set conDB = New ADODB.Connection ' New Instance of Connection
conDB.ConnectionString = strConnect ' Set the ConnectionString in Object
conDB.Open strConnect ' Connect to the Database
' Open Recordset and execute SQL
Set rsRows = New ADODB.Recordset ' New Instance of Recordset
rsRows.CursorLocation = adUseClient ' Set the CursorLocation-Attribute
---> rsRows.Open "SELECT * FROM myTable", conDB, adOpenStatic ' Select to DB
'....processing recordset
keine Ahnung wie ich das mit dem Befehl von oben unter "Auslesen der Recordset" (Set RS = OraDatabase.DbCreateDynaset("select " & SEL & " from " & SOU & " where " & con, 0&)) ändern soll?
lg
Michael
Anzeige
AW: OraSession Oracleinprocserver
01.09.2020 15:13:33
peterk
Hallo
Sollte so ähnlich funktionieren

Sub neu()
' Microsoft ActiveX Data Object 2.n Library must be referenced
Dim conDB As ADODB.Connection ' Connection Object
Dim rsRows As ADODB.Recordset ' DB Recordset
Dim strConnect As String ' Connect-String
strConnect = "Provider=OraOLEDB.Oracle" & _
";Data Source=" & "appdbprod" & _
";User Id=" & "maskxxx" & _
";Password=" & "maskxxxpw"
' Make the Connection
Set conDB = New ADODB.Connection ' New Instance of Connection
conDB.ConnectionString = strConnect ' Set the ConnectionString in Object
conDB.Open strConnect ' Connect to the Database
' Open Recordset and execute SQL
Set rsRows = New ADODB.Recordset ' New Instance of Recordset
rsRows.CursorLocation = adUseClient ' Set the CursorLocation-Attribute
SEL = "C.CODE,A.TYP"
SOU1 = "MASKDBA.AKTIVE_MASKEN A, "
SOU2 = "MASKDBA.RETICLES B, "
SOU3 = "MASKDBA.MASK_LOCATIONS C "
SOU = SOU1 & SOU2 & SOU3
con = "A.ID=B.ID_MASK and B.ID_LOCATION=C.ID and B.AKTIV = 1 and (C.CODE='N' or C.CODE='E'  _
or C.CODE='I' or C.CODE='K' or C.CODE='Q' or C.CODE='T')"
DBQuery = "select " & SEL & " from " & SOU & " where " & con & ";"
rsRows.Open Source:=DBQuery, ActiveConnection:=conDB, _
CursorType:=adOpenStatic, LockType:=adLockOptimistic
' copy whole recordset to a table, just for testing
'Worksheets("Tabelle1").Cells(1, 1).CopyFromRecordset rsRows
While Not rsRows.EOF
For j = 0 To rsRows.Fields.Count - 1
If j = 0 Then
Loc = rsRows.Fields(j).Value
If Loc = "N" Then C1 = C1 + 1
If Loc = "E" Then C2 = C2 + 1
If Loc = "I" Then C3 = C3 + 1
If Loc = "K" Then C4 = C4 + 1
If Loc = "Q" Then C5 = C5 + 1
If Loc = "T" Then C6 = C6 + 1
' If X1 = 2 Then C8 = C8 + 1
End If
Next j
rsRows.MoveNext
i = i + 1
Wend
End Sub

Anzeige
AW: OraSession Oracleinprocserver
01.09.2020 15:18:00
Michael
Danke für die schnelle Antwort!
Werde es morgen testen und berichten!
Herrlich wie schnell hier geholfen wird!!!
lg
Michael
AW: OraSession Oracleinprocserver
01.09.2020 16:38:47
Hajo_Zi
Hallo Michael,
offen bedeutet es soll noch eine Antwort kommen.
Warum ist dein Beitrag Offen.
Du willst doch was machen. Soll jemand vorbei kommen?
Das ist nur meine Meinung zu dem Thema.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige