Queries mit Parametern, auch für SORT ...

Wie ich gerade feststellen musste, reagieren Upper() und Lower() anders als erwartet (aus xBase Sicht) ... hierfür gibt es eine andere Funktion. Hier sollen solche allgemeinen Themen behandelt werden.
Antworten
Benutzeravatar
BRANDELH
Site Admin
Beiträge: 199
Registriert: 30. Juni 2010, 14:31
Wohnort: Germersheim
Kontaktdaten:

Queries mit Parametern, auch für SORT ...

Beitrag von BRANDELH »

Hallo,

in der Hilfe wird es zwar erklärt, aber dennoch bereitete es mir Probleme die Sortierung mit Parameter umzusetzen. Das größte Problem war, wie übergebe ich den Parameter (= Feldname und Sortierfolge einfach als Text), daher hier ein kurzes Beispiel:

Im Query Editor habe ich eine Query QRY_LG_Liste erzeugt, die SORT nach PARAMETER ausgewählt hat. Diesen Parameter habe ich den Namen SortOrder gegeben. Der Name ist natürlich frei wählbar und wird angezeigt.

Im Quellcode habe ich eine ComboBox die die Auswahl in die Variable gsLG_Sort speichert, nach dieser Auswahl setze ich die Sortierreihenfolge als Parameter SortOrder

Code: Alles auswählen

SWITCH gsLG_Sort
   CASE "L" : QRY_LG_Liste.SortOrder = "Name ASC"
   CASE "S" : QRY_LG_Liste.SortOrder = "Strasse ASC"
   CASE "P" : QRY_LG_Liste.SortOrder = "PLZ ASC"
   CASE "O" : QRY_LG_Liste.SortOrder = "ORT ASC"
   CASE "D" : QRY_LG_Liste.SortOrder = "AbleseDatLG ASC"
   OTHER CASE : QRY_LG_Liste.SortOrder = "LgNr ASC"
END
direkt nach dem Setzen des Parameters (es könnten auch mehr sein) folgt der Aufruf der Query, die im Erfolgsfalle die Daten bereitstellt.

Code: Alles auswählen

IF HExecuteQuery(QRY_LG_Liste) THEN
   HReadFirst(QRY_LG_Liste)
   WHILE NOT HOut(QRY_LG_Liste)
      info("Die Aktuelle Zeile: Name="+QRY_LG_Liste.Name+" ... " )
   END
END
Wenn man die Werte ändern will, dann muss man bei HExecuteQuery() die richtige Option setzen oder aber - das bevorzuge ich - eine expliziete Speicher Routine aufrufen.

Ich kam darauf im Testmodus des Queryeditors, dort konnte ich rechts "mögliche Werte" anzeigen lassen und dort stand dann der Feldname mit Sortierfolge, diesen Wert habe ich ins Programm übernommen.

Viel Neuland für einen DBF - Xbase++ User ;-)

Antworten