TBeMemTable
)
TBeMemTable
Die Klasse TBeMemTable kapselt Eigenschaften und Funktionen für die Verwenden der BeMemTable.
Die Klasse TBeMemTable steht erst ab Version 6.1 zur Verfügung.
Eigenschaften
Eigenschaft | Beschreibung |
---|---|
Active:L | Aktiviert oder deaktiviert die Tabelle |
CbFiltered:L | Aktiviert oder deaktiviert die Filterung der Tabelle |
CbFilter:C | Liefert den aktuellen Filter zurück oder setzt ihn |
CbFieldCount:N | Liefert die Anzahl der Datenbank-Felder zurück |
CbBoF:L | "Begin of File". Gibt an, ob sich die Tabelle auf dem ersten Datensatz befindet |
CbEoF:L | "End of File". Gibt an, ob sich die Tabelle auf dem letzten Datensatz befindet |
CbBookmark:C | Speichert die Position des aktuellen Datensatzes in einem Bookmark-String und kann die Position wieder auf diesen Datensatz setzen. |
CbState:N | Liefert den aktuellen Status der Tabelle zurück. Mögliche Stati sind: |
CbIndexName:C | Liefert den Namen des aktuellen Indexes zurück oder setzt einen neuen Index |
CbRecordCount:N | Liefert die Anzahl der aktuell sichtbaren Datensätze zurück |
CbRecNo:N | Liefert die Nummer des aktuellen Datensatzes zurück. |
CbDataAvailable:L | Die Eigenschaft ist True, wenn Datensätze sichtbar sind |
CbNoDataAvailable:L | Die Eigenschaft ist True, wenn keine Datensätze sichtbar sind (z.B. wenn die Tabelle gefiltert ist) |
Funktionen
Funktion | Parameter | Beschreibung |
---|---|---|
CbField():O Die Funktion ermittelt ein Datenbank-Feld-Objekt anhand des Feldindexes und liefert es zurück. | nIndex:N | Index des Feldes |
CbFieldByName():O Die Funktion ermittelt ein Datenbank-Feld-Objekt anhand des Feldnamens und liefert es zurück. | cFieldName:C | Name des Feldes |
CbLocate():L Die Funktion sucht in der Tabelle nach frei definierbaren Werten, über frei definierbare Felder | cKeyFields:C | Feldnamen der Felder die durchsucht werden sollen. Durch Semikolon getrennt: |
cKeyValues:C | Suchbegriffe als Array: | |
nOptions:N | Suchoptionen: | |
CbFindKey():L Die Funktion sucht einen Datensatz, gemäß dem Suchkriterium aKey. | aKey:A | Schlüssel / Suchkriterium als Array |
CbGetRecAsArray():O Die Funtkion ermittelt den aktuellen Datensatz als Array. Jedes Feld ist ein Element des Arrays. | ||
CbAddField():O Die Funktion fügt der Tabelle ein neues Feld an. | cFieldName:C | Name des Feldes |
nFieldType:N | Datentyp des Feldes | |
nFieldSize:N | Größe des Feldes. Bei alles Datentypen außer ftString muss die Größe 0 betragen | |
CbLoadFields():C Die Funktion initialisiert Felder anhand der übergebenen Workarea. Es können alle Felder in der BeMemTable angelegt werde, oder wahlweise nur die Felder aus cFields oder alle Felder außer den in cIgnoreFields. Die MemTable übernimmt die Felder und die WorkArea der Tabelle mit der übergebenen Workarea. Somit hat man eine genau Kopie der gewünschten Tabelle. | nWorkarea:N | Workarea der Tabelle, von der die Felder übernommen werden sollen |
cAliasName:C | Alias der Tabelle | |
cFields:C | Eine durch ',' getrennte Liste mit Feldnamen. Nur die Felder aus der Liste werden in der BeMemTable angelegt. Wenn cFields leer bleibt, dann werden alle Felder übernommen. | |
cIgnoreFields:C | Eine durch ',' getrennte List mit Feldnamen. Nur die Felder die nicht in der Liste enthalten sind, werden in der BeMemTable angelegt. Wenn cIgnoreFields leer bleibt, werden keine Felder ausgeschlossen. | |
CbInsert():L Die Funktion fügt einen neuen, leeren Datensatz in die BeMemTable ein. | ||
CbAppend():L Die Funktion fügt der BeMemTable einen neuen, leeren Datensatz hinzu. | ||
CbEdit():L Die Funktion versetzt die BeMemTable in den Bearbeitungsmodus. | ||
CbPost():L Die Funktion schreibt neu angelegte oder editierte Datensätze in die BeMemTable. | ||
CbCancel():L Die Funktion bricht den Bearbeitungsmodus der BeMemTable ab und schreibt eventuell neu angelegte Datensätze oder neu zugewiesene Werte nicht in die BeMemTable. | ||
CbDelete():L Die Funktion löscht den aktuellen Datensatz und setzt den Zeiger auf den nächsten Datensatz. | ||
CbFindNearest():L Die Funktion sucht in der Datenmenge den Datensatz der die größte Übereinstimmung mit aKey hat und macht diesen zum aktiven Datensatz. | aKey:A | Schlüssel / Suchkriterium als Array |
CbGoTo():L Die Funktion springt zu dem Datensatz, dessen RecordNumber aRecordNo ist. | nRecordNo:N | RecordNumber des Datensatzes, auf den positioniert werden soll |
CbIsNoRecordMove():L Die Funktion liefert True zurück wenn NoRecordMove für die Tabelle aktiv ist, ansonsten liefert sie False zurück |
Methoden
Methode | Parameter | Beschreibung |
---|---|---|
CbFirst() Die Methode positioniert den Zeiger auf den ersten Datensatz der BeMemTable. | ||
CbLast() Die Methode positioniert den Zeiger auf den letzten Datensatz der BeMemTable. | ||
CbNext() Die Methode verschiebt den Zeiger um einen Datensatz nach unten. | ||
CbPrior() Die Methode verschiebt den Zeiger um einen Datensatz nach oben. | ||
CbMove() Die Methode verschiebt den Zeiger um die Anzahl der Datensätze aus nRecordCount in die gewünschte Richtung. Wenn nRecordCount negativ ist wird der Zeiger nach oben verschoben, wenn nRecordCount positiv ist, wird der Zeiger nach unten verschoben | nRecordCount:N | Anzahl der Datensätze um die der Zeiger verschoben werden soll. |
CbEnableControls() Die Methode aktiviert die Benachrichtigungen von datensensitiven Steuerelementen, die mit der BeMemTable verbunden sind, falls diese zuvor mit CbDisableControls() deaktiviert wurden. | ||
CbDisableControls() Die Methode verhindert die Benachrichtigungen von datensensitiven Steuerelementen, die mit der BeMemTable verbunden sind. Es werden beispielsweise die Browser, welche auf die BeMemTable zugreifen nicht mehr automatisch aktualisiert. Dies kann die Geschwindigkeit erheblich erhöhen. Es muss durch ein startseq - always - stopseq sichergestellt werde, das CbEnableControls() ausgeführt wird. | ||
CbSetFilter() Setzt einen Filter auf die BeMemTable und aktiviert diesen. | cFilter:C | Logischer Filter-Ausdruck. |
CbRefresh() Die Methode aktualisiert die BeMemTable, das heißt, es werden alle Datensätze erneut eingelesen. | ||
CbAddIndex() Die Methode legt einen neuen Index für die BeMemTable an und aktiviert diesen sofort. | cIndexName:C | Name des Index. Mit dem Indexnamen kann der Index per CbIndexName geändert werden |
cFields:C | Ein oder mehrere Felder (durch Semikolon getrennt). Die Felder stellen den Indexausdruck dar. | |
nIndexOptions:N | 0 = ixPrimary Der Index ist der Primär-Index der Tabelle | |
CbSetRange() Die Methode begrenzt den sichtbaren Bereich der BeMemTable auf die Datensätze die zwischen den übergebenen Werten sind. Es muss ein gültiger Index auf der BeMemTable aktiv sein. Die Parameter müssen beide als Array übergeben werde. | aTopValue:U | Werte für die Obere Begrenzung |
aEndValue:U | Werte für die Untere Begrenzung | |
CbSetRangeEx() Die Methode grenzt den sichtbaren Bereich der BeMemTable auf die Datensätze ein, die dem übergebenem Wert entsprechen. Es muss ein gültiger Index auf der BeMemTable aktiv sein. Der Parameter muss als Array übergeben werden. | aScopeValue:U | Werte für die Begrenzung |
CbCancelRange() Die Methode hebt die Begrenzung des sichtbaren Bereiches der BeMemTable auf. | ||
CbBorrowFromDataset() Die Funktion initialisiert Felder anhand von oDataset. | oDataset:O | Dataset, von welchem die Felder übernommen werden sollen. Zum Beispiel von einer Tabelle oder einem Query |
CbLoadFromDataset() Die Funktion kopiert alle Datensätze des übergebenen Datasets in die BeMemTable. | oDataset:O | Dataset, von welchem die Datensätze kopiert werden sollen. Zum Beispiel von einer Tabelle oder einem Query |
bClear:L | Wenn bClear = True ist, dann werden zuerst alle Datensätze die sich bereits in der BeMemTable befinden gelöscht | |
CbOrderBy() Die Methode sortiert die BeMemTable nach den übergebenen Felder. | cSortFields:C | Felder nach denen sortiert wird. Mehrere Felder werden dabei durch ein Semikolon getrennt |
CbSetRecAsArray() Die Methode schreibt die Werte eines Record-Array in die BeMemTable. Die BeMemTable muss sich dabei im Einfüge- oder Editiermodus befinden. | aRecord:U | Record-Array |
CbSetRecAsArrayEx() Die Methode schreibt die Werte eines Record-Array in die BeMemTable. Die BeMemTable muss sich dabei im Einfüge- oder Editiermodus befinden. | aRecord:U | Record-Array |
aIgnoreFields:C | Durch ';' getrennter String mit Feldnamen, die nicht aus dem RecordArray übernommen werden sollen | |
CbCopyRecFromDataset() Die Funktion übernimmt den aktuellen Datensatzes von oDataset und schreibt ihn in die BeMemTable. Das Dataset muss richtig positioniert sein. | oDataset:O | Dataset, von welchem der Datensatz kopiert werden soll. Zum Beispiel eine Tabelle oder ein Query |
CbEmptyTable() Die Funktion löscht den gesamten Inhalt einer Tabelle | ||
CbSaveToFile() Die Funktion speichert den aktuellen Zustand der MemTable in die angegebene Datei | aFileName:C | Vollständiger Pfad zu einer Datei. Existiert die Datei nicht, wird sie erstellt. |
CbLoadFromFile() Die Funktion lädt eine zuvor gespeicherte MemTable aus der angegebenen Datei | aFileName:C | Vollständiger Pfad zu einer Datei. Existiert die Datei nicht wird ein Fehler ausgelöst. |
CbReplace() Die Methode ersetzt den Wert des Feldes durch den übergebenen Wert. | cFieldName:c | Name des Feldes, dessen Wert ersetzt werden soll |
vNewValue:V | Neuer Wert, der in das Feld geschrieben wird | |
CbBeginNoRecordMove() Die Methode aktivert die NoRecordMove-Logik für die Tabelle. Währen NoRecordMove aktiv ist, kann die Tabelle nicht umpositioniert werden. | cNoRecordMoveFormName:c | Name des Formulars, in dem die Tabelle die gesperrt werden soll, verwendet wird. |
CbEndNoRecordMove() Die Methode deaktivert die NoRecordMove-Logik für die Tabelle wieder. Wenn die Methode aufgerufen wird wenn die NoRecordMove-Logik nicht aktiv ist, wird eine Exception ausgelöst | cNoRecordMoveFormName:c | Name des Formulars, in dem die Tabelle die entsperrt werden soll, verwendet wird. |
CbSaveIndex() Den aktuellen Index der Tabelle merken | ||
CbSaveAndSetIndex() Den aktuellen Index der Tabelle merken und auf den angegebenen Index setzen | cIndexName:C | Name des Index der auch gesetzt wird |
CbResetIndex() Auf den Zuletzt gemerkten Index zurücksetzen |
Verfügbare Ereignisse
Ereignis | Beschreibung |
---|---|
AfterCancel | Nach dem Abbrechen |
AfterDelete | Nach dem Löschen |
AfterEdit | Nach dem Editieren |
AfterInsert | Nach dem Einfügen |
AfterPost | Nach dem Posten |
AfterScroll | Nach dem Scrollen |
BeforeCancel | Vor dem Abbrechen |
BeforeClose | Vor dem Schließen der Tabelle |
BeforeDelete | Vor dem Löschen |
BeforeEdit | Vor dem Editieren |
BeforeInsert | Vor dem Einfügen |
BeforeOpen | Vor dem Öffnen der Tabelle |
BeforePost | Vor dem Posten |
BeforeScroll | Vor dem Scrollen |
OnCalcFields | Beim Aktualisieren der berechneten Felder |
OnFilterRecord | Beim Aktivieren eines Datensatzes in Verbindung mit Filtern |
OnNewRecord | Beim Einfügen oder Hinzufügen eines Datensatzen |
NoRecordMoveChanged | Nach dem Umschalten der NoRecordMoveLogik |
NoRecordMoveChanging | Beim Umschalten der NoRecordMove-Logik |
Beispiel
//##############################################################################
//##############################################################################
// Beispiel für TBeMemTable
//##############################################################################
//##############################################################################
| oDM, oBeMemTable, oBeMem010, oDab010, oField, oBookmark |
//******************************************************************************
// Neue Datensätze anlegen
//******************************************************************************
function CreateData(cName, nID, bDiscount),
oBeMemTable.CbAppend(),
oBeMemTable:FIRMA := cName,
oBeMemTable:FIRMEN_ID := nID,
oBeMemTable:RABATT := bDiscount,
oBeMemTable.CbPost(),
end,
//##############################################################################
// Eine BeMemTable erstellen und mit Datensätzen füllen
//##############################################################################
oDM := CreateObject('TBeDBGet'),
oBeMemTable := CreateObject('TBeMemTable', 'BeMemTable'),
startseq
// Felder hinzufügen
oBeMemTable.CbAddField('FIRMA', ftString, 30),
oBeMemTable.CbAddField('FIRMEN_ID', ftInteger, 0),
oBeMemTable.CbAddField('RABATT', ftBoolean, 0),
oBeMemTable.Active := True,
oBeMemTable.CbOrderBy('FIRMA'),
// Neue Datensätze anlegen
CreateData('Dontenwill AG', 47, False),
CreateData('Müller GmbH', 99, False),
CreateData('Dr. Maier Ing. Büro', 33, False),
// Einen Index anlegen
oBeMemTable.CbAddIndex('FIRMA_ID', 'FIRMA;FIRMEN_ID', ixPrimary),
if oBeMemTable.CbFindKey({'Dontenwill AG', 47}) then
oBeMemTable.CbEdit(),
oBeMemTable:RABATT := True,
oBeMemTable.CbPost(),
endif,
// Spalten bearbeiten
oField := oBeMemTable.CbFieldByName('FIRMA'),
oField.DisplayLabel := 'Firmenname',
oField := oBeMemTable.CbField(1),
oField.DisplayLabel := 'Firmen ID',
// Durch die Tabelle skippen
oBeMemTable.CbLast(),
oBeMemTable.CbPrior(),
oBeMemTable.CbMove(-2),
// Range und Filter setzen
oBeMemTable.CbAddIndex('ID', 'FIRMEN_ID', ixPrimary),
oBeMemTable.CbIndexName := 'ID',
oBeMemTable.CbSetRange({1}, {50}),
oBeMemTable.CbSetFilter('FIRMEN_ID = 47'),
oBeMemTable.CbFiltered := True,
oBeMemTable.CbCancelRange(),
oBeMemTable.CbInsert(),
if oBeMemTable.CbState = dsInsert then
oBeMemTable.CbCancel(),
endif,
// Alle Datensätze löschen
oBeMemTable.CbFirst(),
while not oBeMemTable.CbEoF do
oBeMemTable.CbDelete(),
oBeMemTable.CbNext(),
end,
always
DestroyObject(oBeMemTable),
DestroyObject(oDM),
stopseq,
//##############################################################################
// Eine BeMemTable erstellen und mit Datensätzen aus anderen Tabellen füllen
//##############################################################################
oDM := CreateObject('TBeDBGet'),
oBeMemTable := CreateObject('TBeMemTable', 'BeMemTable'),
oBeMem010 := CreateObject('TBeMemTable', 'Mem010'),
oDab010 := DBGetTable(oDM, waDab010, 'ARTIKELSTAMM'),
startseq
// Struktur einer anderne Tabelle laden
oBeMemTable.CbBorrowFromDataSet(oDab010),
oBeMemTable.Active := True,
if oBeMemTable.CbFieldCount > 0 then
oBeMemTable.CbLoadFromDataset(oDab010, True),
endif,
// Bookmark
oBookmark := oBeMemTable.CbBookmark,
oBeMemTable.CbDisableControls(),
startseq
// Felder aus einer anderen Tabelle laden
oBeMem010.CbLoadFields(waDab010, 'Artikelstamm', 'ARTNR,BEZ1,BEZ2', ''),
oBeMem010.Active := True,
oBeMemTable.CbFirst(),
while not oBeMemTable.CbEoF do
oBeMem010.CbAppend(),
oBeMem010.CbCopyRecFromDataSet(oBeMemTable),
oBeMem010.CbPost(),
oBeMemTable.CbNext(),
end,
always
oBeMemTable.CbBookmark := oBookmark,
oBeMemTable.CbEnableControls(),
stopseq,
always
DestroyObject(oBeMemTable),
DestroyObject(oBeMem010),
DestroyObject(oDM),
stopseq,