Zweck
Erstellt eine selektive Verknüpfung zwischen diesem Datenserver und einem untergeordneten Datenserver.
Klasse
Typ
Methode
Syntax
<oArrayServer>:SetSelectiveRelation(
<oChild>,;
<cbRelation>,;
<cRelation>,;
[<lAutoClose>]
) Æ lSuccess
<oArrayServer>:SetSelectiveRelation(
<oChild>,;
<cField> | <symField>,;
[<lAutoClose>]
) Æ lSuccess
<oArrayServer>:SetSelectiveRelation(
<oChild>,;
<acField> | <asymField>,;
[<lAutoClose>]
) Æ lSuccess
Argumente
<oChild> | Untergeordnete Datenserver zu dem die selektive Relation erstellt werden soll. |
Datentyp: | DataServer |
<cbRelation> | Codeblock mit dem die selektive Relation zwischen diesem Datenserver und dem untergeordneten Datenserver erstellt werden soll. |
Datentyp: | Codeblock | _Codeblock-Objekt |
<cRelation> | Ausdruck mit dem die selektive Relation zwischen diesem Datenserver und dem untergeordneten Datenserver erstellt werden soll. Wird das Argument <cbRelation> nicht übergeben, wird der String in ein _Codeblock-Objekt umgewandelt. Die Umwandlung erfolgt hierbei über den Befehl |
&("{|Server| "+cRelation+"}")
Datentyp: | String |
<cField> | Feldname als String mit dem die selektive Relation zwischen diesem Datenserver und dem untergeordneten Datenserver erstellt werden soll. Aus dem Feldname wird ein _Codeblock-Objekt erzeugt. Der Feldname muss sowohl in diesem als auch im untergeordneten Datenserver definiert sein. |
Datentyp: | String |
<symField> | Feldname als Symbol mit dem die selektive Relation zwischen diesem Datenserver und dem untergeordneten Datenserver erstellt werden soll. Aus dem Feldname wird ein _Codeblock-Objekt erzeugt. Der Feldname muss sowohl in diesem als auch im untergeordneten Datenserver definiert sein. |
Datentyp: | String |
<acField> | Array von Feldname als Strings mit denen die selektive Relation zwischen diesem Datenserver und dem untergeordneten Datenserver erstellt werden sollen. Aus den Feldnamen wird ein _Codeblock-Objekt erzeugt. Die Feldname müssen sowohl in diesem als auch im untergeordneten Datenserver definiert sein. |
Datentyp: | Array |
<asymField> | Array von Feldname als Symbols mit denen die selektive Relation zwischen diesem Datenserver und dem untergeordneten Datenserver erstellt werden sollen. Aus den Feldnamen wird ein _Codeblock-Objekt erzeugt. Die Feldname müssen sowohl in diesem als auch im untergeordneten Datenserver definiert sein. |
Datentyp: | Array |
<lAutoClose> | Logischer Wert der definiert, ob der untergeordnete Datenserver automatisch geschlossen werden soll, wenn dieser Datenserver geschlossen wird. Wenn das Argument nicht übergeben wird, wird als Vorgabe der Wert FALSE verwendet. |
Datentyp: | Logic |
Rückgabewert
lSuccess | Logischer Wert der definiert, ob die selektive Relation erstellt werden konnte. |
TRUE | Die selektive Relation wurde erstellt. |
FALSE | Die selektive Relation konnte nicht erstellt werden. |
Datentyp: | Logic |
Beschreibung
bArrayServer:SetSelectiveRelation() verknüpft diesen Datenserver mit einem untergeordneten Datenserver. Operationen im untergeordneten Datenserver werden nur mit Datensätzen ausgeführt, die dieser Verknüpfung entsprechen. Im untergeordneten Datenserver muss ein Index aktiv sein, dessen Ausdruck dem Ausdruck der selektiven Relation entspricht.
Vor der Operation wird die Nachricht NotifyIntentToMove an den untergeordneten Datenserver gesendet. Nach erfolgreicher Ausführung wird die Nachricht NotifyRelationChange an den untergeordneten Datenserver gesendet.
Durch eine selektive Relation wird der untergeordnete Datenserver mit diesem Datenserver synchronisiert, indem der Datensatzzeiger im untergeordneten Datenserver automatisch positioniert wird, sobald der Datensatzzeiger in diesem Datenserver verändert wird.
Beispiel
Das folgende Beispiel erzeugt eine selektive Relation zwischen den bArrayServer <oasCUSTOMER> und <oasINVOICE>. Der bArrayServer <oasCUSTOMER> enthält Kundendaten. Der bArrayServer <oasINVOICE> enthält zu den Kundendaten die Rechnungsdaten. Nachdem die selektive Relation zum bArrayServer <oasINVOICE> erstellt wurde, enthält dieser bArrayServer immer nur die Rechnungsdaten zum aktuellen Kunden im bArrayServer <oasCUSTOMER>.
// bArrayServer mit Kunden erzeugen
auStruct := {;
{"ID", "C", 5, 0},;
{"LASTNAME", "C", 20, 0},;
{"FIRSTNAME", "C", 15, 0};
}
auData := {;
{"00001", "Schmidt", "Harald"},;
{"00007", "Bond", "James"};
}
oasCUSTOMER := bArrayServer{auStruct, auData, BINACTIVE, BDATAFORMAT_DBASE}
// bArrayServer mit Rechnungen erzeugen
auStruct := {;
{"ID", "C", 5, 0},;
{"FDATE", "D", 8, 0},;
{"INVOICEID", "N", 5, 0},;
{"TOTAL", "N", 8, 2};
}
auData := {;
{"00001", 03/12/01, 12, 253.12},;
{"00007", 05/24/01, 13, 79.84},;
{"00001", 06/13/02, 14, 176.99},;
{"00001", 08/06/02, 15, 39,63};
}
oasINVOICE := bArrayServer{auStruct, auData, BINACTIVE, BDATAFORMAT_DBASE}
oasINVOICE:CreateOrder("Server:ID")
// Relation zwischen Kunden und Rechnungen erstellen
oasCUSTOMER:SetSelectiveRelation(oasINVOICE, , "Server:ID", TRUE)
Siehe auch
Page url: http://www.YOURSERVER.com/index.html?barrayserver_setselectiverelat.htm