Datenbankkomponenten in Delphi und C++-Builder

Willemers Informatik-Ecke

DBGrid

Das DBGrid bezieht seine Daten immer aus einer DataSource. Ist die Datenquelle eine Tabelle, können alle Felder vom Anwender frei editiert werden. Durch einen Doppelklick auf den DBGrid kann erreicht der Programmierer den Spalteneditor (s.u.). Damit kann man nur bestimmte Spalten einer Tabelle anzeigen oder die Spaltenüberschriften ändern. Sollen nur ein Teil der Records im Grid angezeigt werden, setzt man einen Filter auf die Tabelle.

Freiere Hand bei der Gestaltung des Grids hat man mit einer Query als Datenquelle. Hier kann man der Query einen beliebigen SQL-Befehl zugrunde legen. Der Inhalt eines Grids kann so aus mehreren Tabellen zusammengesetzt sein. Darum ist es normalerweise auch nicht möglich, dass der Anwender im Grid die Daten ändert.

Durch einen Doppelklick in den Grid wird der Spalteneditor geöffnet. Hierin kann festgelegt werden, welche der erreichbaren Spalten angezeigt werden. Im Objektinspektor jeder Spalte kann in der Eigenschaft Title auch unter Caption die Überschrift einzelner Spalten editiert werden.

DBNavigator

Der Navigator wechselt den aktuellen Satz einer Datenquelle, erzeugt oder löscht Sätze und bestätigt Eingaben. Die wichtigste Eigenschaft ist DataSource, in der die Datenquelle, auf die er wirkt, eingetragen wird.

Manipulation der Buttons

Die Buttons werden in Abhängigkeit von der zugrundeliegenden Datenquelle auf "enable" oder "disable" gesetzt. Das erkennt man leicht daran, dass der Links-Button deaktiviert wird, wenn man vor den ersten Satz gehen möchte.

Will man den "Post"-Button aktivieren, so muss man die darunterliegende Datenquelle in den Edit-Zustand versetzen, also deren Methode Edit() aufrufen.

Ereignisse

Die interessanteste Eigenschaft dürfte BeforeAction sein. Sie wird aufgerufen, nachdem ein Button des Navigators gedrückt wurde und bevor die Aktion ausgeführt wird. In der Funktion, die das Ereignis empfängt, bekommt man den gedrückten Button als Parameter Button übergeben.

nbPost
Ein Edit() auf die Datenquelle ist vor dem Aufruf der Ereignisfunktion bereits durchgeführt. Man kann also weitere Informationen in den Record schreiben, die dann auch geschrieben werden. Keinesfalls darf man nach dem Ändern des Puffers Post() aufrufen, da dies die Funktion selbst tun möchte.

DBLookupComboBox

Diese ComboBox (Aufklappliste) dient dazu, Verweise auf Inhalte anderer Tabellen über eindeutige Schlüssel zu realisieren. Beispielsweise wird die Eingabemaske für einen Patienten auch seine Krankenkasse enthalten. Meist steht dort ein Kürzel oder eine ID-Nummer.

Die Tabelle Patient (über die DataSource SrcPatient) enthält das Feld IDKK. Darin steht die Referenz auf den Key der Tabelle Kasse (über die DataSource SrcKasse), die dort einfach ID heißt. Zur Anzeige soll allerdings das Feld Name der Tabelle Kasse gebracht werden, da dieses den ausgeschriebenen Namen der Krankenkasse enthält. Die folgenden Eigenschaften müssen gesetzt werden.

EigenschaftWert
DataField IDKK
DataSource SrcPatient
KeyField ID
ListField Name
ListSource SrcKasse


Homepage (C) Copyright 2002 Arnold Willemer