Lade...
 

CX_DB_UTILITY::ClearBackptr

CX_DB_UTILITY::ClearBackptr

Beschreibung:

Objekte, die sich in einer indizierten Collection befinden, zeigen selbst wiederum auf den Index. Mit dieser Klassenfunktion lässt sich dieser Zeiger löschen, d.h. das Objekt weiß anschließend nicht mehr, von welchen Indizes es indiziert ist. Der Verbindung vom Index zum Objekt und von der Collection zum Objekt bleibt bestehen. Es ist nicht möglich, herauszufinden, in welchen Indizes ein Objekt eingetragen ist.

Wenn ein Objekt nicht mehr bearbeitet werden kann, oder ein Index nicht mehr deaktiviert werden kann, oder eine indizierte Collection nicht mehr verändert werden, ist so vorzugehen:

  1. Sicherstellen, dass das Objekt nur noch von dem defekten Index indiziert

    ist. Die Funktion BackptrCount darf nur 0 oder 1

    zurückliefern.
  2. Die Verbindung vom Objekt zum Index mit dieser Funktion trennen.

Bevor mit ClearBackptr die Verbindung vom Objekt zum Index gekappt wird,

sollte das Objekt wirklich nur zu dem einen defekten Index eine Verbindung haben. Andere Indizes sollte vorsichtshalber im Indexmanager deaktiviert werden. ClearBackptr trennt die Verbindung zum Index einseitig, d.h. der Index hat sehr wohl noch eine Verbindung zum Objekt. Die indizierte Collection darf nun in keinem Fall mehr verwendet werden! Das Objekt dagegen ist nun "frei"

und kann wie gewohnt bearbeitet werden.

Code-Beispiel:
Var(dbUtil) 
GetManager(OBJECT) Call(GetDBUtility) -> dbUtil 
object dbUtil Call(BackptrCount) 2 < if
{
  object dbUtil Call(ClearBackptr)
}
else
{
  "Objekt gehört zu mehreren Indizes!" Attention
}

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top CX_DB_UTILITY Tool-Objekt 
Top-1 CX_EXPANDABLE Objekt
Stack(Out) Top - -

Funktionsaufruf: Call(ClearBackptr)