Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi was tut TQuery.Open; (https://www.delphipraxis.net/651-tut-tquery-open%3B.html)

theomega 18. Aug 2002 18:08


was tut TQuery.Open;
 
Hallo
ich will ein Query ausführen. Dazu habe ich ein fertig eingestelltes TQuery (qrmain) auf meinem Forumlar. Jetzt mach ich
Code:
qrmain.sql.Clear;
qrmain.sql.Add('Hier das Query');
qrmain.ExecSql;
das Problem ist jetzt, wenn ich Daten auslesen will, dann funzt es nicht.
qrmain.recordcount ist immer 0. Jetzt habe ich herausgefunden, das hinter die Befehle noch ein
Code:
qrMain.Open;
muß.
Nur wenn ich jetzt ein Query ausführe, dass Daten schreibt, geht es wieder nicht. Dann muß das
Code:
qrMain.Open;
wieder weg.

Erklärt mir einer, wazu das da ist, und wann ich es brauche und wann nicht?

Danke

ThOMegA

CalganX 18. Aug 2002 18:20

Zitat:

Zitat von Delphi-Online Hilfe
Die Methode Open öffnet eine Datenmenge.

procedure Open;

Beschreibung

Durch einen Aufruf von Open wird die Eigenschaft Active der Datenmenge auf True gesetzt. Die Datenmenge kann danach mit Daten gefüllt werden, die aus einer Datenbank oder einer anderen Quelle stammen (z.B. von einem Provider). Der Wert der Eigenschaft CanModify bestimmt, ob eine aktive Datenmenge Änderungen speichern kann.

Wenn Sie Active auf True setzen, werden folgende Aktionen durchgeführt:

Die Ereignisbehandlungsroutine für BeforeOpen wird aufgerufen (falls vorhanden).
Der Status der Datenmenge wird auf dsBrowse gesetzt.
Eine Möglichkeit zum Abrufen von Daten wird eingerichtet (normalerweise durch Öffnen eines Cursors).
Die Ereignisbehandlungsroutine für AfterOpen wird aufgerufen (falls vorhanden).

Tritt beim Öffnen der Datenmenge ein Fehler auf, wird ihr Status in dsInactive geändert und der Cursor (falls vorhanden) geschlossen.

So, da ich mich aber nicht mit Datenbanken auskenne, kann ich dir keine weiteren Infos dazu geben

theomega 18. Aug 2002 18:24

so wit war ich auch schon.

TheSilent1 18. Aug 2002 20:16

Hallo!

Wenn du SQL-Statements wie INSERT, UPDATE, DELETE, also Operationen durchführst, die keine Datenmenge zurück gibt, musst du

Code:
query.sql.clear;
query.sql.add('Deine Query');
query.execsql;
Wenn du allerdings ein SELECT-Statement verwendest, also einen SQL-Befehl der eine Datenmenge zurück gibt, musst du
Code:
query.sql.clear;
query.sql.add('Deine Query');
query.open
verwenden. Nach dem Öffen kannst du dann deine Datensätze auslesen.
Du hast bei dieser Methode allerdings auch die Möglichkeit, Datensätze hinzuzufügen, zu löschen oder zu aktualisieren. Du brauchst dazu allerdings folgende Methoden von TQuery:
Code:
query.edit ==> versetzt den Datensatz in den Edit-Modus um ihn zu  
               verändern
query.append ==> fügt einen leeren Datensatz an
query.delete ==> löscht den aktuellen Datensatz
query.post ==> speichert die nach Edit durchgeführten Änderungen
Du kannst diese Methoden nur einsetzen, wenn die Query nur auf eine Tabelle gerichtet ist.

Ich hoffe das hat dir ein bisschen geholfen.

Gruß

TheSilent1


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz