Sign in Join
Wiki copytemporary

Databases in Lazarus/de

Deutsch · English · Español · Italiano

Ziel

Diese Seite liefert einen allgemeinen Überblick über die Verwendung von Datenbanken in Lazarus. Sie soll auch eine Seite sein, von der aus andere Datenbankseiten erreicht werden können.

Datasets

Die Verwendung von Datenbanken in Lazarus (oder FreePascal) basiert hauptsächlich auf der Klasse 'TDataset'. Diese repräsentiert für Ihre Anwendung eine Tabelle oder Abfrage. Aber wie bei vielen anderen fundamentalen Klassen, benutzen Sie nicht die Klasse 'TDataset' selbst, sondern einen Nachkommen von ihr. Davon gibt es viele. Sie bieten Zugriff auf unterschiedliche Arten von Datenbanken, sowohl auf lokale Datenbanken und Textdateien als auch auf Serverdatenbanken wie PostgreSQL, Firebird, MySQl und so weiter. Einige TDataset-Abkömmlinge linken direkt auf Datenbanktabellen, während andere dafür zusätzliche Komponenten oder Bibliotheken benötigen.

Die Seite Databases/de dokumentiert solche Nachkommen.

Dataset-Nachkommen die nichtvisuelle Komponenten sind, finden Sie (normalerweise) als Teil der Free Component Library (FCL), seltener in der Lazarus Component Library (LCL).

Verwendung von Datasets

Sie können Datasets programmatisch oder auch mit visuellen Steuerelementen verwenden. Eine typische Lazarus-Datenbankanwendung benutzt oft beide Verfahren. In jedem Fall ist der erste Schritt das Erzeugen eines TDataset-Nachkommen, ihn zu initialisieren für eine Verbindung mit der gewünschen Tabelle oder Abfrage, und diese zu öffnen. Dies kann entweder im Code zur Laufzeit geschehen oder Sie geben eine Komponente auf Ihr Formular und stellen deren Eigenschaften zur Entwurfszeit ein. Die Details dazu unterscheiden sich erheblich (abhängig von den verschiedenen TDataset-Nachkommen), schauen Sie also unter Databases/de nach, was für Ihre jeweilige Datenbank gemacht werden muss.

Wenn das Dataset geöffnet ist, wird eine Anzahl von Feldkomponenten erzeugt, eine für jedes Feld oder jede Spalte Ihrer geöffneten Tabelle oder Abfrage. Jede Feldkomponente ist ein Nachkomme von TField, passend für den besonderen Datentyp des Feldes, z.B. TStringField.

Verwendung von Datasets aus dem Code heraus

Der programmatische Zugriff wird detaillierter erklärt in Using Dataset and Field components, aber als sehr einfacher Überblick folgendes:

Verwendung der visuellen (datenabhängigen) Steuerelemente

Um Datenbanken in einer einfachen, grafischen Lazarus-Anwendung zu benutzen, konfigurieren Sie üblicherweise den TDataset-Nachkommen zur Entwurfszeit und verwenden dann die datenabhängigen Steuerelemente. Dazu ist folgendes nötig:

Siehe #Data Controls unten für weitere Details über die Steuerelemente

Status der Datenmengen (Datasets)

Datasets können mehrere Zustände einnehmen. Obwohl es mehr solche gibt (-sehen Sie dazu im Quelltext von 'TDataSetState' nach-), sind die wichtigsten, die Sie anfangs kennen sollten:

Status

Funktion

dsInactive

Die Datenmenge ist geschlossen.

dsBrowse

Der Benutzer kann durch die Datenmenge blättern und die Werte betrachten.

dsEdit

Der Benutzer kann die Werte der aktuellen Zeile bearbeiten. Die Werte werden erst gespeichert, wenn das Senden (engl. "post") ausgeführt wurde.

dsInsert

Eine neue Zeile wurde angefügt und der Benutzer kann die Werte eingeben. Dieser Datensatz wird erst gespeichert, wenn das Senden (engl. "post") ausgeführt wurde.

Die anderen Zustände sind ziemlich vorübergehend und werden normalerweise "automatisch" verarbeitet. Sie werden nur intern und in komplizierterem Code gebraucht. Falls Ihre Datenbank nur die Daten anzeigt, und Sie die Datenmenge zur Entwurfszeit öffnen, können Sie den Status überhaupt ignorieren, da er meisten bei 'dsBrowse' liegt. Trotzdem werden die meisten Anwendungen irgendwann auch die Daten ändern müssen. Wenn Sie dazu datenabhängige Steuerelemente benutzen, werden diese viele Dinge automatisch regeln. Wenn Sie beispielsweise den Text in einem DBEdit-Steuerelement ändern, versetzt dieses die Datenmenge in den Zustand 'dsEdit' - außer sie ist bereits in 'dsEdit' oder 'dsInsert'. Wenn Sie zu einem anderen Datensatz "springen" während der Status bei 'dsEdit' oder 'dsInsert' ist, dann wird dieser Datensatz "gesendet" und die Datenmenge kehrt zurück zum Zustand 'dsBrowse'. Falls Sie allerdings aus Ihrem Code heraus auf die Datenmenge zugreifen, werden Sie auch öfter den Status im Code ändern müssen. Das Steuerelement dbNavigator (siehe unten) erlaubt dem Benutzer ausdrücklich, auch den Zustand zu ändern.

Senden und Abbrechen (Post and Cancel)

Wenn Sie einen Datensatz bearbeitet oder eingefügt haben, werden die neuen Werte in einem Puffer gehalten.

Datensteuerelemente

Um diese Steuerelemente zu verwenden, fügen Sie das Steuerelement Ihrem Formular hinzu und setzen Sie zumindest die Eigenschaft 'Datasource'. Andere wichtige Eigenschaften sind angegeben.

Steuerelemente für einzelne Felder

Diese Steuerelemente betreffen alle ein einzelnes Feld. Geben Sie neben der Datenquelle 'Datasource' auch den Feldnamen an. Diese Steuerelemente enthalten:

Das Steuerelement DBGrid

Dieses Steuerelement zeigt mehrere Felder in einem Gitterlayout an - als Vorgabe werden alle angezeigt. Mit individuellen Einträgen in derColumns collection schränken Sie sich auf bestimmte Felder ein und legen die Breiten und Titel der einzelnen Spalten fest.

Derzeit scheint es einige Probleme mit dem Bearbeiten in dbGrid zu geben. Obwohl das Bearbeiten also möglich ist, ist es sicherer, nur Daten anzuzeigen (-setzen Sie 'readonly' auf 'true') und verwenden Sie zum Bearbeiten Einzelfeldsteuerelemente.

Das Steuerelement Navigator

Dieses Steuerelement gibt dem Benutzer die direkte Kontrolle über die Datenmenge. Es erlaubt dem Benutzer folgendes:

Schlüsseleigenschaften:


From the Free Pascal wiki, page "Databases in Lazarus/de", as it stood on 2011-08-03 after a change by Chronos, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 2, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.