ich lese meine sql aus einer Textdatei in eine Variable ein. Dabei verschwinden die Komma. Hier ein Teil der Textdatei:
SELECT DIM_VTNR.PART_BGVG,DIM_VTNR.VTNR_SVTNR,DIM_VTNR.VTNR_SVTNRNAME,FAKT_NEUGESCHAEFT_AGT.AUSWZEIT,FAKT_NEUGESCHAEFT_AGT.NEU_VJ_TAGGENAU,
SUM(CASE WHEN DIM_PRODSL.PRODSL_STUFE6_ID=2020000
AND FAKT_NEUGESCHAEFT_AGT.ANP_ID IN (300,999)
THEN FAKT_NEUGESCHAEFT_AGT.NEU_LFNST
ELSE 0
END) AS LEBEN_BEWST,
Dazu nutze im Moment folgenden Code:
Sub ProcSqlCreate_BJ()
Dim strSQLString As String
Dim strFivServer As String
Dim strFormKopSP As Integer
Dim intFormKopZE As Integer
Dim verz As String
Dim strZeile1 As String
Dim strZeile2 As String
On Error Resume Next
strFivServer = Range("rP1.FIVServer").Value
verz = ActiveWorkbook.Path
'***1. Öffnen der Datei
Open verz + "\SqlCreate_BJ.txt" For Input As #1
Do While Not EOF(1) '***Schleife bis Dateiende.
Input #1, strZeile1 '***aktuelle Zeile einlesen
'***sql zusammensetzen
strZeile2 = strZeile2 _
& Chr(10)
Loop
'***Schliessen der Datei weil Dateiende erreicht wurde
Close #1
'***Position des Datenimports aus Oracle
strFormKopSP = 3 '***aufsetzen auf Spalte C
intFormKopZE = 2 '***aufsetzen bei Zeile 3
'***Definieren was geholt werden soll
strSQLString = strZeile2
Call procOracle(strSQLString, strFivServer, strFormKopSP, intFormKopZE)
End Sub
Dann geht es mit ADO auf Oracle weiter. In der Variable strZeile2 sind die Komma nicht mehr vorhanden. Jetzt habe ich das über einen Umweg gelöst. In der Textdatei wandele ich die Komma in Semikolon um und beim Import in die Variable dann mit
VBA.Replace(strZeile1, ";", ",", 1)
wieder zurück in Komma. Nur das ist sicherlich nicht besonders elegant. Mit der Textdatei arbeite ich, weil ich die SQL als Pass-Through-Abfrage direkt auf Oracle teste und dann erst nach erfolgtem Test in meinen Excelablauf einarbeite. Und dann brauche ich die Pass-Through-Abfrage einfach nur in eine Textdatei kopieren.
VG Detlef