Kapitel 5: Hinter dem Datensatz Daten...
Der Status des ersten Datenabschnitts
Bei der Entwicklung von Datenbankanwendungen mit Delphi und ADO wird die meiste Arbeit damit verbracht, die Hilfedokumentation für die DataSet-Komponente zu studieren. . Um ein ADO-basiertes Programm zu erstellen, stellt Delphi mehrere Datensatzkomponenten bereit: TAdoTable, TAdoQuery und andere Komponenten. Sie werden verwendet, um Daten aus Datenbanktabellen oder Abfragen abzurufen, darzustellen und zu ändern.
In Kapitel 5 dieses Tutorials erhalten wir einen praktischen Einblick in das Präsentieren, Durchsuchen und Lesen von Daten, indem wir einige der Eigenschaften, Ereignisse und Methoden der meisten interessierenden Datensatzkomponenten vorstellen.
Auswählen, einstellen, verbinden und bekommen
Da Sie nun Kapitel 5 erreicht haben, sollten Sie mit den Schritten vertraut sein, die zum Erstellen eines Datenbankformulars erforderlich sind. In Kapitel 4 haben wir manuell ein einfaches Formular zum Durchsuchen von Daten erstellt. In diesem Kapitel wird es verwendet, um die Diskussion fortzusetzen.
Bisher haben wir nur eine (ADO-)Datensatzkomponente verwendet: TAdoTable. Es ist wichtig zu verstehen, dass TADOQuery und TADODataSet (als Datensatzkomponenten) dieselben Einstellungen für dieselben Methoden und Ereignisse verwenden.
Sesam öffnen; Sesam schließen (Sesam öffnen; Sesam schließen)
Eines der sehr wichtigen Merkmale der Delphi-Datenbankentwicklung besteht darin, dass Delphi uns die Verarbeitung von Daten während des Programmentwurfs ermöglicht. Sie erinnern sich vielleicht: Im vorherigen Kapitel haben wir die Active-Eigenschaft verwendet, um zur Entwurfszeit eine aktive Verbindung zu den Daten herzustellen.
Es ist nicht schwer zu verstehen, dass das Programm vor Beginn der Verarbeitung der Daten der Tabelle zunächst den Datensatz öffnen muss. Delphi bietet zwei Möglichkeiten, diese Funktionalität zu erreichen. Das erste ist, dass wir, wie wir gesehen haben, die Active-Eigenschaft beim Entwurf oder zur Laufzeit auf True setzen können; das zweite ist, dass wir die Open-Methode zur Laufzeit aufrufen können. Fügen Sie beispielsweise den folgenden Code zum OnCreate-Ereignishandler des Formulars hinzu, um die Daten der ADOTable-Komponente abzurufen.
ADOTable1.Open;
Hinweis: Jeder ADO-Datensatz kann über seine eigene ConnectionString-Eigenschaft oder eine ADOConnection-Komponente (und deren ConnectionString) auf Datenbankdaten zugreifen. Wenn die ADOTable1-Komponente mit der ADOConnection1-Komponente verbunden ist (diese Methode wird empfohlen), wird beim Öffnen von ADOTable die entsprechende ADOConnection-Komponente aktiviert. ADOConnection stellt zwei Ereignisse bereit, die ausgeführt werden: OnWillConnect und OnConnectComplete.
Die Open-Methode setzt die Active-Eigenschaft auf True und aktiviert die Verbindung. Wenn wir mit der Verbindung fertig sind, können wir die Active-Eigenschaft auf False setzen oder die Close-Methode aufrufen, um die Verbindung zu trennen. Normalerweise platzieren wir den Aufruf der Close-Methode im OnClose-Ereignishandler des Formulars:
ADOTable1.Close;
Bevor Sie fortfahren, müssen Sie unbedingt wissen, dass die Arbeit mit Datensatzmethoden und -eigenschaften auf der Kenntnis des aktuellen Datenzustands beruht. Einfach ausgedrückt bestimmt die State-Eigenschaft eines Datensatzes, welche Aktionen zu jedem Zeitpunkt für den Datensatz ausgeführt werden können und welche nicht.
Wie geht es dir?
Wenn der Datensatz geschlossen ist, zeigt der Status der Daten eine inaktive Verbindung an. Wenn die Verbindung geschlossen ist, können keine Vorgänge, Verhaltensweisen oder Methoden für die Daten ausgeführt werden. Wenn wir zum ersten Mal eine Verbindung zum Datensatz herstellen, befindet sich der Datensatz im Standardstatus „Durchsuchen“. Sie sollten immer den Zustand „Ihrer“ Daten kennen. Wenn wir beispielsweise einen Datensatz mit einem DBGrid verbinden, kann der Benutzer den zugrunde liegenden Datensatz (oder Datensatz) sehen, aber wenn er einige Daten ändern möchte, muss er den Status auf Bearbeiten setzen.
Wenn ein Programm Daten verarbeitet, ist es wichtig zu verstehen, dass sich der Zustand des Datensatzes ständig ändert. Wenn der Benutzer beispielsweise Daten in DBGrid durchsucht (Status „Durchsuchen“), beginnt er mit der Bearbeitung von Datensätzen und der Status ändert sich automatisch in „Bearbeiten“. Dies ist natürlich ihr Standardverhalten, wenn die AutoEdit-Eigenschaft der Datenvisualisierungssteuerelemente (DBGrid, DBEdit) auf True gesetzt ist.
Aber wie bekommen wir den Status? ADOTable (und auch keine andere DataSet-Komponente) verfügt über keine Trigger zur Verarbeitung von Statusänderungen.
Werfen wir einen Blick darauf: Für jede DataSet-Komponente verwenden wir normalerweise eine DataSource-Komponente, um eine Verbindung zu einem oder mehreren Datenvisualisierungssteuerelementen herzustellen. Das ist es.
Jede Datenquellenkomponente verfügt über ein OnStateChange-Ereignis, das immer dann ausgelöst wird, wenn sich der zugrunde liegende Datensatzstatus ändert. Platzieren Sie den folgenden Code im OnStateChange-Ereignishandler, um den aktuellen Status der ADOTable1-Datensatzkomponente mithilfe des Formulartitels anzuzeigen:
PROcedure TForm1.DataSource1StateChange(Sender: TObject);
var ds: string ;
beginnen
Fall ADOTable1.State of
dsInactive: ds:='Geschlossen';
dsBrowse: ds:='Browsing';
dsEdit: ds:='Bearbeiten';
dsInsert: ds:='Neuer Datensatz wird eingefügt';
anders
ds:='Andere Staaten'
Ende ;
Caption:='ADOTable1 state: ' + ds;
Ende ;