Dieses Design wird zum Definieren und Ausführen von Abfragen in einer ODBC-Datenbank verwendet. Es wird in Verbindung mit dem Design odbc_Database verwendet. Allen Exemplaren dieses Design liegt eine ODBC-Datensatzgruppe zugrunde. Sie können die tatsächlichen Daten aus der Datenbank mit zusätzlichen Methoden dieses Designs extrahieren. Sie können auch andere Informationen abrufen, wie z. B. die Datensatzanzahl. Sie benötigen für jede Abfrage ein einzelnes Exemplar dieses Designs in Ihrem Modell. Jedes Exemplar verweist in der Regel auf ein einzelnes Exemplar von odbc_Database.
Name | Typ | Beschreibung |
---|---|---|
SQLstatement | String | Die SQL-Anweisung zum Erstellen der zugrunde liegenden Datensatzgruppe. Sie können in diesem Parameter die vollständige Anweisung angeben, oder ISL kann sie mit den einzelnen Parametern für Sie erstellen. |
Name | Typ | Beschreibung |
---|---|---|
database | Part | Die Datenbank, die Sie abfragen möchten. Dies muss ein Exemplar von ODBC_Database sein. Dies ist ein erforderlicher Parameter. |
Typ | Name | Der Typ der zu erstellenden Datensatzgruppe. Vorgabewert ist :Dynaset. Er bietet Lese- und Schreibzugriff auf die zugrunde liegende Datenbanktabelle. Die einzige andere unterstützte Option ist :Snapshot. Diese ist schreibgeschützt. |
tableName | String | Name der Tabelle oder Ansicht, die in der Abfrage verwendet werden soll. Dieser Parameter ist erforderlich, es sei denn, Sie geben die vollständige SQL-Abfrage mithilfe des Parameters SQLstatement an. Bei einer Excel-Tabelle wäre dies ein benannter Bereich in der XLS-Datei. |
fields | String | Felder (Spalten), die in der Abfrage zurückgegeben werden sollen. Vorgabewert ist "*", d. h., alle Spalten in der Tabelle. |
where | String | Zeichenfolge für eine WHERE-Klausel zum Filtern der Zeilen, die aus der SQL-Tabelle zurückgegeben werden sollen. Vorgabewert ist "", d. h., es wird keine Filterung angewendet. |
orderBy | String | Eine orderBy-SQL-Zeichenfolge zum Sortieren der in der Abfrage zurückgegebenen Zeilen. Vorgabewert ist "", d. h., es erfolgt keine bestimmte Sortierung. |
reuse? | Boolean | Dieses Flag steuert das Verhalten der Datensatzgruppe zur Aktualisierungszeit. Wenn reuse? = True ist, verwendet das System nach der Aktualisierung das gleiche Datensatzgruppenobjekt. Die Aktion, die das System vornimmt, hängt vom Wert von requeryOnUpdate? ab. Dieses Verhalten ergibt eine optimale Leistung, ist aber möglicherweise nicht synchron mit den Regeln, die die interne SQL-Anweisung steuern, und/oder nicht synchron mit den Daten in der Datenbank. Dies kann immer auftreten. Wenn reuse? = false ist, wird das System geschlossen, und das alte Datensatzgruppenobjekt wird freigegeben. Es wird ein neues erstellt und geöffnet. Vorgabewert ist False. |
requeryOnUpdate? | Boolean | Wenn True, erfolgt automatisch eine erneute Abfrage, wenn dieses Bauteil nach einer Aktualisierung erstmals angefordert wird. Wenn False, wird das Datensatzgruppenobjekt in demselben Zustand, in dem es vorher war, wiederverwendet, unabhängig von Änderungen an der Datenbank oder den Parametern. Dieser Parameter ist nur dann relevant, wenn der Parameter Reuse? True ist. Vorgabewert ist True für Dynasets, sonst False. |
updateOnUpdate? | Boolean | Steuert, ob nicht gespeicherte Änderungen an der Datensatzgruppe (falls vorhanden) wieder in der Datenbank gespeichert werden, wenn die ISL-Datensatzgruppe geschlossen wird. Vorgabewert ist False, d. h., Änderungen werden nicht gespeichert. Verwenden Sie die Methode Update(), um Änderungen zu speichern. |
maxStringSize | Integer | Legt die maximale Größe einer Zeichenfolge fest, einschließlich des abschließenden Null-Bytes. Vorgabewert ist 1024. |
Name | Typ | Beschreibung |
---|---|---|
isBOF? | Boolean | nicht im Cache gespeichert - legt fest, ob der aktuelle Datensatz der erste Datensatz ist (falls vorhanden). |
isEOF? | Boolean | nicht im Cache gespeichert - legt fest, ob der aktuelle Datensatz hinter dem letzten Datensatz liegt (falls vorhanden). |
isEmpty? | Boolean | nicht im Cache gespeichert - bestimmt, ob die Datensatzgruppe keine Zeilen hat. In diesem Fall sind sowohl isBOF?: als auch isEOF?: True. |
addNew( Optional ignoreErrors? As Boolean = False ) As BooleanFügt einen neuen Datensatz (Zeile) in die Datensatzgruppe ein, ohne Angabe der Werte für jedes Feld (Spalte). Argumente: * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
addNewRecord( data As List, Optional ignoreErrors? As Boolean = False ) As BooleanFügt einer Liste mit Daten, die jedem einzelnen Feld entsprechen, in der Datensatzgruppe einen neuen Datensatz (Zeile) hinzu, legt jedes Feld (Spalte) auf das entsprechende Element der Datenliste fest und speichert es dauerhaft in der Datenbank. Es ist nicht erforderlich, hinterher mit Update zu aktualisieren. Sie müssen die Methode Requery aufrufen, um den neuen Datensatz anzuzeigen. Argumente: * data - passend formatierte Daten für jedes Feld in der Reihenfolge der Felder. Wenn der Wert für ein Feld Name NoChange ist, wird der Feldwert nicht geändert, sondern bleibt als dessen Vorgabewert bestehen. Dies ist besonders nützlich für Schlüsselfelder, die automatisch nummeriert werden. Jedes Feld wird sequenziell festgelegt. * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
cancelUpdate( Optional ignoreErrors? As Boolean = False ) As BooleanVerwirft alle Änderungen an der Datensatzgruppe, die noch nicht mit der Methode update() gespeichert wurden. Argumente: * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
delete( Optional ignoreErrors? As Boolean = False ) As BooleanLöscht die aktuelle Zeile aus der Datenbank. Argumente: * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
edit( Optional ignoreErrors? As Boolean = False ) As BooleanÖffnet die aktuelle Zeile für Änderungen. Argumente: * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
editRecord( data As List, _ Optional ignoreErrors? As Boolean = False ) As BooleanÄndert den aktuellen Datensatz und speichert die Änderungen. Diese Methode ruft die einfachere Methode edit() auf, legt mit den angegebenen Daten alle Felder in der Zeile fest und ruft dann die Methode update() auf, um die Änderungen zu speichern. Argumente: * data - passend formatierte Daten für jedes Feld in der Reihenfolge der Felder. Wenn der Wert für ein Feld Name NoChange ist, wird der Feldwert nicht geändert, sondern bleibt als dessen Vorgabewert bestehen. Dies ist besonders nützlich für Schlüsselfelder, die automatisch nummeriert werden. Jedes Feld wird sequenziell festgelegt. * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
findFirst( Optional value As Any = 0, _ Optional field As String = "", _ Optional ignoreErrors? As Boolean = False, _ Optional OnErrorReturn As Any = False ) As BooleanSucht nach dem ersten Datensatz (Zeile), in dem der Inhalt des Felds dem angegebenen Wert gleich ist. Wenn vorhanden, wird der gefundene Datensatz als aktuell festgelegt, und die Methode gibt True zurück. Wenn nicht vorhanden, ist der aktuelle Datensatz nicht definiert, und die Methode gibt False zurück. Argumente: * value - Intent-Wert, mit dem nach * field - Feld (Spalte) gesucht wird, um * ignoreErrors? zu überprüfen. - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. * OnErrorReturn - wenn ein Fehler aufgetreten ist (und ignoreErrors? True ist), steht dieser Parameter für den Vorgabewert. Gibt True zurück, wenn der Vorgang erfolgreich war.
getFieldNames( Optional ignoreErrors? As Boolean = False ) As ListGibt eine Liste der Feldnamen (Spaltennamen) in der Datensatzgruppe zurück. Argumente: * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme.
getFieldValue( columnName As Any, _ Optional OnNullReturn As Any = Error, _ Optional ignoreErrors? As Boolean = False ) As AnyGibt den Wert des angegebenen Felds (Spalte) im aktuellen Datensatz zurück. Argumente: * columnName - Feldname oder ganzzahliger Index des Felds in der Tabelle. * OnNullReturn - Wenn das Feld leer ist (Null), wird der zurückgegebene Wert durch das Argument OnNullReturn gesteuert. Der vorgegebene Wert für dieses Argument ist :Error, d. h. Ausnahme der Intent-Sprachdatei melden. * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme.
getRecordCount( Optional fullCount? As Boolean = True, _ Optional ignoreErrors? As Boolean = False ) As IntegerGibt die Anzahl der Datensätze in der Datensatzgruppe zurück. Argumente: * fullCount - kann auf False gesetzt werden, um die Anzahl der bisher gesehenen Datensätze (d. h. den oberen Wert des Zeigers current record) abzurufen. * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme.
getRecord( Optional OnNullReturn As Any = :Error, _ Optional ignoreErrors? As Boolean = False ) As ListGibt den Wert für alle Felder im aktuellen Datensatz in einer Liste zurück. Argumente: * OnNullReturn - Wenn das Feld leer ist (Null), wird der zurückgegebene Wert durch das Argument OnNullReturn gesteuert. Der vorgegebene Wert für dieses Argument ist :Error, d. h. Ausnahme der Intent-Sprachdatei melden. Dieses Argument ist möglicherweise eine Liste, die die OnNullReturn-Werte für jedes Feld festlegt. * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme.
move( n As Integer, _ Optional ignoreErrors? As Boolean = False ) As BooleanVerschiebt den aktuellen Datensatz um n Datensätze. Argumente: * n - Anzahl der Datensätze. Der Wert kann negativ sein, wenn der zugrunde liegende Datensatzgruppentyp dies unterstützt. * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
moveFirst( Optional ignoreErrors? As Boolean = False ) As BooleanVerschiebt den aktuellen Datensatz so, dass er auf den ersten Datensatz zeigt (falls vorhanden). Argumente: * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
moveLast( Optional ignoreErrors? As Boolean = False ) As BooleanVerschiebt den aktuellen Datensatz so, dass er auf den letzten Datensatz zeigt (falls vorhanden). Argumente: * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
moveNext( Optional ignoreErrors? As Boolean = False ) As BooleanVerschiebt den Zeiger Aktueller Datensatz um einen Datensatz nach vorn. Argumente: * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
movePrev( Optional ignoreErrors? As Boolean = False ) As BooleanVerschiebt den Zeiger Aktueller Datensatz um einen Datensatz zurück. Argumente: * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
requery( Optional ignoreErrors? As Boolean = False ) As BooleanFührt die Abfrage in der Datenbank erneut durch. Löst keine Bindung zuvor zwischengespeicherter Werte, wirkt sich nur auf zukünftige Methodenaufrufe aus. Argumente: * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
SetFieldValue( columnName As Any, _ value As Any, _ Optional ignoreErrors? As Boolean = False ) As BooleanLegt in dem aktuellen Datensatz den Wert von columnName auf den angegebenen Wert fest. Sie müssen zuvor bereits AddNew() oder Edit() aufgerufen haben. Sie müssen update() aufrufen, um diese Änderung zu speichern. Argumente: * columnName - Feldname oder ganzzahliger Index des Felds in der Tabelle. * value - Intent-Wert, der * ignoreErrors? festlegt - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
Update( Optional ignoreErrors? As Boolean = False ) As BooleanSpeichert die Änderungen in der Datenbank. Argumente: * ignoreErrors? - Wenn True, führt ein Fehler im Vorgang nicht zu einer Intent-Ausnahme. Gibt True zurück, wenn der Vorgang erfolgreich war.
<tableName_and_options> erstellt die SELECT-Struktur aus Feldern, tableName-, where- und orderBy-Regeln
Die Verwendung von Datensatzgruppen als Bauteile in der Projektstruktur funktioniert gut, wenn die zugrunde liegende SQL-Abfrage nicht geändert wurde. Es tritt jedoch ein Problem auf, wenn die Anzahl der geöffneten Datensatzgruppen die von Access gesetzte physische Grenze von ca. 250 überschreitet. Um dieses Problem mit den Datenbankverbindungen zu umgehen, müssen Sie anstelle von Designs möglicherweise die Funktionen odbc_Recordset* verwenden. Die grundlegende Vorgehensweise ist folgende: Datensatzgruppe öffnen, Daten lesen, Datensatzgruppe schließen. Das Schließen der Datensatzgruppe ist sehr wichtig, da ODBC-Treiber so lange immer weitere Verbindungen zuweisen, bis ein vorzeitiger Fehler eintritt. Die Implementierung können Sie in etwa wie folgt durchführen. Angenommen, Sie haben ein Datenbankdesign mit dem Namen db:. Sie können auf die Daten mit einer Methode wie der folgenden zugreifen: Method GetDBData( sql As String) As List Dim recSet As Any = odbc_RecordsetOpen(db, :snapshot, sql) ' Zugriff auf die Daten ' ... vielleicht etwas Ähnliches wie die Regelformel Records: 'close recordset odbc_recordsetClose(recSet) ' # Dies ist wichtig. ' return valueEnd Method. Anschließend können alle Bauteile der Datensatzgruppe durch Regeln ersetzt werden, die stattdessen GetDBData:( ) aufrufen. Dadurch wird vermieden, dass zu viele Datensatzgruppen gleichzeitig oder für längere Zeit geöffnet werden. Dies würde hohe Kosten verursachen.