Skip to main content
Skip table of contents

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:
1 = dsBrowse
2 = dsEdit
3 = dsInsert

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.
Result - Feld-Objekt vom Typ TField

nIndex:N

Index des Feldes

CbFieldByName():O

Die Funktion ermittelt ein Datenbank-Feld-Objekt anhand des Feldnamens und liefert es zurück.
Result - Feld-Objekt vom Type TField

cFieldName:C

Name des Feldes

CbLocate():L

Die Funktion sucht in der Tabelle nach frei definierbaren Werten, über frei definierbare Felder
Result - Datensatz gefunden



cKeyFields:C

Feldnamen der Felder die durchsucht werden sollen. Durch Semikolon getrennt:
'Feld1;Feld2'

cKeyValues:C

Suchbegriffe als Array:
{Wert1, Wert2}

nOptions:N

Suchoptionen:
loCaseInsensitive - Schlüsselfelder und Schlüsselwerte werden ohne Berücksichtigung der Groß-/Kleinschreibung verglichen
loPartialKey - Schlüsselwerte müssen nicht vollständig übereinstimmen

CbFindKey():L

Die Funktion sucht einen Datensatz, gemäß dem Suchkriterium aKey.
Result - Datensatz gefunden

aKey:A

Schlüssel / Suchkriterium als Array
{Wert1, Wert2}

CbGetRecAsArray():O

Die Funtkion ermittelt den aktuellen Datensatz als Array. Jedes Feld ist ein Element des Arrays.
Result - Datensatz als Array



CbAddField():O

Die Funktion fügt der Tabelle ein neues Feld an.
Result - Feld vom Typ TField



cFieldName:C

Name des Feldes

nFieldType:N

Datentyp des Feldes
1 = ftString
3 = ftInteger
5 = ftBoolean
6 = ftFloat
9 = ftDate
10 = ftTime
11 = ftDateTime
16 = ftMemo

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.
Result - Namen der Felder, die angelegt wurden




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.
'ARTNR,BEZ1,BEZ2'

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.
'ERSTELLT,GAENDERT'

CbInsert():L

Die Funktion fügt einen neuen, leeren Datensatz in die BeMemTable ein.
Ist dies nicht möglich, so wird eine Exception ausgelöst.
Result - BeMemTable im InsertMode



CbAppend():L

Die Funktion fügt der BeMemTable einen neuen, leeren Datensatz hinzu.
Ist dies nicht möglich, so wird eine Exception ausgelöst.
Result - BeMemTable im InsertMode



CbEdit():L

Die Funktion versetzt die BeMemTable in den Bearbeitungsmodus.
Ist dies nicht möglich, so wird eine Exception ausgelöst.
Result - BeMemTable im EditMode



CbPost():L

Die Funktion schreibt neu angelegte oder editierte Datensätze in die BeMemTable.
Ist dies nicht möglich, so wird eine Exception ausgelöst.
Result - BeMemTable im BrowseMode



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.
Ist dies nicht möglich, so wird eine Exception ausgelöst.
Result - BeMemTable im BrowseMode



CbDelete():L

Die Funktion löscht den aktuellen Datensatz und setzt den Zeiger auf den nächsten Datensatz.
Ist dies nicht möglich, so wird eine Exception ausgelöst.
Result - BeMemTable im BrowseMode



CbFindNearest():L

Die Funktion sucht in der Datenmenge den Datensatz der die größte Übereinstimmung mit aKey hat und macht diesen zum aktiven Datensatz.
Result - Einen Datensatz gefunden

aKey:A

Schlüssel / Suchkriterium als Array
{Wert1, Wert2}

CbGoTo():L

Die Funktion springt zu dem Datensatz, dessen RecordNumber aRecordNo ist.
Result - Positionierung erfolgreich

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
Result - NoRecordMove aktiv



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
1 = ixUnique Jeder Wert im Index ist eindeutig und es gibt keine Duplikate
2 = ixDescending Der Index sortiert in absteigender Reihenfolge
3 = ixCaseInsensitive Bei der Sortierung der Datensätze wird die Groß-/Kleinschreibung berücksichtigt
4 = ixExpression Der Index basiert auf einem dBASE-Schlüsselausdruck
5 = ixNonMaintained Der Index wird nicht automatisch aktualisiert, wenn Daten geändert werden

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

CODE
//##############################################################################
//##############################################################################
// 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,


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.