User Tools

Site Tools


vba:cast:ctosqlstr

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
vba:cast:ctosqlstr [27.03.2017 12:56:44]
yaslaw created
vba:cast:ctosqlstr [12.02.2018 15:48:49] (current)
yaslaw [Beispiele]
Line 2: Line 2:
     version=1.0.0     version=1.0.0
     vdate=27.03.2017     vdate=27.03.2017
-    fname=cast_ctosqlstr.bas+    fname=cast_tosqlstr.bas
     ns=%NAMESPACE%     ns=%NAMESPACE%
     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 93: Line 92:
 ? toSqlStr(dbText,​ Null, sspNullToEmpty) ? toSqlStr(dbText,​ Null, sspNullToEmpty)
 ''</​code>​ ''</​code>​
 +
 +Wird ein iNullDefault mitgegeben, dann übersteuert dieser die Parameters,
 +Das funktioniert dann analog zu einem NZ()
 +<code vb>? toSqlStr(dbNumeric,​ 99,, 11)
 +99
 +
 +? toSqlStr(dbNumeric,​ Null,, 11)
 +11
 +
 +'​sspNullToEmpty wird ignoriert, da ein iNullDefault gesetzt ist
 +? toSqlStr(dbNumeric,​ Null, sspNullToEmpty,​ 11)
 +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 ====
 +Als Standard wird einFeulertext ausgegeben
 +<code vb>? toSqlStr(dbLong,​ "​abc"​)
 +#​TypeMismatch
 +
 +'​sspOnErrorReturnError ist der Default-Parameter
 +? toSqlStr(dbLong,​ "​abc",​ sspOnErrorReturnError)
 +#​TypeMismatch
 +
 +'Es kann auch einfach der Wet durch Null ersetzt werden.
 +? toSqlStr(dbLong,​ "​abc",​ sspOnErrorReturnNull)
 +Null
 +
 +'Beim folgenden Aufruf wird die Verarbeitung angehalten und der es wird in den Debug-Mode gewechselt
 +? 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 =====
 +<source '​%%fpath%%/​%%fname%%'​ vb>
vba/cast/ctosqlstr.1490612204.txt.gz · Last modified: 27.03.2017 12:56:44 by yaslaw