Zum Hauptinhalt springen

Datensatzzugriff

Datensatzzugriff Vorgehen von CONZEPT 16 beim Lesen eines Datensatzes

In CONZEPT 16 stehen zwei Befehle zum Lesen eines Datensatzes zur Verfügung. Der Befehl RecRead () liest einen Datensatz aus einer Datei, der Befehl RecLink () liest einen verknüpften Datensatz.

Datensatzzugriff mit RecRead()

Bei dem Befehl RecRead () müssen mindestens drei Parameter übergeben werden. Bei diesen Parametern handelt es sich um die Dateinummer, die Schlüsselnummer und um Leseoptionen. Die Dateinummer bestimmt die Datei, aus der der Datensatz stammt. Anstelle der Dateinummer kann auch ein mit RecBufCreate () angelegter Feldpuffer übergeben werden. Durch die Angabe des Schlüssels werden die Informationen, die zu dem Datensatz bekannt sind definiert.

Beispiel:

Es soll in der Kundendatei (100 / tblCstCustomer) ein Kunde mit dem Namen "vectorsoft AG" gelesen werden. Das Datenbankfeld, welches den Namen der Kunden beinhaltet, ist das Feld "faCstName". Das gleiche Feld ist als Schlüsselfeld in dem Schlüssel keyCstName (dieser Schlüssel hat die Nummer 2) enthalten.

Um einen bestimmten Datensatz zu lesen, wird das Datenbankfeld mit dem gewünschten Wert gefüllt und über einen Schlüssel zugegriffen, der dieses Feld beinhaltet.

faCstName # 'vectorsoft AG';
tErr # RecRead(100, 2, 0);
// besser:
tErr # RecRead(tblCstCustomer, keyCstName, 0);

Das Datenbanksystem ermittelt aus den Informationen, die dem RecRead ()-Befehl übergeben werden, das Feld, das den Schlüsselwert enthält. Mit diesem Schlüsselwert wird die Position des Datensatzes in der Datei bestimmt und der Datensatz an dieser Position gelesen. Folgende Fälle können eintreten:

  1. Der Datensatz ist vorhanden Der vollständige Datensatz wird in den Datensatzpuffer geladen. Der Befehl RecRead () gibt bei einem Zugriff über einen eindeutigen Schlüssel als Resultat _rOk zurück. Wurde für den Zugriff ein mehrdeutiger Schlüssel verwendet, kommt _rMultiKey zurück. Der Inhalt des Datensatzes kann über die Namen der entsprechenden Datenbankfelder ausgelesen werden.
  2. Der Datensatz ist vorhanden aber von einem anderen Benutzer zur Bearbeitung gesperrt Der vollständige Datensatz wird in den Datensatzpuffer geladen. Der Befehl RecRead () gibt als Resultat die gleichen Werte wie oben zurück. Der Inhalt des Datensatzes kann über die Namen der entsprechenden Datenbankfelder ausgelesen werden. Wurde beim Lesen die Option _RecLock angegeben, wurde der Datensatz nicht gesperrt und der Wert _rLocked zurückgegeben.
  3. Der Datensatz ist nicht vorhanden In diesem Fall wird der Datensatz an der entsprechenden Position gelesen. Das ist der Datensatz, der in der Schlüsselreihenfolge nach dem gesuchten kommt. Der Befehl RecRead () gibt als Resultat _rNoKey zurück.
  4. Der Datensatz ist nicht vorhanden und es existiert kein Datensatz an der angegebenen Schlüsselposition Das kann nur dann eintreten, wenn der gesuchte Datensatz in der Schlüsselreihenfolge nach dem letzten Datensatz in der Datei stehen würde. Es wird der letzte Datensatz gelesen und als Resultat _rLastRec zurückgegeben.
  5. In der Datei sind keinen Datensätze gespeichert Dies ist der einzigste Fall, in dem kein Datensatz in den Datensatzpuffer geladen wird. Es konnte kein Datensatz gelesen werden. Der Befehl RecRead () gibt als Resultat _rNoRec zurück.

Datensatzzugriff mit RecLink()

Mit dem Befehl RecLink () werden, ausgehend von einem gelesenen Datensatz in der Quelldatei, die mit diesem Datensatz verknüpften Datensätze in der Zieldatei gelesen. Es müssen wenigstens vier Parameter übergeben werden: die Dateinummer der Zieldatei, die Dateinummer der Quelldatei, die Verknüpfungsnummer und Leseoptionen.

Der Datensatzzugriff erfolgt mit dem gleichen Prinzip, wie der Zugriff mit dem Befehl RecRead (). Lediglich der Schlüsselwert wird nicht gesetzt, sondern ergibt sich aus dem in der Verknüpfung angegebenen Feld aus der Quelldatei.

Beispiel:

Nachdem der Kundendatensatz der Firma vectorsoft AG gelesen wurde, soll jetzt aus einer verknüpften Datei die erste Telefonnummer gelesen werden. In der verknüpften Datei sind die Telefonnummern zusammen mit dem eindeutigen Schlüsselwert aus der Kundendatei gespeichert. Die Verknüpfung verbindet das Feld mit dem eindeutigen Schlüsselwert aus der Quelldatei mit einem Schlüssel aus der Zieldatei.

// Datensatz in der Quelldatei lesen
faCstName # 'vectorsoft AG';
tErr # RecRead(tblCstCustomer, keyCstName, 0);

// der richtige Datensatz wurde gelesen
if (tErr < _rNoKey)
{
tErr # RecLink(tblTelTelefon, tblCstCustomer, lnkCstTelId, _RecFirst);
...
}

Der Wert aus der Quelldatei wird zur Positionierung in der Zieldatei verwendet. Der Befehl gibt folgende Werte zurück:

  • _rOk Der verknüpfte Datensatz wurde gefunden und in den Datensatzpuffer übertragen.
  • _rLocked Der verknüpfte Datensatz wurde gefunden und in den Datensatzpuffer übertragen. Der Datensatz ist aber von einem anderen Benutzer zur Bearbeitung gesperrt.
  • _rNoRec Es wurde kein verknüpfter Datensatz gefunden.
info

Nach dem Lesen eines Datensatzes muss in jedem Fall der Rückgabewert überprüft werden, um festzustellen, ob der gewünschte Datensatz gelesen werden konnte.