AW: SQL mit variablen Wert aus Zelle A2
23.03.2010 11:06:22
Detlef
Hallo,
hier der Code zum Einlesen der TXT:
Sub ProcSqlCreate_AA()
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
Open verz & "\SqlCreate_AA.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
und hier der Code für die Einbindung von Oracle:
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 Long
Dim J As Long
Dim anzZeilen As Long
' 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
'***optimale Spaltenbreite einstellen
' Cells.Select
' Selection.Columns.AutoFit
Set rs = Nothing
Set cn = Nothing
Set xx = Nothing
fehler:
Exit Sub
End Sub
Gruß Detlef