Wiki der Access Code Library

Gemeinsam zu mehr Effizienz in der Anwendungserstellung

SQL-Text für Filterbedingung

Aus Access Code Library
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K (Datentyp: Zahlen (Integer, Double, ...))
K
Zeile 24: Zeile 24:
Anm.: Die gleichen Regeln gelten natürlich auch bei Bedingungen mit Like, >=, <= usw.
Anm.: Die gleichen Regeln gelten natürlich auch bei Bedingungen mit Like, >=, <= usw.
-
 
-
====Einsatz von Hilfsprozeduren und Klassen aus der CodeLib====
 
-
Vereinfachte Schreibweise mittels Hilfsfunktion ''TextToSqlText'' aus [http://source.access-codelib.net/filedetails.php?repname=CodeLib&path=%2Ftrunk%2Fdata%2FSqlTools.bas SqlTools]:
 
-
<source>
 
-
FilterString = "Textfeld = " & TextToSqlText(FilterWertVariable)
 
-
</source>
 
-
 
-
Verwendung von [http://source.access-codelib.net/filedetails.php?repname=CodeLib&path=%2Fbranches%2Fdraft%2Fdata%2FFilterStringBuilder.cls FilterStringBuilder]
 
-
<source>
 
-
With NewFilterStringBuilder
 
-
 
-
  .Add "Textfeld", SQL_Text, SQL_Equal, FilterWertVariable
 
-
  FilterString = .ToString
 
-
 
-
End With
 
-
</source>
 
===Datentyp: Zahlen (Integer, Double, ...)===
===Datentyp: Zahlen (Integer, Double, ...)===
Zeile 56: Zeile 40:
====Einsatz von Hilfsprozeduren und Klassen aus der CodeLib====
====Einsatz von Hilfsprozeduren und Klassen aus der CodeLib====
-
Vereinfachte Schreibweise mittels Hilfsfunktion ''NumberToSqlText'' aus [http://source.access-codelib.net/filedetails.php?repname=CodeLib&path=%2Ftrunk%2Fdata%2FSqlTools.bas SqlTools]:
+
 
 +
===== Textfeld =====
 +
Hilfsfunktion für Umwandlung in Text aus [http://source.access-codelib.net/filedetails.php?repname=CodeLib&path=%2Ftrunk%2Fdata%2FSqlTools.bas SqlTools]:
 +
<source>
 +
FilterString = "Textfeld = " & TextToSqlText(FilterWertVariable)
 +
</source>
<source>
<source>
FilterString = "Zahlenfeld = " & NumberToSqlText(FilterWertVariable)  
FilterString = "Zahlenfeld = " & NumberToSqlText(FilterWertVariable)  
</source>
</source>
 +
Verwendung von [http://source.access-codelib.net/filedetails.php?repname=CodeLib&path=%2Fbranches%2Fdraft%2Fdata%2FFilterStringBuilder.cls FilterStringBuilder]
Verwendung von [http://source.access-codelib.net/filedetails.php?repname=CodeLib&path=%2Fbranches%2Fdraft%2Fdata%2FFilterStringBuilder.cls FilterStringBuilder]
 +
<source>
 +
With NewFilterStringBuilder
 +
 +
  .Add "Textfeld", SQL_Text, SQL_Equal, FilterWertVariable
 +
  FilterString = .ToString
 +
 +
End With
 +
</source>
<source>
<source>
With NewFilterStringBuilder
With NewFilterStringBuilder

Version vom 20:35, 10. Mai 2015

Wenn ein Filterausdruck als String zusammengesetzt wird, müssen die Filterwerte SQL-konform in Text konvertiert werden.

Inhaltsverzeichnis

Datentyp: Text

Der Text-Filterwert muss mit ' umschlossen sein. Bei Jet/ACE ist z.B. auch " möglich.

Filterwert: abc

... Textfeld = 'abc'

Dabei ist zu beachten, dass ' im Filterwert im obigen Fall verdoppelt werden müssen, da sonst der Text zu früh als beendet markiert wird.

Filterwert: a'b

... Textfeld = 'a''c'

=> Filterwert ist in Variable gespeichert:

FilterString = "Textfeld = '" & Replace(FilterWertVariable, "'", "''") & "'"

Anm.: Die gleichen Regeln gelten natürlich auch bei Bedingungen mit Like, >=, <= usw.

Datentyp: Zahlen (Integer, Double, ...)

Zahlen sind im amerikanischen Zahlenformat darzustellen (Punkt statt Komma).

Filterwert: 123,45

... Textfeld = 123.45

=> Filterwert ist in Variable gespeichert:

FilterString = "Zahlenfeld = " & Str(FilterWertVariable)

Einsatz von Hilfsprozeduren und Klassen aus der CodeLib

Textfeld

Hilfsfunktion für Umwandlung in Text aus SqlTools:

FilterString = "Textfeld = " & TextToSqlText(FilterWertVariable)
FilterString = "Zahlenfeld = " & NumberToSqlText(FilterWertVariable)


Verwendung von FilterStringBuilder

With NewFilterStringBuilder
 
   .Add "Textfeld", SQL_Text, SQL_Equal, FilterWertVariable
   FilterString = .ToString
 
End With
With NewFilterStringBuilder
 
   .Add "Zahlenfeld", SQL_Numeric, SQL_Equal, FilterWertVariable
   FilterString = .ToString
 
End With