Programmierung

Prozedurfunktionen für Selektionen

Ich möchte Ihnen heute einige Funktionen vorstellen, die seit längerer Zeit in CONZEPT 16 implementiert sind und nach denen immer wieder gefragt wird. Es geht um SelInfo(), SelInfoAlpha(), SelInfoDate(), SelInfoTime() und RecInfo(<Datei>, _RecCount, <Selektion>).


Mit den Befehlen können unterschiedliche Informationen zu einem Selektionsdeskriptor abgefragt werden.

SelInfo()

Mit SelInfo() können numerische Selektionsinformationen ermittelt werden. Mit der Option _SelFile wird die Tabelle ermittelt, mit der Option _SelSort der aktuelle Sortierungsschlüssel der Selektion. Bei Wertemengen können mit den Optionen _SelCount die Anzahl der Werte und mit _SelCountD die Anzahl der unterschiedlichen Werte ermittelt werden.

SelInfoAlpha()

Mit der Prozedurfunktion SelInfoAlpha() können Informationen, wie der Selektionsname (_SelName) oder der Benutzer (_SelUser), der die Selektion zuletzt geändert hat, abgefragt werden. Zusätzlich können Sie bei Wertemengen den Minimalwert (_SelMin) und den Maximalwert (_SelMax) ermitteln. Mit der Option _SelRemarks kann die Bemerkung der Selektion gesetzt oder abgefragt werden. Zum Setzen wird zusätzlich zum Selektionsdeskriptor und der Option noch die neue Bemerkung angegeben.

SelInfoDate() / SelInfoTime()

Bei den Prozedurfunktionen SelInfoDate() und SelInfoTime() kann mit der Option _SelNModified das letzte Änderungsdatum oder die letzte Anderungszeit der Selektion ermittelt werden. Die Option _SelCreated ermittelt den Erstellungszeitpunkt und _SelExecuted den letzten Ausführungszeitpunkt.

RecInfo()

Da mit SelInfo(_SelCount) nur die Anzahl der Werte in einer Selektion mit Wertemenge ermittelt wird, muss der Befehl RecInfo() mit der Option _RecCount zum zählen der Datensätze verwendet werden. Im dritten Parameter wird der Deskriptor der Selektion angegeben.

Beispiel

Im folgenden Beispiel wird in einer allgemeinen Funktion der Befehl SelInfoAlpha() dafür verwendet, um eine Selektion zu löschen.

// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Selektion löschen                                     +
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++

sub Sel.Delete
(
  aSel            : handle;  // Selektion
)
: int;

  local
  {
    tTable        : int;     // Tabelle
    tName         : alpha;   // Selektionsname
    tResult       : int;     // Löschresultat
  }

{
  // Tabelle und Name der Selektion ermitteln
  tTable # aSel->SelInfo(_SelFile);
  tName  # aSel->SelInfoAlpha(_SelName);

  // Selektion schließen und löschen
  aSel->SelClose();
  tResult # SelDelete(tTable, tName);

  return(tResult);
}
5 Kommentare

5 Kommentare “Prozedurfunktionen für Selektionen”

  1. Jetzt habe ich die Hilfe für die Selektionen mit Wertemengen gefunden. Der Hilfe-Button befindet sich im Dialog "Selektionsparameter". Da gibt es die Beschreibung mit Beispielen, wo die Selektionen mit Wertemengen verwendet werden können.

  2. @Alex Kosman:
    Die Befehle SelInfo…() sind auch für dynamische Selektionen ausführbar. Jedoch können bei dynamischen Selektionen keine Wertemengen erzeugt werden. Somit gibt SelInfo() mit _SelCount und _SelCountD immer 0 zurück. Auch bei SelInfoAlpha() mit _SelMin und _SelMax wird bei einer dynamischen Selektion eine leere Zeichenkette zurückgegeben.

  3. @Alex Kosman:
    In einer Selektion mit einer Wertemenge über ein Int-Feld sind beispielsweise folgende Werte enthalten:
    1, 2, 2, 3, 3, 3, 4
    In diesem Fall gibt RecInfo(…, _RecCount, …) den Wert 7 zurück.
    Das gleiche Ergebnis gibt SelInfo(…, _SelCount) zurück.
    Wird bei SelInfo() die Option _SelCountD angegeben, ist das Ergebnis die Anzahl der unterschiedlichen Werte.
    In diesem Fall wären es 4.

  4. Könnten Sie bitte ein einfaches Beispiel für die Befehle SelInfo(_SelCount/_SelCountD) mit der Selektion, die die Wertemenge enthält, zeigen? Es ist nicht ganz klar, um welche Anzahl hier geht – vielen Dank!

Kommentar abgeben