Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Frage zu RequestLive (https://www.delphipraxis.net/5435-frage-zu-requestlive.html)

Gambit 5. Jun 2003 23:12


Frage zu RequestLive
 
Warum klappt folgendes bzw, warum ändert RequestLive hier seinen Wert wenn es vorher auf false stand:?

Delphi-Quellcode:
Query1.RequestLive := true;
Query1.Active := false;
Query1.SQL.Strings[1]:= '';
Query1.Active := true;
Und hier nicht:?

Delphi-Quellcode:
Query1.RequestLive := true;
Query1.Active := false;
Query1.SQL.Strings[1]:= 'order by Name';
Query1.Active := true;
Gruß

Gambit

P.S anders herum gehts, wenn vorher RequestLive auf true steht, kann man:

Delphi-Quellcode:
Query1.RequestLive := false;
Query1.Active := false;
Query1.SQL.Strings[1]:= 'order by Name';
Query1.Active := true;
und es funzt.

r_kerber 6. Jun 2003 06:35

Könntest Du mal genauer beschreiben, was nicht funktioniert? hast Du das Programm schon mal Zeilenweise durchdebugt?

Gambit 6. Jun 2003 08:46

Ich wüsste jetzt ehrlichgesagt nicht, wie ich das noch näher beschreiben sollte. Ich möchte meine DB schreibgeschützt öffnen(daran liegt mir wirklich viel am Herzen). Daher habe ich eine CheckBox eingebaut, die sich solcher Routinen bedient. DataSource ist eine Query. Die DB wird also eh nicht editierbar geöffnet, egal ob ich in den Eigenschaften der Query RequestLive auf tru oder false setzte.
Wenn die erste der o.g. Routinen aufrufe, wo ich Request Live auf true setzen will, darf ich nicht noch 'order by name' verwenden, sonst kann ich nach wie vor nix editieren.

Gruß

Gambit

r_kerber 6. Jun 2003 08:51

Debugge das programm doch einfach mal zeilenweise durch. Dann kannst Du nachvollziehen, was es tatsächlich macht.

Natalia 6. Jun 2003 09:29

RequestLife funktioniert leider nicht bei allen SQL-Abfragen.
Folgendes steht dazu in der Delphi-Hilfe:

"Alle Abfragen über mehrere Tabellen liefern schreibgeschützte Ergebnismengen. Auch andere Vorgaben können zu schreibgeschützten Ergebnismengen führen. Sehen Sie sich bei lokalen Tabellen (wie z.B. dBASE und Paradox) in der Hilfe zu Local SQL die Regeln zu aktualisierbaren Ergebnismengen an. Ziehen Sie für andere Tabellentypen (wie z.B. InterBase, Oracle und Sybase) die Dokumentation für das entsprechende Datenbanksystem zu Rate."

Vielleicht kann dir das weiterhelfen?

Natalia

r_kerber 6. Jun 2003 09:34

Zitat:

Zitat von Natalia
RequestLife funktioniert leider nicht bei allen SQL-Abfragen.

Stimmt. Deswegen hatte ich Gambit an anderer Stelle schon einmal empfohlen, es TUpdateSQL zu versuchen. Dies setzt aber eine andere Arbeitsweise als die jetztige tabellenorientierte voraus. Dann sollten IMHO auch keine datensensitiven Controls, die direkt auf die DB zugreifen genutzt werden. Oder man verwendet TClientDataSet.

Gambit 6. Jun 2003 13:36

Tja, so wirds wohl sein. Da ich aber blutiger Anfänger bin, belasse ichs erstmal so. Was ich nur witzig finde ist, dass es andersherum funzt, also

Delphi-Quellcode:
Query1.RequestLive := false;
Query1.Active := false;
Query1.SQL.Strings[1]:= 'order by Name';
Query1.Active := true;
Hier ändert RequestLive seinen Wert, auch wenn order by Name angegeben ist. Komisch das.

Und wg. TUpdateSQL, da hab ich kein Beispiel für gefunden und kann mir somit nix drunter vorstellen.

Gambit

r_kerber 6. Jun 2003 17:07

Zitat:

Zitat von Gambit
Da ich aber blutiger Anfänger bin, belasse ichs erstmal so.

Als blutiger Anfänger kannst Du ja erst mal TTable benutzen denke (ist für Paradox auch die bessere Alternative). So hast Du zunächst ein gewissen Lerneffekt. Später solltest Du Dich dann mal mit Interbase (oder MySQL) an Client-Server-Programmierung herantasten. Vielleicht kann Dir jemand aus dem Forum auch mal einen Buchtip geben zur DB-Programmierung mit Delphi.

Gambit 6. Jun 2003 17:16

OK, Danke! Ich denke für den Anfang ist mein Buch schon gar nicht schlecht(Datenbankprogrammierung mit Delphi 6 aus dem Hanser Verlag von Doberenz und Kowalski)

Besten Dank

Gambit

Gast 6. Jun 2003 19:45

Hallo Gambit :D

Also ZUERST(!!!) Query schliessen

Query1.Close;

und erst dann RequestLive ändern:

Query1.RequestLive := FALSE;

vielleicht jetzt SQL zuweisen,

und erst dann:

Query1.Open

Gruß

Paul Jr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 Uhr.
Seite 1 von 2  1 2      

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