SqlGenerator in VBA einsetzen

Hilfsmittel zum Erstellen von SQL-Anweisungen

SqlGenerator in VBA einsetzen

Beitragvon Josef Pötzl » Fr 24. Jan 2014, 13:01

Hallo!

Beim Basteln an einer parallen Struktur eines "ConditionStringBuilders" ist mir folgendes aufgefallen:

Mit der VBA-Klasse erstelle ich eine Bedingung folgendermaßen:
Code: Alles auswählen
   With New FilterStringBuilder

      .Add "TextField", SQL_Text, "abc", SQL_Equal
      .Add "NumericField", SQL_Numeric, 133.45, SQL_Equal
      .Add "DateField", SQL_Date, Date, SQL_Equal
      .Add "BoolField", SQL_Boolean, True, SQL_Equal

      Debug.Print .ToString

   End With


Mit der DotNet-Variante sieht das (im Test) so aus:
Code: Alles auswählen
   With ACLib.DaoSql

      .Where "TextField", RelationalOperators_Equal, "abc"
      .Where "NumericField", SQL_Equal, 133.45
      .Where "DateField", SQL_Equal, Date
      .Where "BoolField", SQL_Equal, True

      Debug.Print Replace(.ToString, "Where ", vbNullString)

   End With

Anm.: Reihenfolge der Parameter sollen erstmal egal sein.

Problem: Da in der Net-Variante nicht der Ziel-Datentyp übergeben wurde, wird das Datum falsch in Text konvertiert.

Was ist nun für die DotNet-Variante sinnvoller:
  • Den String-Wert weiterhin in Abhängigkeit des übergebenen Datentyps ermitteln (und Sonderfälle wie Date() extra abfragen
  • Einen Parameter für den gewünschten Datentyp (so wie in der oben gezeigten VBA-Variante) ergänzen (Optional mit Standard-Einstellung ... Typ aus Value)
  • Die Field-Schnittstelle erweitern und den Datenyp des Datenfeldes dort einstellbar machen (in der VBA-Schnittstelle wird das im Prinzip zwar wieder ein zusätzlicher Parameter werden, aber der würde dann auf das Feld zielen - oder man verwendet den Field-Generator)

Ich tendiere zur letzten Variante.
Code: Alles auswählen
.Add "TextField", FieldDataType.Text, "abc", SQL_Equal

oder
Code: Alles auswählen
.Add FieldGenerator("TextField", FieldDataType.Text), "abc", SQL_Equal


mfg
Josef
Josef Pötzl
Moderator
 
Beiträge: 706
Registriert: Mo 30. Nov 2009, 11:08
Wohnort: Klagenfurt
Accessversion: 2010 (2013)

Zurück zu SqlTools

cron