String mit IF-Funktion trennen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: String mit IF-Funktion trennen
von: Allan Bachmann
Geschrieben am: 25.06.2015 11:56:30

Hallo zusammen
Ich möchte gerne ein SQL-Insert Statement schreiben via ADO-Connection und Recordset. Je nach Fall gibt es einen ausgelesenen Wert oder einen NULL-Wert wenn die Zelle in den Ursprungsdaten leer ist. Ich versuche mit einer If-Anweisung die Anführungszeichen dementsprechend zu unterscheiden & schreiben. Kann mir da jemand ein bisschen helfen? Besten Dank fürs lesen und eure Zeit.
Freundliche Grüsse
Allan Bachmann
--------------------
UseCases:
--------------------
UC1:
INSERT INTO tbl1.customer (COL1, COL2, COL3)
VALUES ('Wert1', 'Wert2', '')
UC2:
INSERT INTO tbl1.customer (COL1, COL2, COL3)
VALUES ('Wert1', '', 'Wert3')
Ich kann den String nicht richtig parsen und eine Fallunterscheidung vollziehen.
bzw. mein Statement gibt mir immer ein redundantes ", an.
--------------------
Urpsrungsdaten:
--------------------
Tabelle: tbl1
Anz. Spalten: 25
NULL-Werte vorhanden: Ja in Col1, Col2 & Col3
--------------------
Ziel:
--------------------
Oracle
--------------------
Code:
--------------------


Public Function writeInsertStatement(Optional Template As String, Optional intSheet As Integer)  _
 _
As Boolean
    
    On Error GoTo Error:
    
    Dim ws As Worksheet
    Dim lRow As Long
    Dim strSQL As String
    Dim z As Integer
    Set ws = ThisWorkbook.Worksheets("Template")
    lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
    
    strSQL = "DELETE FROM TBL1"
    recset.Open strSQL, con
            
            For z = 2 To lRow
    
                If ws.Cells(z, 9).Value = "" Then GoTo UC1:
                If ws.Cells(z, 9).Value = "" Then GoTo UC2:
    
    strSQL = "INSERT INTO TBL1 (SUBMIFK, FNAME, LNAME, MA, PERSNUM, LINEM, UNIT, COMPY,  _
NLANGUAGE) " & _
                         "VALUES ('" & Worksheets("Template").Cells(z, 10) & "'" & _
                         ", '" & Worksheets("Template").Cells(z, 3) & "'" & _
                         ", '" & Worksheets("Template").Cells(z, 2) & "', '"
                         Else: Worksheets("Template").Cells(z, 9) = "'" _
                         & ", '" & Worksheets("Template").Cells(z, 22) _
                         & "', '" & Worksheets("Template").Cells(z, 12) _
                         & "', '" & Worksheets("Template").Cells(z, 5) _
                         & "', '" & Worksheets("Template").Cells(z, 15) _
                         & "', '" & Worksheets("Template").Cells(z, 13) & "');"
                    
                    MsgBox strSQL
                    recset.Open strSQL, con
                    z = z + 1
                End If
            Next z
            
    writeInsertStatement = True
UC1:
Worksheets("Template").Cells(z, 9) = "'', "
UC2:
Worksheets("Template").Cells(z, 12) = "'', "
Error:
Next z
End Function

Bild

Betrifft: Gänsefüsschen
von: Frank
Geschrieben am: 25.06.2015 20:31:37
Hallo Allan,
ohne Deinen Post ganz verstanden zu haben (Ich kann den String nicht richtig parsen???), würde ich Dir empfehlen, in Verkettungen und bei Vergleichen CHR(32) für die Gänsefüsschen oder CHR(39) für's Hochkomma zu nutzen.
Bsp.: statt "VALUES ('" & Worksheets("Template").Cells(z, 10) & "'" & _
besser "VALUES ('" & Worksheets("Template").Cells(z, 10) & CHR(39) & _
Grüsse,
Frank

 Bild

Beiträge aus den Excel-Beispielen zum Thema "String mit IF-Funktion trennen"