Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Tipp: globale Werte und Funktionen in Abfragen

Begonnen von crystal, Juni 08, 2020, 12:20:44

⏪ vorheriges - nächstes ⏩

crystal

Man kennt das Problem: man möchte z.B. in Abfragen auf globale Werte zurückgreifen, die applikationsweit gelten.

Dafür gibt es eine einfache Lösung: man legt in einem Modul einfach eine Funktion an, die den gewünschten Wert liefert, also

public function ReturnValue() as string
   ReturnValue = "Mein Wert"
end function


In einer Abfrage kann man dann ReturnValue() einsetzen. Dazu im Abfrage-Generator in "Feld:" rechts klicken und "Aufbauen" wählen. "ReturnValue" erscheint dann unter Funktionen -> <Name der DB> .

Es eröffnen sich dadurch natürlich ungeahnte Möglichkeiten, die man sonst mühsam im Ausdruck zusammenbastelt, z.B. eine Funktion, die ein Datum in das gewünschte Format umwandelt (ginge natürlich auch direkt mit format()...) oder eine Funktion, die irgendwas mit mehreren Datenfelder macht und dabei nette Texte zurück gibt, wenn irgendwas nicht stimmt oder nicht vorhanden ist.
Beispiel:

public function Check(s1 as string, s2 as string, l1 as long) as string
...
mach irgendwas
...
if l1 >= 0 then
   check = "Alles OK"
else
   check = "Fehler: Wert ist negativ"
end if
end function


Und im Abfragegenerator wird Check dann mit "Test: Check([Feld1], [Feld2], [Feld3])" aufgerufen.

So kann man die Grenzen der eingebauten Funktionen des Abfragegenerators weit hinter sich lassen und braucht sich nicht mehr um verschachtele Konstruktionen mit Wenn(), Teil(), Länge() usw. kümmern. Einfach die zu prüfenden Werte an eine Funktion übergeben und dort mit nachvollziehbarer und dokumentierter Logik analysieren.

Ich habe z.B. eine Tabelle, in der Namen von Bildern gespeichert sind und zwar aus bestimmten Gründen nur der reine Name ohne Pfad und Erweiterung (z.B. weil das Bild auf einer externen USB-Platte liegt, die nicht immer den selben Laufwerksbuchstaben erhält). In einer Funktion setze ich dann den aktuellen Pfad und die Erweiterung dazu und prüfe gleich, ob die Datei vorhanden ist. Wenn nicht, wird stattdessen ein Ersatz-Bild zurückgegeben. Mit "normalen" Ausdrucks-Funktionen wohl kaum zu realisieren...
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...