Skip to main content
Skip table of contents

BeOpen()

BeOpen() – Cache-Tabelle öffnen

Die Funktion gibt ein Tabellenobjekt aus dem Cache zurück. Das Tabellenobjekt bleibt für weitere Aufrufe von BeOpen() mit der gleichen Workarea solange gesperrt, bis es mit BeClose() freigegeben wird. Weitere Aufrufe von BeOpen() vor BeClose() erzeugen eigene Tabellenobjekte.

Tabellen, die mit BeOpen() geöffnet werden, dürfen NICHT für die Bearbeitung (Edit/Post) von Daten verwendet werden!

Hinweis

Die Funktionen BeOpen() bzw. BeClose() dienen zur Verbesserung der Ablaufgeschwindigkeit von datenbankgestützen Programmen. Damit steht im Codeblock ein Datenbank-Cache zur Verfügung, der das häufige Öffnen und Schliessen von Tabellen verhindern soll. Eine Tabelle, die einmal geöffnet wurde, wird im Cache offen gehalten, bis business express beendet wird.
Tabellenobjekte, die mit BeOpen() erzeugt wurden, dürfen NIE über DestroyObject() gelöscht werden. Sie müssen unbedingt mit BeClose() zurückgegeben werden. Events werden nach BeClose() nicht mehr ausgeführt. Die Verwendung von Objektvariablen nach BeClose() ist nicht mehr zulässig und kann zu falschen Ergebnissen führen. Tabellenobjekte aus dem Cache sollten nach Möglichkeit nicht an Transaktionen beteiligt sein. Eine Änderung der Objekteigenschaften ist zwar möglich, muss jedoch vor BeClose() rückgängig gemacht werden! Events, Indices, Scopes, Ranges und Filter dürfen zugewiesen bleiben und werden automatisch entfernt.
Es sollte durch Fehlerauffangroutinen sichergestellt werden, das für jeden BeOpen()-Befehl ein zugehöriger BeClose()-Befehl ausgeführt wird !

ParameterBeschreibung

aWorkArea:N

WorkArea, die geöffnet werden soll

aIndex:U

Indexnummer oder Indexname; default = 'DAB011' (falls vorhanden)

aGoTop:L

Tabelle wird auf den Anfang positioniert; default = false

Rückgabewert


Objekt - Geöffnete Tabelle

Beispiel


CODE
// Performance-Vergleich BeOpen() / DbOpen()

| aDab010, i, aTime, aCount, aBeOpenTime, aOpenTime |

aCount := 15,

aTime := GetExTimer(),
for i := 1 to aCount do
   aDab010 := BeOpen(waDAB010),
   startseq,
      Writeln(aDab010:ArtNr)
   always,
      BeClose(aDab010)
   stopseq,
next,
aBeOpenTime := Str(GetExTimer() - aTime),
aTime := GetExTimer(),
for i := 1 to aCount do
   aDab010 := DBOpen(waDAB010),
   startseq,
      Writeln(aDab010:ArtNr)
   always,
      DestroyObject(aDab010)
   stopseq,
next,
aOpenTime := Str(GetExTimer() - aTime),

WriteLn(Replicate('=', 30) + crlf +
        'Tabelle DAB010 ' + Str(aCount) + ' Mal öffnen:' + crlf +
        'aus Cache: '     + Chr(9) + aBeOpenTime + crlf +
        'konventionell: ' + Chr(9) + aOpenTime + crlf +
        Replicate('=', 30)),

Weitere Verknüpfungen


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.