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 Antworten
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.
@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.
danke, alles klar. Gelten die Befehle SelInfo…() auch für dynamischen Selektionen?
@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.
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!