Hallo,
ich möchte, wenn ich den Satzzeiger einer Datenbank bewege, eine bestimmte Aktion ausführen.
Dazu verwende ich die DbRegisterClient-Funktion und führe bei der Nachricht DBO_MOVE_DONE meine Funktion aus.
Das funktioniert auch soweit.
Wenn ich jetzt zwei Datenbank über eine Relation verbinde wird die Notify-Methode für die kontrollierende Workarea einmal ausgeführt, für die Childworkarea hingegen etliche male. Der letzte notify-Aufruf ist dann der, den eigentlich nur bräuchte, weil die Clientworkarea erst da auf dem passenden Datensatz, entsprechend der Relation steht.
Richtig nachvollziehen kann ich dieses Verhalten nicht, da der Rückgabewert des Codeblocks in DbSetRelation() ja in der Childworkarea gesucht werden soll.
Es scheint aber fast so, als ob der Suchwert inkrementell gesucht wird und bei jedem missglückten Suchvorgang ein dbskip ausgeführt wird.
Kann jemand erklären, warum das so ist und ob bzw. wie man das umgehen kann?
Je nachdem wie ich zeit habe, werde ich das Programm mal abrüsten und dann mal ein Beispiel posten, falls mit meinen Schilderungen niemand was anfangen kann.
DbRegisterClient-häufiger Aufruf von notify bei Relationen
Moderator: Moderatoren
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9345
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 100 Mal
- Danksagung erhalten: 359 Mal
- Kontaktdaten:
Hallo, Robert.
Wenn Du den Satzzeiger in der Parent-Workarea bewegst, wird eine Suchoperation in der Child-Workarea ausgelöst, und die besteht in der Hauptsache aus Bewegungsoperationen, nämlich vom Beginn der Suche bis zu ihrem Ende. Ich denke, Du müßtest für die Child-Area mit DBO_BULK_REQUEST und DBO_BULK_COMPLETE arbeiten. Aber das ist nur geraten; ich habe die Funktionalität DbRegisterClient() bis dato noch nicht benutzt.
Wenn Du den Satzzeiger in der Parent-Workarea bewegst, wird eine Suchoperation in der Child-Workarea ausgelöst, und die besteht in der Hauptsache aus Bewegungsoperationen, nämlich vom Beginn der Suche bis zu ihrem Ende. Ich denke, Du müßtest für die Child-Area mit DBO_BULK_REQUEST und DBO_BULK_COMPLETE arbeiten. Aber das ist nur geraten; ich habe die Funktionalität DbRegisterClient() bis dato noch nicht benutzt.
Herzlich,
Tom
Tom