Zum Hauptinhalt springen

SelRun

obj -> SelRun(int1[, alpha2[, int3[, int4]]]) : int

Ausführbar von Clients mit grafischer Oberfläche Ausführbar vom Server Ausführbar von Clients mit Programmierschnittstelle Ausführbar von der Web-Schnittstelle Ausführbar vom Druckprozessor Ausführbar von der ODBC-Schnittstelle Ausführbar vom SOA-Service

Selektion durchführen

Details

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.

info

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:

  • _SelDisplay Diese Option bewirkt eine Anzeige des Selektionsstatus während der Durchführung. Die Sprache des angezeigten Dialogs kann über die Eigenschaft LangDisplay gesteuert werden.
  • _SelDisplayDelayed Diese 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 Eigenschaft DisplayRaisingDelay eingestellt werden.
  • _SelBreak Durch diese Option kann die Durchführung durch den Benutzer abgebrochen werden. _SelBreak ist nur in Verbindung mit _SelDisplay wirksam. Die Selektion kann ebenfalls durch eine Schaltfläche abgebrochen werden, deren Eigenschaft TypeButton auf den Wert _WinBtnUserBreak gesetzt ist.
  • _SelWait Diese Option gibt an, ob nach der Durchführung auf eine Benutzerbestätigung gewartet werden soll. _SelWait ist nur in Verbindung mit _SelDisplay wirksam.
  • _SelServer Wird 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.
  • _SelServerAllFld Wird diese Option angegeben, wird die Selektion beim CONZEPT 16-Server durchgeführt. Zusätzlich werden die gefüllten Feldpuffer der gesamten Datenstruktur übertragen.
  • _SelServerAutoFld Wird 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.
info

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 () .

  • _SelBase Durch diese Option werden die in der Selektion (alpha2) enthaltenen Sätze als Selektionsgrundlage verwendet. Die Selektion (alpha2) bleibt unverändert.
  • _SelUnion Mit 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.
  • _SelInter Mit 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.
  • _SelMinus Mit 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.

info

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: