Inhaltsverzeichnis

22.4.10 Klassen Result und Result.Fields (gb.db)

Die Klasse Result repräsentiert u.a das Ergebnis einer SQL-Anfrage:

Die Klasse kann nicht erzeugt werden. Diese Klasse verhält sich wie ein Lese-/Schreib-Array. Diese Klasse ist mit dem Schlüsselwort FOR EACH enumerierbar.

Beispiele

Dim hResult As Result
Dim vVariant As Variant

vVariant = hResult [ Fieldname As String ] oder
vVariant = hResult!Fieldname

Die letzten beiden Anweisungen liefern jeweils den Wert eines Feldes mit dem angegebenen Feldnamen im aktuellen Datensatz des Ergebnisobjekts.

Result-Cursor

Das Ergebnisobjekt ist ein Cursor als Ansicht einer eingeschränkten Menge von Zeilen, der sich aus der Ausführung der Abfrage durch das DBMS ergibt. Der Cursor kann, je nachdem wie er ausgeführt wurde, Zeilen und Tabellen in der Datenbank „sperren“ oder nicht. Diese Sperre ermöglicht es, dass nur ein Benutzer gleichzeitig garantierte Aktualisierungen der Daten in der Datenbank vornehmen kann. Das ist ein fundamentaler Ansatz in der Theorie von DB-Managenmentsystemen. In der DB-Welt von Gambas wird dieser Cursor als schreibgeschützt und lesend/schreibend beschrieben. Verschiedene Methoden zur Ergebnisrückgabe aus der Klasse Connection liefern unterschiedliche Cursor-Typen zurück:

22.4.10.1 Eigenschaften der Klasse Result

Die Klasse Result verfügt über diese Eigenschaften:

EigenschaftDatentypBeschreibung
AvailableBooleanLiefert True, wenn das Ergebnisobjekt eine oder mehrere zugriffsbereite Datenbankzeilen enthält.
ConnectionConnectionLiefert das übergeordnete DB-Verbindungsobjekt.
CountIntegerLiefert die Anzahl der Zeilen im Abfrageergebnis-Cursor genau dann, wenn das DB-Managementsystem, der DB-Treiber, die Treiber-Schnittstelle und die Gambas-Schnittstelle die Rückgabe von Zeilen-Anzahlen für die ausgeführte spezifische SQL-Abfrage unterstützen. ODBC-Verbindungen können je nach zugrunde liegendem ODBC-Treiber möglicherweise nicht die Anzahl der Datensätze ermitteln. In diesem Fall wird der Wert -1 zurückgegeben. Die Zählung beginnt mit 0.
IndexIntegerLiefert den Index des aktuellen Datensatzes, beginnend mit 0.
MaxIntegerLiefert Result.Count - 1 (solange Count >= 0 ist, sonst wird -1 zurückgegeben).
FieldsResult.FieldsLiefert eine Auflistung der Felder des DB-Resultats.

Tabelle 22.4.10.1.1 : Eigenschaften der Klasse Result

22.4.10.2 Methoden der Klasse Result

Die Klasse Result verfügt über diese Methoden:

MethodeRückgabetypBeschreibung
All ( Field As String )ArrayLiefert den Wert des angegebenen Feldes jedes Ergebnissatzes als Array. Diese Methode ist etwa doppelt so schnell wie der entsprechende Code in Gambas.
Delete ( [ Keep As Boolean ] )-Löscht den aktuellen Datensatz. Wenn `Keep` TRUE ist, dann wird der Datensatz nicht aus dem Ergebnisobjekt entfernt.
Update ( )-Aktualisiert den aktuellen Datensatz in der Datenbank, wenn dieser Datensatz geändert wurde und das Result ein Lese-/Schreib-Cursor ist.
MoveFirst ( )BooleanWechselt zum ersten Datensatz des Results. Liefert TRUE, wenn keine Datensätze im Result vorhanden sind.
MoveLast ( )BooleanWechselt zum letzten Datensatz des Results. Liefert TRUE, wenn keine Datensätze im Result vorhanden sind.
MoveNext ( )BooleanWechselt zum nächsten Datensatz des Results. Liefert TRUE, wenn das Result ungültig ist oder wenn es keinen nächsten Datensatz gibt.
MovePrevious ( ) BooleanWechselt zum vorherigen Datensatz des Resultats. Liefert TRUE, wenn das Resultat ungültig ist oder wenn es keinen vorherigen Datensatz gibt.
MoveTo ( Index As Integer )BooleanWechselt zu einem bestimmten Datensatz. Liefert TRUE, wenn das Result ungültig ist oder wenn der Index nicht gültig ist.

Tabelle 22.4.10.2.1 : Methoden der Klasse Result

22.4.10.3 Eigenschaften der Klasse Result.Fields

Diese Klasse beschreibt alle Felder in einem Result. Die Eigenschaft Result.Fields.Count (Datentyp Integer) gibt die Anzahl der Datensätze im Ergebnis einer Datenbank-Abfrage zurück.

22.4.10.4 Methoden der Klasse Result.Fields

Die Klasse verfügt über diese beiden Methoden:

MethodeRückgabetypBeschreibung
Exist ( Key As String )BooleanDie Funktion liefert True, wenn das angegebene Element im Ergebnis existiert oder False für das Gegenteil.
Refresh ( )-Aktualisiert die Übersicht (Daten-Typ Result.Fields) der Felder im Ergebnis (der DB-Anfrage), indem der interne Cache geleert wird.

Tabelle 22.4.10.4.1 : Methoden der Klasse Result.Fields

Download