Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Query nicht schließen wenn ich das Statement ändere (https://www.delphipraxis.net/195214-query-nicht-schliessen-wenn-ich-das-statement-aendere.html)

Der schöne Günther 12. Feb 2018 18:57

Datenbank: ᕦ[ •́ ﹏ •̀ ]⊃¤=[]::::::::> • Version: ┌༼◉ل͟◉༽┐ • Zugriff über: FireDAC

Query nicht schließen wenn ich das Statement ändere
 
Wenn man z.B. sagt
Delphi-Quellcode:
meineQuery.SQL.Text := 'SELECT * FROM myTable';
dann wird
Delphi-Quellcode:
meineQuery
geschlossen. Wenn man allerdings z.B. nur einen Parameter der Query ändert wird diese nicht geschlossen.

Angenommen ich möchte nur ein "LIMIT 100" einbauen. Effektiv wird das SQL-Statement der Query geändert und sie wird geschlossen. Wie komme ich um so etwas herum? Ich hätte es gerne so wie bei den Parametern: Änderungen haben keine unmittelbaren Auswirkungen sondern erst beim nächsten
Delphi-Quellcode:
Refresh()
der Query.

Bekommt man das hin?

Uwe Raabe 12. Feb 2018 20:31

AW: Query nicht schließen wenn ich das Statement ändere
 
Wenn du die Query änderst, können auch die Parameter und Felder anders sein. Deswegen wird die Query geschlossen.

Du kannst aber auch das SQL im BeforeOpen setzen.

Der schöne Günther 12. Feb 2018 21:06

AW: Query nicht schließen wenn ich das Statement ändere
 
Oh, stimmt. Das hört sich gut an, oder BeforeRefresh. Warum hast du immer so simple und doch zielführende Antworten.:thumb:

himitsu 12. Feb 2018 21:37

AW: Query nicht schließen wenn ich das Statement ändere
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1393689)
oder BeforeRefresh.

Da mußt du aber aufpassen, denn damit schließt du das Query und der Refresh kann fehlschlagen, wenn kein AutoOpen aktiv/möglich ist.

DSCHUCH 12. Feb 2018 22:24

AW: Query nicht schließen wenn ich das Statement ändere
 
Schau Dir mal SQL Fetch, LIMIT und OFFSET an, ich vermute das ist eher was Du suchst? Warum will man ein LIMIT im Refresh ändern....

https://stackoverflow.com/questions/...atement-in-sql

https://en.wikipedia.org/wiki/Select_(SQL)

Uwe Raabe 12. Feb 2018 22:41

AW: Query nicht schließen wenn ich das Statement ändere
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1393689)
Warum hast du immer so simple und doch zielführende Antworten.:thumb:

Weil ich keine Lust habe, die komplizierten und nicht-zielführenden zu tippen 8-)

Der schöne Günther 13. Feb 2018 08:42

AW: Query nicht schließen wenn ich das Statement ändere
 
Zitat:

Zitat von DSCHUCH (Beitrag 1393695)
Warum will man ein LIMIT im Refresh ändern

Weil mir die Zufriedenheit und Selbstbestimmtheit meiner Nutzer am Herzen liegt. :love:

Der Nutzer soll es einstellen können.

Zitat:

Zitat von himitsu (Beitrag 1393690)
Da mußt du aber aufpassen, denn damit schließt du das Query und der Refresh kann fehlschlagen, wenn kein AutoOpen aktiv/möglich ist.

Danke für den Tipp. Ich habe noch gar nichts gemacht, werde es heute erst ausprobieren und bei Problemen noch einmal schreien.

Jumpy 13. Feb 2018 09:02

AW: Query nicht schließen wenn ich das Statement ändere
 
Was ist denn eigentlich der Unterschied/Vorteil von einem refresh? Geht das schneller?
Ich hab irgendwie immer gedacht, das wäre das selbe wie schließen und neu öffnen der Query?

DeddyH 13. Feb 2018 10:17

AW: Query nicht schließen wenn ich das Statement ändere
 
Für das LIMIT könntest Du doch FetchOptions.RecsSkip und FetchOptions.RecsMax Deines TFDDataSet benutzen, IIRC schließen die die Ergebnismenge auch nicht automatisch.

Der schöne Günther 13. Feb 2018 11:01

AW: Query nicht schließen wenn ich das Statement ändere
 
Ja, allerdings scheint FireDAC es nicht zu schaffen (zumindest bei Sqlite) das in die Query einzubauen sondern fordert ALLES an und filtert es dann selbst nachträglich (also client-seitig).

Das dauert nicht nur ewig, sondern wenn die Datenmenge entsprechend groß ist stürzt die Anwendung ab da ihr der Speicher ausgeht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 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