Difference between revisions of "Databases in Lazarus/de"

From Lazarus wiki
Jump to navigationJump to search
m (translated (part one))
 
m (translated)
Line 20: Line 20:
 
===Verwendung von Datasets aus dem Code heraus===
 
===Verwendung von Datasets aus dem Code heraus===
  
Programmatic access will be explained in more detail in [[Using Dataset and Field components]], but as a very simple overview:
+
Der programmatische Zugriff wird detaillierter erklärt in [[Using Dataset and Field components]], aber als sehr einfacher Überblick folgendes:
* Use the TDataset descendant to open the table or query, filter the rows you want to see, and to move from row to row.   
+
* Nehmen Sie einen TDataset-Nachkommen zum Öffnen der Tabelle oder Abfrage, zum Filtern der Zeilen nach gewünschten Daten, und zum Bewegen von Zeile zu Zeile.   
* Use the TField descendants to:  
+
* Nehmen Sie die TField-Nachkommen für:  
**Access general information about fields
+
**den Zugriff auf allgemeine Informationen über Felder
**Access the specific data values for the current row. (use the As... properties, such as AsString, AsInteger, etc.)
+
**den Zugriff auf bestimmte Datenwerte der aktuellen Zeile. (Verwenden Sie Eigenschaften 'As...', wie in AsString, AsInteger, etc.)
* Access the fields of a TDataset descendant by using either:
+
* Greifen Sie auf die Felder des TDataset-Nachkommen zu, entweder durch:
**The fields property, eg Fields[0] is the first field,  
+
**die Eigenschaft 'Fields', z.B. Fields[0] ist das erste Feld, oder durch
**The FieldByName method, eg FieldByName('AGE') returns the field associated with the database field called 'AGE'
+
**die Methode 'FieldByName', z.B. FieldByName('ALTER') ergibt das Feld verbunden mit dem Datenbankfeld namens 'ALTER'
  
 
===Verwendung der visuellen (datenabhängigen) Steuerelemente===
 
===Verwendung der visuellen (datenabhängigen) Steuerelemente===
  
To use databases in a simple, "RAD" style Lazarus application, you usually configure the dataset descendant at design time and  the use the data-aware controlsTo do this:  
+
Um Datenbanken in einer einfachen, grafischen Lazarus-Anwendung zu benutzen, konfigurieren Sie üblicherweise den TDataset-Nachkommen zur Entwurfszeit und verwenden dann die datenabhängigen SteuerelementeDazu ist folgendes nötig:  
*Add the dataset descendant for the database of your choice, together with any supporting components, to your form, and open it (Set the 'Active' property to true)
+
*Fügen Sie einen TDataset-Nachkommen für die Datenbank Ihrer Wahl Ihrem Formular hinzu, zusammen mit etwaigen Hilfskomponenten, und öffnen Sie die ihn (Setzen Sie die Eigenschaft 'Active' auf 'true').
*Add a TDatasource component (from the "Data Access" tab) to the form, and "link" it to the dataset (set the DataSet property)
+
*Fügen Sie eine TDatasource-Komponente (von der Komponentenseite "Data Access") zu Ihrem Formular hinzu, und "verknüpfen" Sie diese mit dem Dataset (= setzen Sie die Eigenschaft 'DataSet').
*Add data-aware controls from the "Data Controls" tab to the form, and link each one to the DataSource (not dataset) component
+
*Fügen Sie datenabhängige Steuerelemente (von der Komponentenseite "Data Controls") zu Ihrem Formular hinzu, und verknüpfen Sie ein jedes mit der Komponente 'DataSource' (nicht 'Dataset'!).
*Most controls link to a single field, so you also need to set the Field for each tab.
+
*Die meisten Steuerelemente verknüpfen ein einzelnes Feld, deshalb müssen Sie auch das Feld genau angeben.
See [[#Data Controls]] below for more details on the controls
+
Siehe [[#Data Controls]] unten für weitere Details über die Steuerelemente
  
=== Dataset-Status ===
+
=== Status der Datenmengen (Datasets)===
Datasets can be in a number of states. While there are quite a few (look up TDataSetState in the source), the main ones to be aware of initally are
+
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:
 
<table>  
 
<table>  
 
   <tr>
 
   <tr>
     <th>State</th>
+
     <th>Status</th>
     <th>Function</th>  
+
     <th>Funktion</th>  
 
   </tr>
 
   </tr>
 
   <tr>
 
   <tr>
 
     <td>dsInactive</td>
 
     <td>dsInactive</td>
     <td>The dataset is closed</td>
+
     <td>Die Datenmenge ist geschlossen.</td>
 
   </tr>
 
   </tr>
 
   <tr>
 
   <tr>
 
     <td>dsBrowse</td>
 
     <td>dsBrowse</td>
     <td>The user can browse through the dataset, looking at values</td>  
+
     <td>Der Benutzer kann durch die Datenmenge blättern und die Werte betrachten.</td>  
 
   </tr>
 
   </tr>
 
   <tr>
 
   <tr>
 
     <td>dsEdit</td>
 
     <td>dsEdit</td>
     <td>The user can edit values on the current row. Values are not saved until a post is performed.</td>
+
     <td>Der Benutzer kann die Werte der aktuellen Zeile bearbeiten. Die Werte werden erst gespeichert, wenn das Senden (engl. "post") ausgeführt wurde.</td>
 
   </tr>
 
   </tr>
 
   <tr>
 
   <tr>
 
     <td>dsInsert</td>
 
     <td>dsInsert</td>
     <td>A new row has been added, and the user can set the values. The record is not saved until a post is performed</td>
+
     <td>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.</td>
 
   </tr>
 
   </tr>
 
</table>
 
</table>
The other states are fairly transitory, and are usually handled "automatically". They are used internally and in more complicated code. If your database only views data, and you open the dataset at design time, you can largely ignore the state, as it will mostly be dsBrowse. However, most applications will want to change the data at some stage. If you are using data-aware controls, they will handle a lot of this automatically. If you change the text in a DBEdit control, for example, it will put the dataset into dsEdit state - unless you are already in dsEdit or dsInsert.  If you "scroll" to a different record while the current state is dsEdit or dsInsert, that record will be "posted" and the dataset revert to dsBrowse. However, if you are accessing the dataset from code, you will often have to change the state in code as well. The dbNavigator control (see below) allows the user to change the state explicitly.
+
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)===
 
===Senden und Abbrechen (Post and Cancel)===
If you have edited or inserted a record, the new values are held in a buffer.
+
Wenn Sie einen Datensatz bearbeitet oder eingefügt haben, werden die neuen Werte in einem Puffer gehalten.
*Calling the dataset cancel method removes the new record (insert) or reverts the values to their previous values (edit).   
+
*Der Aufruf der TDataset-Methode 'Cancel' entfernt einen neu eingefügten Datensatz oder setzt die bearbeiteten Werte auf die vorherigen Werte zurück.   
*Calling the dataset post method saves the values (edit) or record (insert). In some dataset descendants, they will be written to the database immediately, while in others they will be stored in a list of updates until a further call is made to save all changes to the database. Finally, even when they are written to the database, you may still have to call a "commit" method to make the database write them permanently. All of this also varies considerably with the dataset descendant, so look up the details for the one you are using.
+
*Der Aufruf der TDataset-Methode 'Post' speichert die bearbeiteten Werte oder den eingefügten Datensatz. Bei einigen Nachkommen von TDataset werden diese sofort in die Datenbank geschrieben, während diese bei anderen erst zu einer Änderungsliste gespeichert werden bis ein weiterer Aufruf sämtliche Änderungen in der Datenbank speichert. Möglicherweise müssen Sie sogar noch eine Methode "commit" aufrufen, damit die Datenbank Ihre Änderungen endgültig übernimmt. All dies variiert aber mit dem eingesetzten TDataset-Nachkommen, schlagen Sie also die Details für den von Ihnen benutzen nach.
  
 
==Datensteuerelemente==
 
==Datensteuerelemente==
  
To use any of these controls, add the control to a form and set at least the datasource propertyOther key properties will be noted.
+
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===
 
===Steuerelemente für einzelne Felder===
  
These controls all attach to a single field. As well as datasource, set the field name. Controls include:
+
Diese Steuerelemente betreffen alle ein einzelnes Feld. Geben Sie neben der Datenquelle 'Datasource' auch den Feldnamen an. Diese Steuerelemente enthalten:
  
*[[doc:lcl/dbctrls/tdbtext.html|DBText control]] Displays a text field (readonly, no border)
+
*[[doc:lcl/dbctrls/tdbtext.html|DBText control]] zeigt ein Textfeld an (schreibgeschützt, kein Rand)
*[[doc:lcl/dbctrls/tdbedit.html|DBEdit control]] Displays / edits a text field as an edit box
+
*[[doc:lcl/dbctrls/tdbedit.html|DBEdit control]] zeigt / bearbeitet ein Textfeld als Eingabefeld
*[[doc:lcl/dbctrls/tdbmemo.html|DBMemo control]] Displays / edits a text field in a multi-line edit box
+
*[[doc:lcl/dbctrls/tdbmemo.html|DBMemo control]] zeigt / bearbeitet ein Textfeld als mehrzeiliges Eingabefeld
*[[doc:lcl/dbctrls/tdbimage.html|DBImage control]] Displays a picture stored in a database as a BLOB
+
*[[doc:lcl/dbctrls/tdbimage.html|DBImage control]] zeigt ein Bild an, das in der Datenbank als BLOB gespeichert ist
*[[doc:lcl/dbctrls/tdblistbox.html|DBListBox control]] and [[doc:lcl/dbctrls/tdbcombobox.html|DBComboBox Control]] Allow the user to insert values into a database field from the list of values in the Items property of the controls
+
*[[doc:lcl/dbctrls/tdblistbox.html|DBListBox control]] und [[doc:lcl/dbctrls/tdbcombobox.html|DBComboBox Control]] erlauben es dem Benutzer, Werte aus einer Werteliste in ein Datenbankfeld einzufügen. Die Werte der Liste stehen in der Eigenschaft 'Items' des Steuerelements
*[[doc:lcl/dbctrls/tdbcheckbox.html|DBCheckBox control]] Displays / edits a boolean field by checking/clearing a check box
+
*[[doc:lcl/dbctrls/tdbcheckbox.html|DBCheckBox control]] zeigt / bearbeitet ein boole'sches Feld durch Ankreuzen/Löschen einer Checkbox
*[[doc:lcl/dbctrls/tdbradiogroup.html|DBRadioGroup control]] Displays the items as in a normal radio group, reading/setting the field value from a matching values list
+
*[[doc:lcl/dbctrls/tdbradiogroup.html|DBRadioGroup control]] zeigt die Elemente in einer Radiogroup an, liest/setzt den Feldwert aus einer zugehörigen Werteliste
*[[doc:lcl/dbctrls/tdbcalendar.html|DBCalendar control]] Displays / edits a date field using a calendar panel
+
*[[doc:lcl/dbctrls/tdbcalendar.html|DBCalendar control]] zeigt / bearbeitet ein Datumsfeld mittels eines Kalendersteuerelements
 
*[[doc:lcl/dbctrls/tdbgroupbox.html|DBGroupBox control]]
 
*[[doc:lcl/dbctrls/tdbgroupbox.html|DBGroupBox control]]
  
===[[doc:lcl/dbgrids/tdbgrid.html|DBGrid control]]===
+
===[[doc:lcl/dbgrids/tdbgrid.html|Das Steuerelement DBGrid]]===
  
This control can show a number of fields in a row/column layout - in fact by default it shows them all.  However, you can put entries into the [[doc:lcl/dbgrids/tdbgrid.columns.html|columns collection]] to restrict it to specific fields and to set the widths and titles of each column.
+
Dieses Steuerelement zeigt mehrere Felder in einem Gitterlayout an - als Vorgabe werden alle angezeigt. Mit individuellen Einträgen in der[[doc:lcl/dbgrids/tdbgrid.columns.html|Columns collection]] schränken Sie sich auf bestimmte Felder ein und legen die Breiten und Titel der einzelnen Spalten fest.
  
There seem to be some issues currently with editing in dbGrid, so while editing is certainly possible, it may be safer to use it as display only (set readonly to true) and provide single field controls for editing.
+
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.
  
===[http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbnavigator.html Navigator Control]===
+
===[http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbnavigator.html Das Steuerelement Navigator]===
  
This control gives the user some direct control over the dataset. It allows the user to:
+
Dieses Steuerelement gibt dem Benutzer die direkte Kontrolle über die Datenmenge. Es erlaubt dem Benutzer folgendes:
* Move to the next or previous record, or to the start or end of the records
+
* Bewegen zm nächsten oder vorigen Datensatz, zum Anfang oder zu Ende der Datensätze
* Add a new record (equivalent to a dataset.insert method call)
+
* Hinzufügen eines neuen Datensatzes (äquivalent zum Aufruf der Methode 'dataset.insert')
* Put the dataset into edit mode
+
* die Datenmenge in den Edit-Modus zu stellen
* Delete a record
+
* Löschen eines Datensatzes
* Post or Cancel current changes
+
* Senden oder Abbrechen der aktuellen Änderungen (Post or Cancel)
* Refresh the data (useful in multiuser database applications)
+
* Wiedereinlesen der Daten (nützlich in Mehrbenutzer-Datenbankanwendungen)
  
Key Properties:
+
Schlüsseleigenschaften:
* VisibleButtons:  Lets you control what the user can do. For example, if deletes are not allowed, hide the delete button.  If you have a DBGrid attached to the same dataset, you may decide you do not need the next and prior buttons.  
+
* VisibleButtons:  Überlässt Ihnen die Kontrolle über die für Benutzer erlaubten Aktionen. Beispiel: wenn das Löschen nicht gestattet ist, verstecke den Löschknopf. Oder Sie entschließen sich, in einem DBGrid nicht die Knöpfe 'Nächster' und 'Voriger' anzuzeigen.  
* Width: If you do not show all buttons, you may want to set the width to (height*number_of_visible_buttons)
+
* Width: Wenn Sie nicht alle Knöpfe anzeigen, setzen Sie vielleicht die Breite auf (Höhe*Anzahl_der_sichtbaren_Buttons)
  
 
[[Category:Databases]]
 
[[Category:Databases]]

Revision as of 20:03, 4 May 2011

Deutsch (de) | English (en) | español (es) | italiano (it)

Artikel über Datenbank-Programmierung

  • Lazarus-Datenbank-Tutorial - Eine Einführung über die Verwendung von Lazarus mit Datenbanken.
  • Datenbanken - Allgemeine Informationen über die Einsatzmöglichkeiten von Lazarus und FPC mit Datenbanken.
  • Datenbanken mit Lazarus - liefert einen allgemeinen Überblick über die Verwendung von Datenbanken mit Lazarus.
  • How to write in-memory database applications in Lazarus/FPC - Praktische Anweisungen zum programmieren mit MemDatasets
  • MySQLDatabases/de - erklärt, wie man auf eine einfachere Weise eine Verbindung mit einem MySQL Server herstellt.
  • Zeos_tutorial/de - Erzeugen von Datenbank-Anwendungen mit den Zeos-Komponenten.
  • Zeos+SQLite Tutorial - Gutes Tutorial mit Screenshots und Screencasts es wird auf spanisch erläutert, wie SQLite und Zeos, verwendet werden.
  • Pascal Data Objects is a database API that worked for both FPC and Delphi and utilises native MySQL libraries for version 4.1 and 5.0 and Firebird SQL 1.5, and 2.0. It's inspired by PHP's PDO class.
  • Lazarus Tdbf Tutorial/de - Datenbank-Entwicklung unter Verwendung der TDbf-Komponente (entwickelt von Micha Nelissen) mit Lazarus
  • Lazarus DB FAQ (deutsch) - Häufig gestellte Fragen zur Datenbank-Programmierung mit Lazarus.
  • Firebird - Firebird zusamen mit FPC/Lazarus verwenden
  • ODBCConn - Verwendung von 'ODBCConn' unter FPC/Lazarus für Verbindungen zu ODBC-Datenquellen.
  • MS Access - Zugriff auf eine MS-Access Datenbank

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:

  • Nehmen Sie einen TDataset-Nachkommen zum Öffnen der Tabelle oder Abfrage, zum Filtern der Zeilen nach gewünschten Daten, und zum Bewegen von Zeile zu Zeile.
  • Nehmen Sie die TField-Nachkommen für:
    • den Zugriff auf allgemeine Informationen über Felder
    • den Zugriff auf bestimmte Datenwerte der aktuellen Zeile. (Verwenden Sie Eigenschaften 'As...', wie in AsString, AsInteger, etc.)
  • Greifen Sie auf die Felder des TDataset-Nachkommen zu, entweder durch:
    • die Eigenschaft 'Fields', z.B. Fields[0] ist das erste Feld, oder durch
    • die Methode 'FieldByName', z.B. FieldByName('ALTER') ergibt das Feld verbunden mit dem Datenbankfeld namens 'ALTER'

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:

  • Fügen Sie einen TDataset-Nachkommen für die Datenbank Ihrer Wahl Ihrem Formular hinzu, zusammen mit etwaigen Hilfskomponenten, und öffnen Sie die ihn (Setzen Sie die Eigenschaft 'Active' auf 'true').
  • Fügen Sie eine TDatasource-Komponente (von der Komponentenseite "Data Access") zu Ihrem Formular hinzu, und "verknüpfen" Sie diese mit dem Dataset (= setzen Sie die Eigenschaft 'DataSet').
  • Fügen Sie datenabhängige Steuerelemente (von der Komponentenseite "Data Controls") zu Ihrem Formular hinzu, und verknüpfen Sie ein jedes mit der Komponente 'DataSource' (nicht 'Dataset'!).
  • Die meisten Steuerelemente verknüpfen ein einzelnes Feld, deshalb müssen Sie auch das Feld genau angeben.

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.

  • Der Aufruf der TDataset-Methode 'Cancel' entfernt einen neu eingefügten Datensatz oder setzt die bearbeiteten Werte auf die vorherigen Werte zurück.
  • Der Aufruf der TDataset-Methode 'Post' speichert die bearbeiteten Werte oder den eingefügten Datensatz. Bei einigen Nachkommen von TDataset werden diese sofort in die Datenbank geschrieben, während diese bei anderen erst zu einer Änderungsliste gespeichert werden bis ein weiterer Aufruf sämtliche Änderungen in der Datenbank speichert. Möglicherweise müssen Sie sogar noch eine Methode "commit" aufrufen, damit die Datenbank Ihre Änderungen endgültig übernimmt. All dies variiert aber mit dem eingesetzten TDataset-Nachkommen, schlagen Sie also die Details für den von Ihnen benutzen nach.

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:

  • Bewegen zm nächsten oder vorigen Datensatz, zum Anfang oder zu Ende der Datensätze
  • Hinzufügen eines neuen Datensatzes (äquivalent zum Aufruf der Methode 'dataset.insert')
  • die Datenmenge in den Edit-Modus zu stellen
  • Löschen eines Datensatzes
  • Senden oder Abbrechen der aktuellen Änderungen (Post or Cancel)
  • Wiedereinlesen der Daten (nützlich in Mehrbenutzer-Datenbankanwendungen)

Schlüsseleigenschaften:

  • VisibleButtons: Überlässt Ihnen die Kontrolle über die für Benutzer erlaubten Aktionen. Beispiel: wenn das Löschen nicht gestattet ist, verstecke den Löschknopf. Oder Sie entschließen sich, in einem DBGrid nicht die Knöpfe 'Nächster' und 'Voriger' anzuzeigen.
  • Width: Wenn Sie nicht alle Knöpfe anzeigen, setzen Sie vielleicht die Breite auf (Höhe*Anzahl_der_sichtbaren_Buttons)