This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
vba:cast:ctosqlstr [27.03.2017 13:56:20] yaslaw |
vba:cast:ctosqlstr [12.02.2018 15:48:49] (current) yaslaw [Beispiele] |
||
---|---|---|---|
Line 6: | Line 6: | ||
fpath=/vba/cast | fpath=/vba/cast | ||
</const> | </const> | ||
- | ====== [VBA] cStrF ====== | + | ====== [VBA] toSqlStr() ====== |
//Wandelt einen Wert in die SQL-Scrheibweise. Gut für Filter und Where-Bedinungen einer Abfrage// | //Wandelt einen Wert in die SQL-Scrheibweise. Gut für Filter und Where-Bedinungen einer Abfrage// | ||
==Version %%version%% %%vdate%%== | ==Version %%version%% %%vdate%%== | ||
Line 40: | Line 40: | ||
===== Beispiele ===== | ===== Beispiele ===== | ||
- | > Für die Ausgabe der Resultate verwendete ich teilweise die Funktion [[vba:functions:print_r:]]. | ||
==== Einfache Bespiele ==== | ==== Einfache Bespiele ==== | ||
Line 80: | Line 79: | ||
Null ist immer wieder ien Spezialfall. Standardmässig wird Null in den Text Null gewandelt. | Null ist immer wieder ien Spezialfall. Standardmässig wird Null in den Text Null gewandelt. | ||
Um den Unterschied zu zeigen verwende ich hier die Ausgabe über [[vba:functions:print_r:]]. | Um den Unterschied zu zeigen verwende ich hier die Ausgabe über [[vba:functions:print_r:]]. | ||
- | <code vb>' So sieht die Ausgabe von print_r fr Null aus | + | <code vb>' So sieht die Ausgabe von print_r für Null aus |
d Null | d Null | ||
<Null> | <Null> | ||
Line 105: | Line 104: | ||
? toSqlStr(dbNumeric, Null, sspNullToEmpty, 11) | ? toSqlStr(dbNumeric, Null, sspNullToEmpty, 11) | ||
11</code> | 11</code> | ||
+ | |||
+ | ==== Boolean ==== | ||
+ | Für Boolean wird cBool zum Konvertieren verwendet | ||
+ | <code>d toSqlStr(dbBoolean, 1=1) | ||
+ | <String> 'TRUE' | ||
+ | |||
+ | d toSqlStr(dbBoolean, "False") | ||
+ | <String> 'FALSE'</code> | ||
+ | |||
+ | ==== Array ==== | ||
+ | Bei einem Array wird das Format auf alle Elemente angewendet und das Result erscheint als List, die in einem SQL für IN() verwendet werden kann | ||
+ | <code vb>? toSqlStr(dbLong, array(13,14,"16")) | ||
+ | 13,14,16 | ||
+ | |||
+ | ? toSqlStr(dbText, array("a", "b", "c")) | ||
+ | 'a','b','c' | ||
+ | |||
+ | ? toSqlStr(dbDate, array(now, now+1)) | ||
+ | #03/27/2017#,#03/28/2017# | ||
+ | |||
+ | ? toSqlStr(dbLong, array(13,"ABC","16", NULL)) | ||
+ | 13,#TypeMismatch,16,NULL</code> | ||
==== Fehlerhandling ==== | ==== Fehlerhandling ==== | ||
Line 121: | Line 142: | ||
'Beim folgenden Aufruf wird die Verarbeitung angehalten und der es wird in den Debug-Mode gewechselt | 'Beim folgenden Aufruf wird die Verarbeitung angehalten und der es wird in den Debug-Mode gewechselt | ||
? toSqlStr(dbLong, "abc", sspOnErrorAssert)</code> | ? toSqlStr(dbLong, "abc", sspOnErrorAssert)</code> | ||
+ | |||
+ | ==== Beipiel in einem SQL-String in VBA ==== | ||
+ | Und jetzt mal angewendet: | ||
+ | <code vb> Dim sql As String | ||
+ | Dim fromDate As Date, toDate As Date | ||
+ | Dim flags() As Variant | ||
+ | | ||
+ | fromDate = Now - 10 | ||
+ | toDate = Now | ||
+ | flags = Array("a", "u", "k") | ||
+ | | ||
+ | sql = "SELECT * FROM myTable WHERE " & _ | ||
+ | " flag in (" & toSqlStr(dbText, flags) & ") " & _ | ||
+ | "AND my_date BETWEEN " & toSqlStr(dbDate, fromDate) & " AND " & toSqlStr(dbDate, toDate) | ||
+ | | ||
+ | Debug.Print sql</code> | ||
+ | <code sql>SELECT * FROM myTable WHERE flag in ('a','u','k') AND my_date BETWEEN #03/17/2017# AND #03/27/2017#</code> | ||
===== Code ===== | ===== Code ===== | ||
<source '%%fpath%%/%%fname%%' vb> | <source '%%fpath%%/%%fname%%' vb> |