ich nutze folgenden Code um Oracle auszulesen. Hat auch immer ohne Probleme funktioniert. Nun werden es jeden Monat mehr Datensätze, da immer eine weitere Monatsscheibe hinzukommt.
Eigentlich müssen 33.401 Datensätze in Excel ankommen. Es sind aber nur 32.765. Der sql an sich ist In Ordnung. Wenn ich die Jahre 2008 und 2009 getrennt abfrage kommen in Summe alle Datensätze.
Sub ProcSqlCreate()
Dim strSQLString As String
Dim strFivServer As String
Dim strFormKopSP As Integer
Dim intFormKopZE As Integer
Dim verz As String
On Error Resume Next
strFivServer = Range("rP1.FIVServer").Value
verz = ActiveWorkbook.Path
'***da steht der sql drin
Open verz & "\SqlCreate.txt" For Input As #1
strSQLString = Input(LOF(1), 1)
Close #1
'***Position des Datenimports aus Oracle
strFormKopSP = 2 '***aufsetzen Importspalte
intFormKopZE = 2 '***aufsetzen Importzeile
procSQL_Beginn
Call procOracle(strSQLString, strFivServer, strFormKopSP, intFormKopZE)
procSQL_Ende
End Sub
Option Explicit
Sub procOracle(strSQLString As String, strSERVER As String, strFormKopSP As Integer, _
intFormKopZE As Integer)
Dim cn As Connection
Dim rs As Recordset
Dim conn As String
Dim SQLString As String
Dim xx As Worksheet ' das Ziel-Tabellenblatt in Excel
Dim i As Integer
Dim J As Integer
Dim anzZeilen As Integer
On Error GoTo fehler
Set xx = ActiveSheet '***das Ziel-Tabellenblatt in Excel
'***Die datenbank öffnen
Set cn = New ADODB.Connection
Open "C:\AZ_DATEN\OraclePassW.txt" For Input As #1
conn = Input(LOF(1), 1)
Close #1
conn = conn & ";DRIVER={Microsoft ODBC for Oracle};SERVER=" & strSERVER + ";"
With cn
.ConnectionString = conn
.Open
End With
'***Definieren was geholt werden soll
SQLString = strSQLString
Set rs = New ADODB.Recordset
rs.Open SQLString, cn, adOpenDynamic, adLockReadOnly
'***Die Feldnamen der Datenbanktabelle in die definierte Zeile der Exceltabelle schreiben
For J = 0 To rs.Fields.Count - 1
xx.Cells(intFormKopZE, J + strFormKopSP) = rs.Fields.Item(J).Name '***und auf definerte _
Spalte aufsetzen
Next
'***Jetzt alle Sätze holen und in die Exceltabelle schreiben
i = intFormKopZE '***auf Zeile 2 beginnen
rs.MoveFirst
Do While rs.EOF = False
i = i + 1
For J = 0 To rs.Fields.Count - 1
If IsNull(rs.Fields.Item(J).Value) = False Then
xx.Cells(i, J + strFormKopSP) = rs.Fields.Item(J).Value '***und auf die definierte _
Spalte aufsetzen
End If
Next
rs.MoveNext
Loop
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
Set xx = Nothing
fehler:
Exit Sub
End Sub
Gibt es eine Begrenzung im Zusammenspiel Oracle und Excel? Ich Habe sonst keine Erklärung.VG
Detlef