SelRun
obj -> SelRun(int1[, alpha2[, int3[, int4]]]) : int
Selektion durchführen
Details
- obj: Selektionspuffer-Deskriptor
- int1:
- alpha2: Name der 2. Selektion (optional)
- int3: Dateinummer der zweiten Selektion, sofern abweichend (optional)
- int4: Satzlimit (optional)
- Resultat:
intDurchführungsresultat_rOKDurchführung erfolgreich_rLocked2. Selektion (alpha2) gesperrt_rNoKey2. Selektion (alpha2) kann nicht verwendet werden_rNoRec2. Selektion (alpha2) nicht vorhanden_rNoLockSelektion (obj) nicht gesperrt_rUserBreakBenutzerabbruch_rDeadlockVerklemmung aufgetreten_rLimitReachedLimit überschritten_ErrSelValueSetKombination von zwei Selektionen mit Wertmenge_ErrSelSortDifferKombination von zwei Selektionen mit abweichender Sortierung_ErrSelSameKombination von zwei identischen Selektionen_ErrNoProcInfoProzedur nach Abfrage nicht vorhanden_ErrNoSubFunktion in der Prozedur nach Abfrage nicht vorhanden_ErrCallOldAufruf einer A- Prozedur_ErrCodeUnknownProzedurcode unbekannt_ErrRightsKeine ausreichenden Rechte zur Durchführung der Prozedur nach Abfrage ... Laufzeitfehler der Prozedur nach Abfrage - Siehe: Verwandte Befehle ,
SelOpen (),SelRead (),SelRecInsert (),SelRecDelete (), Beispiel , Blog
Diese Funktion führt die Selektion im Puffer (obj) durch. Der Puffer muss zuvor entweder mit SelOpen () angelegt und eine Selektion mit SelRead (..., _SelLock , ...) gelesen und gesperrt werden, oder es wird mit SelCreate () eine neue Selektion angelegt und mit SelOpen () in einen Selektionspuffer umgewandelt. Es ist zu beachten, dass SelRun () die Feldpuffer der Selektionsdatei verändert. Bei Angabe von _SelBase, _SelUnion, _SelInter und _SelMinus muss eine zweite Selektion in (alpha2) angegeben werden. Beide Selektionen müssen zuvor durchgeführt worden sein, um sie kombinieren zu können.
Über die Funktion RecRead () kann auf die Selektionsmenge zugegriffen werden. Für die Darstellung bzw. Ausgabe von Datensätzen einer Selektionsmenge in einem RecList - oder PrintDocRecord -Objekt steht die Eigenschaft DbSelection zur Verfügung.
Die Anzahl der selektierten Datensätze kann über die Funktion RecInfo () und bei einer Wertemengenselektion über die Funktion SelInfo () ermittelt werden.
Die Selektion darf nicht durchgeführt werden, wenn sie zur Zeit in einem RecList -Objekt angezeigt wird.
In (int1) können folgende Optionen angegeben werden:
_SelDisplayDiese Option bewirkt eine Anzeige des Selektionsstatus während der Durchführung. Die Sprache des angezeigten Dialogs kann über die EigenschaftLangDisplaygesteuert werden._SelDisplayDelayedDiese Option entspricht der Option_SelDisplay. Die Anzeige des Dialogs wird aber um zwei Sekunden verzögert. Ist zu diesem Zeitpunkt die Selektion bereits durchgeführt, erfolgt keine Anzeige. Die Verzögerungszeit kann in der EigenschaftDisplayRaisingDelayeingestellt werden._SelBreakDurch diese Option kann die Durchführung durch den Benutzer abgebrochen werden._SelBreakist nur in Verbindung mit_SelDisplaywirksam. Die Selektion kann ebenfalls durch eine Schaltfläche abgebrochen werden, deren EigenschaftTypeButtonauf den Wert_WinBtnUserBreakgesetzt ist._SelWaitDiese Option gibt an, ob nach der Durchführung auf eine Benutzerbestätigung gewartet werden soll._SelWaitist nur in Verbindung mit_SelDisplaywirksam._SelServerWird diese Option angegeben, wird die Selektion beim CONZEPT 16-Server durchgeführt. Werden Selektionen mit sehr vielen Zugriffen in die Datenbank beim Server ausgeführt, kann die Laufzeit dadurch erheblich verkürzt werden._SelServerAllFldWird diese Option angegeben, wird die Selektion beim CONZEPT 16-Server durchgeführt. Zusätzlich werden die gefüllten Feldpuffer der gesamten Datenstruktur übertragen._SelServerAutoFldWird diese Option angegeben, wird die Selektion beim CONZEPT 16-Server durchgeführt. Zusätzlich werden die Feldpuffer der Felder übertragen, die in den Selektionselementen verwendet werden.
Wird die Selektion auf dem Server durchgeführt, können in einer Prozedur nach Abfrage nur Befehle verwendet werden, die auch vom Server ausgeführt werden können. Dies betrifft besonders den Zugriff auf Objekte der Oberfläche und den Aufruf von A- Prozeduren über die Anweisung CallOld () .
_SelBaseDurch diese Option werden die in der Selektion (alpha2) enthaltenen Sätze als Selektionsgrundlage verwendet. Die Selektion (alpha2) bleibt unverändert._SelUnionMit dieser Option werden alle Sätze selektiert, die in der aktuellen Selektion oder in der Selektion (alpha2) enthalten sind (Vereinigungsmenge). Die resultierende Menge steht in der aktuellen Selektion. Die Selektion (alpha2) bleibt unverändert._SelInterMit dieser Option werden alle Sätze selektiert, die sowohl in der aktuellen Selektion als auch in der Selektion (alpha2) enthalten sind (Schnittmenge). Die resultierende Menge steht in der aktuellen Selektion. Die Selektion (alpha2) bleibt unverändert._SelMinusMit dieser Option werden alle Sätze selektiert, die in der aktuellen Selektion, aber nicht in der Selektion (alpha2) enthalten sind. Die resultierende Menge steht in der aktuellen Selektion. Die Selektion (alpha2) bleibt unverändert.
Bei einer Kombination von zwei Selektionen, die Wertmengen enthalten, kann die zweite Selektion auch aus einer anderen Tabelle stammen. Die Nummer der Tabelle wird in (int3) angegeben. Werden zwei Selektionsmengen miteinander kombiniert, müssen beide Selektionsmengen gleich sortiert sein. Die Selektionsmenge in (alpha2) darf auch nicht mit der durchzuführenden Selektion identisch sein. In diesen Fällen wird _rNoKey zurückgegeben.
Die Konstanten _SelInter, _SelMinus und _SelUnion können nicht mit den _SelServer...-Konstanten kombiniert werden.
Im Parameter (int4) kann ein Satzlimit angegeben werden. Wird der Parameter weggelassen oder ein Wert <0 angegeben, ist kein Limit gesetzt. Bei Werten >=0 wird ein Limit gesetzt. Bei dem Wert 0 wird beispielsweise das Vorhandensein von Datensätzen, die dem Selektionskriterium entsprechen, geprüft. Die Selektion hört auf, wenn die Anzahl der gefundenen Datensätze der Hauptergebnismenge das Limit überschreitet. Entsprechen weitere Datensätze dem Selektionskriterium, wird als Resultat _rLimitReached zurückgegeben, ansonsten _rOK. Die Hauptergebnismenge enthält die gefundene Anzahl Datensätze, jedoch maximal bis zum Limit. Bei einer Kombination mit einer anderen Selektion (_SelUnion, _SelInter oder _SelMinus) wird das Limit ignoriert. Das Limit hat keinen Einfluss auf Wertmengenresultate.
Der Rückgabewert des Befehls muss ausgewertet werden, um ein fehlerfreies Arbeiten der Prozedur zu kontrollieren.
Besitzt die Selektion eine Prozedur nach Abfrage, wird bei einem Laufzeitfehler in dieser Prozedur die Selektion an dieser Stelle abgebrochen. Der Wert des Laufzeitfehlers wird als Ergebnis von SelRun () zurückgegeben.
Beispiele:
tHdlSel # SelRun();
tErg # tHdlSel->SelRead(tblCstCustomer, _SelLock, 'SEL_PLZ');
tErg # tHdlSel->SelRun(_SelBreak | _SelDisplay | _SelServerAutoFld);
...
tHdlSel->SelClose();
tHdlSel # SelOpen();
tHdlSel->spDisplayRaisingDelay # 1000; // 1 second delay
tErg # tHdlSel->SelRead(tblCstCustomer, _SelLock, 'SEL_PLZ');
tErg # tHdlSel->SelRun(_SelBreak | _SelDisplayDelayed | _SelServerAutoFld);
...
tHdlSel->SelClose();
Mögliche Laufzeitfehler:
_ErrNoFile: Die gespeicherte Datei ist nicht vorhanden_ErrHdlInvalid: Der Selektionspuffer-Deskriptor (obj) ist ungültig_ErrValueRange: Die Option in (int1) ist ungültig_ErrStringOverflow: Der Selektionsname in (alpha2) ist zu lang