Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1432to1436
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

String mit IF-Funktion trennen

String mit IF-Funktion trennen
25.06.2015 11:56:30
Allan
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

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Gänsefüsschen
25.06.2015 20:31:37
Frank
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
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige