| Autor | Beitrag | 
| J.Borchert 
          Beiträge: 150
 
 WIN10
 XE2 Professional
 
 | 
Verfasst: So 25.08.19 11:23 
 
Hallo zusammen,
 ich habe in meinem Programm einen Offline-Modus. Hier werden die Daten der letzen Sitzung, welche zuvor beim Beenden immer in einer Datei gespeichert werden, geladen.
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 
 | if fileexists('last_Funk.db') thenWITH ADOQuery16 DO
 BEGIN LoadFromFile('last_Funk.db');
 Last;
 First;
 LabeL509.Caption := IntToStr(RecordCount);
 END;
 |  Jetzt wird die gesamte Datenmenge im verknüpften DBGrid angezeigt.
 Danach möchte ich mit einem Select die Datenmenge filtern, aber ich habe irgendwas vergessen:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 
 | with ADOQuery16 dobegin Close;
 SQL.Clear;
 SQL.Text := 'SELECT * FROM FUNK';                 Prepared := False;
 Open;
 Last;
 First;
 LabeL509.Caption := IntToStr(RecordCount);
 end;
 |  Jetzt wird nichts mehr im verknüpften DBGrid angezeigt...und ich weiß nicht warum ? 
 Zuletzt bearbeitet von J.Borchert am So 25.08.19 13:55, insgesamt 2-mal bearbeitet
 | 
|  | 
| Th69 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: So 25.08.19 12:18 
 
Du solltest einen SQL-Fehler zur Laufzeit erhalten, denn der Filter muß in einfachen Anführungszeichen stehen. | 
|  | 
| J.Borchert  
          Beiträge: 150
 
 WIN10
 XE2 Professional
 
 | 
Verfasst: So 25.08.19 13:40 
 | 
|  | 
| J.Borchert  
          Beiträge: 150
 
 WIN10
 XE2 Professional
 
 | 
Verfasst: So 25.08.19 13:57 
 
Also so wie jetzt oben gekürzt kommt ein SQL-Fehler:
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 
 | ---------------------------Die Datei SELECT * FROM FUNK
 
 kann nicht gefunden werden.
 ---------------------------
 |  | 
|  | 
| Holgerx 
          Beiträge: 66
 Erhaltene Danke: 27
 
 Win95 - Win11 / MSServer2000 - MSServer2019
 Delphi 6pro / XE4
 
 | 
Verfasst: So 25.08.19 19:16 
 
Hmm..
 		                       Delphi-Quelltext 
 									| 1:2:
 
 | WITH ADOQuery16 DOBEGIN LoadFromFile('last_Funk.db');
 |  -> Die Datenmenge wird ins Query geladen und 'geöffnet'...
 		                       Delphi-Quelltext 
 									| 1:2:
 
 | with ADOQuery16 dobegin Close;
 |  -> Die Datenmenge wird geschlossen und deren Inhalt 'weggeworfen'....
 Ein Filtern auf einer geöffneten Datenmenge ohne DB geht nur noch mit '.Filter' des ADOQuery.
 Wenn die 'Offline' Datenmenge durch Close geschlossen wird, greift ein nachfolgender SQL auf die eventuell vorhandenen Connection, aber nicht mehr auf die eben geladene und wieder weggeworfene Datenmenge zu...
Moderiert von  Th69: Delphi-Tags hinzugefügt | 
|  | 
| J.Borchert  
          Beiträge: 150
 
 WIN10
 XE2 Professional
 
 | 
Verfasst: So 25.08.19 20:00 
 
Ok, super. Danke für deine Hilfe. Habe versucht, das Ganze umzusetzen. Leider gibt es nach dem Filtern nur einen einzigen Datensatz (leer) im Grid:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 
 | Procedure FunkOfflineFiltern(s:string);begin
 with Form1, ADOQuery16 do
 begin Edit113.Text := s;          Filtered := False;
 Filter := s;                Filtered := True;
 end;
 end;
 |  Fehlt da noch was ? | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Di 27.08.19 06:15 
 
Im Filter ist nicht jede SQL Klausel erlaubt, eventuell funktioniert dort LIKE schlicht nicht.
 Falls es sich um eine Enterprise Edition handelt, wäre auch FireDAC mit Local SQL im Speicher möglich. Da kann man dann sogar joins im Speicher auf den Offline-Daten machen, auch auf selbst im Speicher komplett neu erstellte Tabellen.
 Für diesen Beitrag haben gedankt: J.Borchert
 | 
|  | 
| Holgerx 
          Beiträge: 66
 Erhaltene Danke: 27
 
 Win95 - Win11 / MSServer2000 - MSServer2019
 Delphi 6pro / XE4
 
 | 
Verfasst: Di 27.08.19 08:26 
 
Hmm..
 Hab da ein Testprogramm für ClientDataset mit ADOQuery.
 
 Damit läst sich ein neues DataSet erstellen, dieses bearbeiten, speichern, laden.
 Bei aktivierung des Filters wird dessen Edit eingefärbt, ob das ADOQuery den Filter verwendet oder mit einer Exception ablehnt.
 
 Zu beachten ist, das ein führendes '%' nur geht, wenn auch ein abschließendes '%' nach einem Text folgt...
 
 (Erstellt mit D6, ja und ich will nicht wechseln...)
 
Einloggen, um Attachments anzusehen!
 Für diesen Beitrag haben gedankt: J.Borchert
 | 
|  | 
| J.Borchert  
          Beiträge: 150
 
 WIN10
 XE2 Professional
 
 | 
Verfasst: Di 27.08.19 17:29 
 
	  | Zitat: |  	  | Zu beachten ist, das ein führendes '%' nur geht, wenn auch ein abschließendes '%' nach einem Text folgt... | 
 Das war der entscheidende Hinweis. Danke Euch allen. 
 Letzte Bitte:
 Wie kann ich im DBGrid, wenn ich Select nicht benutzen kann, Spalten nach meiner gewünschten Reihenfolge anordnen bzw. nur einzelne Spalten anzeigen lassen ?_________________ Wer immer macht was er schon kann, bleibt immer das, was er schon ist. "H.Ford"
 | 
|  | 
| Th69 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: Di 27.08.19 17:42 
 
Jede Spalte (DbGrids.TColumn ) hat die Eigenschaften Visible  und Index . Für diesen Beitrag haben gedankt: J.Borchert
 | 
|  |