Programmieren mit dBASE PLUS: active

Aus Wikibooks


Bestimmt, ob ein Objekt geöffnet und aktiv oder geschlossen ist.

Eigenschaft von[Bearbeiten]

Database, DataModRef, Query, StoredProc,

Beschreibung[Bearbeiten]

Nach der Erstellung ist die Standarddatenbank einer neuen Arbeitssitzung aktiv, da sie nicht eingerichtet werden muß. Andere Database-, DataModRef-, Query- und StoredProc-Objekte müssen eingerichtet werden, und daher hat ihre Eigenschaft active den Standardwert False. Setzen Sie den Wert dieser Eigenschaft nach dem Einrichten auf True, um das betreffende Objekt zu öffnen und zu aktivieren.

Hat die Eigenschaft active eines Query- oder StoredProc-Objekts den Wert True, wird sein Event canOpen aufgerufen. Ist kein canOpen-Event-Handler vorhanden, oder liefert dieser True zurück, wird das Objekt aktiviert. Bei einem Query-Objekt wird die SQL-Anweisung in der Eigenschaft sql ausgeführt, bei einem StoredProc-Objekt erfolgt die Ausführung der Stored Procedure, die in der Eigenschaft procedureName angegeben ist. Danach wird das Event onOpen des Objekts ausgelöst.

Um das Objekt zu schließen, setzen Sie seine Eigenschaft active auf False. Zusammen mit dem Objekt werden dann auch alle ihm in der Klassenhierarchie untergeordneten Objekte geschlossen. Bei dem Versuch, ein Query- oder StoredProc-Objekt zu schließen, wird dessen Event canClose aufgerufen. Ist kein canClose -Event-Handler vorhanden, oder liefert dieser True zurück, wird das Objekt geschlossen. Durch das Schließen eines Database-Objekts werden auch alle zugehörigen Query- und StoredProc-Objekte geschlossen. Nach dem Schließen der Objekte werden die onClose-Events der Query- und StoredProc-Objekte ausgelöst.

Die Aktivierung und Deaktivierung eines Objekts führt zum impliziten Aufruf einer Reihe fortgeschrittener Methoden. Für benutzerdefinierte Datenklassen können Sie diese Methoden überschreiben oder komplett neu definieren; bei normalem Gebrauch sollten Sie sie jedoch unverändert lassen. Wenn Sie active auf True setzen, wird die open( )-Methode eines Database-Objekts aufgerufen; bei der Aktivierung einer Abfrage oder Stored Procedure wird erst prepare( ), dann execute( ) aufgerufen. Wird active dagegen auf False gesetzt, wird die close( )-Methode eines Database-Objekts aufgerufen; bei der Deaktivierung einer Abfrage oder Stored Procedure wird deren unprepare( )-Methode aufgerufen. Der Aufruf dieser Methoden erfolgt als Teil der Aktivierung bzw. Deaktivierung des betreffenden Objekts, bevor das onOpen- oder das onClose-Event ausgelöst wird.

Beim Schließen einer Abfrage oder eines StoredProc-Objekts, die bzw. das einen Datensatzbereich generiert hat, werden alle Änderungen in den aktuellen Datensatzpuffer ihres Datensatzbereichs geschrieben und die zwischengespeicherten Aktualisierungen durchgeführt bzw. die protokollierten Änderungen eingetragen. Um dies zu verhindern, müssen Sie abandon( ), abandonUpdates( ) und/oder rollback( ) vor dem Event onClose des Objekts aufrufen (z.B. während des canClose -Events oder vor dem Setzen der active-Eigenschaft auf False), da onClose erst nach dem Schließen des Objekts ausgelöst wird.

Nachdem ein Objekt geschlossen wurde, können Sie seine Eigenschaften ändern und es erneut öffnen, indem Sie seiner Eigenschaft active wieder den Wert True zuweisen.