Programmierung

Verwendung zentraler temporärer Daten

Um temporäre Daten auf allen Clients nutzen zu können, gibt es zwei Möglichkeiten: RmtData-Befehle und Temporäre Tabellen. Auf die Verwendung der RmtData-Befehle möchte ich in diesem Artikel eingehen.


Damit die Daten von allen Clients aus zugreifbar sind, werden sie in zentralen Datenobjekten im Cache des CONZEPT 16-Servers hinterlegt.

Die zentralen Datenobjekte bestehen, bis die Datenbank geschlossen wurde, oder das Objekt durch den Befehl RmtDataWrite() mit einem Leerstring überschrieben wird. Wird beim Schreiben des Datenobjektes die Option _RmtDataTemp angegeben, wird das Objekt beim Abmelden des Benutzers aus dem Speicher entfernt.

Soll das Datenobjekt auch nach Verlassen des letzten Benutzers eine gewisse Zeit vorhanden bleiben, kann mit der Schließverzögerung gearbeitet werden.

Befehle

Folgende RmtData-Befehle können verwendet werden.

  • RmtDataWrite()
  • RmtDataRead()
  • RmtDataSearch()

RmtDataWrite()

Mit der Funktion RmtDataWrite() kann ein Datenobjekt erzeugt oder geändert werden. Ein Datenobjekt besteht aus einem Schlüsselwert vom Typ alpha mit einer maximalen Länge von 250 Zeichen, und einem Datenanteil von maximal 4096 alphanumerischen Zeichen.

Beispiel:
// Per RmtData allen Clients mitteilen, dass die Datenbank geschlossen werden soll
RmtDataWrite('Close', 0, '1');

RmtDataRead()

Mit dem Befehl RmtDataRead() kann ein Datenobjekt über den Schlüsselwert gelesen werden. Zusätzlich kann es mit _RecLock gesperrt und mit _RecUnlock entsperrt werden. Die Funktion erwartet im dritten Parameter eine alpha-Variable ausreichender Länge, in der der Datenanteil des Objektes zurückgegeben wird. Die Variable muss per var übergeben werden. Ist die übergebene Variable zu kurz, wird die Zeichenkette abgeschnitten.

Beispiel:
// Prüfen, ob die Datenbank geschlossen werden soll
tErg # RmtDataRead('Close', 0, var tRmtDataValue);
if (tErg = _rOK AND tRmtDataValue = '1')
  ...

RmtDataSearch()

Der Befehl RmtDataSearch() ermöglicht die Suche und die Iteration der vorhandenen Datenobjekte. Im ersten Parameter wird der Name des Schlüssels und im zweiten die Suchoption angegeben. Folgende Suchoptionen sind möglich:

  • 0 – angegebenes Datenobjekt lesen
  • _RecFirst – erstes Datenobjekt lesen
  • _RecPrev – vorheriges Datenobjekt lesen
  • _RecNext – nächstes Datenobjekt lesen
  • _RecLast – letztes Datenobjekt lesen

Als Rückgabewert erhält man den Schlüsselwert des gefundenen Datenobjektes, dessen Datenanteil anschließend mit RmtDataRead() gelesen werden kann. Wurde kein Objekt gefunden, wird ein Leerstring zurück gegeben.

Beispiel:
// Alle Schlüsselwerte lesen
for  tRmtDataKey # RmtDataSearch('', _RecFirst);
loop tRmtDataKey # RmtDataSearch(tRmtDataKey, _RecNext);
while (tRmtDataKey != '')
{
  tErg # RmtDataRead(tRmtDataKey, 0, var tRmtDataValue);
  ...
}
2 Kommentare

2 Kommentare “Verwendung zentraler temporärer Daten”

  1. Könnte man das Paar RmtWrite/RmtRead als "Email-Ersatz" betreiben(allerdings pollender weise)?

    Ich suche eine Möglichkeit, einen an einem Jobserver ermittelten Fehler an den verursachenden Client weiterzuleiten.

    Um unabhängig zu bleiben, habe ich mich bisher für das Versenden einer Mail entschieden, statt "net send"- oder "msg"-Kommandos zu benutzen.
    Leider poppt beim Email-Handling kein Fenster auf, das den
    Client direkt auf den Fehler hinweisen würde.

    Wenn ich die Steuerung in meiner Conzept16-Applikation hätte, wäre ich im Vorteil!

Kommentar abgeben