SDFDataSet Filter funktioniert nicht richtig

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Aphadias
Beiträge: 124
Registriert: Mi 28. Okt 2015, 18:28

SDFDataSet Filter funktioniert nicht richtig

Beitrag von Aphadias »

ich brauche doch noch mal eure Hilfe. Ich musste mich jetzt gezwungener Maßen doch mit .csv Dateien anfreunden obwohl ich es eigentlich nicht wollte.

Kurz um... ich habe eine TSDFDataSet eingefügt, eine DataSource und ein DBGrid. Das alles habe ich mit einander verbunden und SDFDataSet auf aktiv gestellt... soweit so gut
Viel muss die kleine Maske nicht können. Nur die .csv Datei auslesen und ich möchte drinne Suchen (Filtern).

Wenn ich ein Wort im Edit eingebe möchte ich in der DBGrid alles angezeigt haben was das Wort beinhaltet.

Code: Alles auswählen

procedure Tficd.icdsucheClick(Sender: TObject);
begin
  with SDFDataSet1 do begin
    filtered:=true;
    refresh;
  end;
end;
 
procedure Tficd.SdfDataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  SDFDataSet1.fieldbyname('Field1').asstring := Edit1.Text;
end;


es ist zwar toll das er filtert aber nur ein Problem... bzw eigentlich zwei... im Datensatz sind zwei "Spalten" und wenn ich die erste Spalte filtern will dann schreibt er das Wort einfach nur so lange in die 1 Spalte rein bis die zweite Spalte zu ende ist.

Wie kann ich beide Spalten Synchronisieren so das wenn ich in der 1. Spalte suche das er die zweite Spalte mit anpasst an die Filterung zur ersten Spalten?

Aphadias
Beiträge: 124
Registriert: Mi 28. Okt 2015, 18:28

Re: SDFDataSet Filter funktioniert nicht richtig

Beitrag von Aphadias »

hat keiner eine Idee dazu?

*EDIT: ich habe gerade so mal am Rande rausbekommen das er eigentlich gar nicht filtert... sondern das was ich raus filtern möchte und oben rein schreibe schreibt er einfach in der Spalte 1 nieder... sprich XYZ was es zb nicht gibt schreibt er einfach komplett rein :evil: was ist das denn für eine d*** Filterfunktion

*EDIT: da ich jetzt langsam merke das nie etwas einfach ist denke ich jetzt über folgenes nach... die CSV Datei wird ja in eine DBGrid gelesen... wie sieht es aus wenn ich ein scanner über die DBGrid lege ein dynamisches Array... ich lese jede Zeile aus und die mit dem passenden Filter werden in den Array gelegt... danach Grid löschen und mit den Arrays voll schreiben... oder ist das zu viel Ressorcenverschwendung?

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: SDFDataSet Filter funktioniert nicht richtig

Beitrag von wp_xyz »

Damit ein Record herausgefiltert (im Sinne von "weggelassen") wird, muss man den Parameter "Allow" auf false setzen. Ohne dies bleibt "Allow" auf true, und damit werden alle Records akzeptiert.

Sieh dir mal das beigefügte Beispielprojekt an.
Dateianhänge
TestSDF_Filter.zip
(177.93 KiB) 78-mal heruntergeladen

Aphadias
Beiträge: 124
Registriert: Mi 28. Okt 2015, 18:28

Re: SDFDataSet Filter funktioniert nicht richtig

Beitrag von Aphadias »

Wahnsinn... ich hätte jetzt nen riesen Quelltext geschrieben... Danke... habe den glauben schon aufgegeben das etwas einfach geht

Aphadias
Beiträge: 124
Registriert: Mi 28. Okt 2015, 18:28

Re: SDFDataSet Filter funktioniert nicht richtig

Beitrag von Aphadias »

Sry ich kann das Thema doch noch nicht begraben... werde gerade wahnsinnig

ich wollte es jetzt ausbauen damit er 2 Spalten filtert... hatte im record nen if eingebaut und lazarus fand meine idee echt kacke... der brauche im Edit auf einmal pro eingetippten Buchstaben eine halbe sekunde... also sau langsam... naja ich habe alles so zurück gebaut wie im Programm.... und er zeigt mir nix mehr an beim filtern!!!!! obwohl es wie vorher ist... 1 zu 1 wie im Programm... verstehe ich nicht... immer wenn ich was im edit eingebe dann löscht er das DBGrid

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: SDFDataSet Filter funktioniert nicht richtig

Beitrag von wp_xyz »

Ich habe jetzt das Demoprogramm von oben auf zwei gefilterte Spalten erweitert. Kein Problem.

Was du da vermurkst hast, kann ich nicht sagen. Z.B. darfst du natürlich in dem OnFilter-Event nicht den aktiven Datensatz verstellen (also nicht Next, Prior etc aufrufen).
Dateianhänge
TestSDF_Filter2.zip
(178.07 KiB) 80-mal heruntergeladen

Aphadias
Beiträge: 124
Registriert: Mi 28. Okt 2015, 18:28

Re: SDFDataSet Filter funktioniert nicht richtig

Beitrag von Aphadias »

danke... aber zwei Sachen.. 1. der zweite Filter geht nicht ^^
sobald ich die checkbox checke dann filtert er nicht die andere Spalte nicht... aber dann passiert das was auf einmal bei mir immer passiert... er zeigt nix mehr an

2. wenn ich das von der ersten Spalte die ich filtere den text drinne lasse im Edit und danach erst checke... dann passiert das was ich auch dauerhaft habe... der prozessor geht in die knie... und wenn ich dann was schreibe dauert es ewig bis er das von meiner Tastatur übernimmt

aber insgesamt hatte ich den Quelltext so ähnlich ^^

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: SDFDataSet Filter funktioniert nicht richtig

Beitrag von wp_xyz »

Also ich mache das:

  • Programm starten und "Load big CSV" clicken
  • In Spalte MTRL_BTCH stehen im angezeigten Fensterausschnitt nur Werte, die mit "6" beginnen; scrolle ich ans Ende, dann sehe ich, dass es aber auch andere Werte in dieser Spalte gibt ("GMAZ", "UNBW"). Das nun als kurzer Überblick, was alles in der Datei steht.
  • Ich gehe ins Filter-Edit und tippe "6" --> in der Anzeige ändert sich nichts, aber wenn ich ans Ende scrolle, sehe ich dass die Zeilen mit "GMAZ"und "UNBW" verschwunden sind. --> Filtern nach dem 1.Kriterium funktioniert.
  • Ich scrolle etwas nach oben und sehe, dass es in Spalte MTRL_TYPE neben "FERT" auch Einträge mit "HALB" gibt.
  • Markiere ich die Filter-Checkbox, sind die Einträge mit "HALB" in Spalte MTRL_TYPE verschwunden. --> Filtern nach dem zweiten Kriterium funktioniert
  • Ich gehe zurück ins Filter-Edit und lösche alles. Beim Durchscrollen sehe ich, dass in Spalte MTRL_BTYPE nur noch Werte "FERT" stehen (denn es wird wegen der markierte Checkbox dort noch gefiltert).
Bitte versuche, deine Schritte detailliert aufzuschreiben, so dass ich nachvollziehen kann, was du machst, was du erwartest und was du siehst.

Aphadias
Beiträge: 124
Registriert: Mi 28. Okt 2015, 18:28

Re: SDFDataSet Filter funktioniert nicht richtig

Beitrag von Aphadias »

wp_xyz hat geschrieben:Also ich mache das:

  • Programm starten und "Load big CSV" clicken
  • In Spalte MTRL_BTCH stehen im angezeigten Fensterausschnitt nur Werte, die mit "6" beginnen; scrolle ich ans Ende, dann sehe ich, dass es aber auch andere Werte in dieser Spalte gibt ("GMAZ", "UNBW"). Das nun als kurzer Überblick, was alles in der Datei steht.
  • Ich gehe ins Filter-Edit und tippe "6" --> in der Anzeige ändert sich nichts, aber wenn ich ans Ende scrolle, sehe ich dass die Zeilen mit "GMAZ"und "UNBW" verschwunden sind. --> Filtern nach dem 1.Kriterium funktioniert.
  • Ich scrolle etwas nach oben und sehe, dass es in Spalte MTRL_TYPE neben "FERT" auch Einträge mit "HALB" gibt.
  • Markiere ich die Filter-Checkbox, sind die Einträge mit "HALB" in Spalte MTRL_TYPE verschwunden. --> Filtern nach dem zweiten Kriterium funktioniert
  • Ich gehe zurück ins Filter-Edit und lösche alles. Beim Durchscrollen sehe ich, dass in Spalte MTRL_BTYPE nur noch Werte "FERT" stehen (denn es wird wegen der markierte Checkbox dort noch gefiltert).
Bitte versuche, deine Schritte detailliert aufzuschreiben, so dass ich nachvollziehen kann, was du machst, was du erwartest und was du siehst.


ne dann passt das wirklich so... dann soll wirklich nach FERT gefiltert werden. Ich dachte erst das wenn ich die Checkbox checke er zwar in der anderen Spalte filtert aber das was ich eingebe. Ok ich versuche es mal umzubauen, weil brauche beide Filter-Spalten individuell

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: SDFDataSet Filter funktioniert nicht richtig

Beitrag von wp_xyz »

Trotzdem wäre es interessant nachvollziehen zu könne, wie es zu dem von dir beschriebenen Fehler kommt ("der prozessor geht in die knie... und wenn ich dann was schreibe dauert es ewig bis er das von meiner Tastatur übernimmt"). Ich glaube dir ja, dass das auftritt, nur weiß ich nicht, wie man den Fehler erzeugt, und ohne genaue Beschreibung, wie man das reproduziert, kann niemand den Fehler beheben.

Aphadias
Beiträge: 124
Registriert: Mi 28. Okt 2015, 18:28

Re: SDFDataSet Filter funktioniert nicht richtig

Beitrag von Aphadias »

oh ok tschuldigung

Also wenn ich das Häckchen setze und danach in den Edit was eingebe. Dann schreibe ich was auf meiner Tastatur und es dauert dann bis es im Edit erscheint. Da kommt dann in Zeitlupe Buchstabe für Buchstabe.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: SDFDataSet Filter funktioniert nicht richtig

Beitrag von wp_xyz »

Verstehe ich nicht. Das habe ich ja auch schon gemacht, und keine Fehlfunktion festgestellt. Irgendetwas muss noch anders sein.

Hast du irgendwo schon erwähnt, welchen Lazarus/FPC du verwendest und auf welchem Betriebssystem? Und sind Laz/FPC bzw. Betriebssystem in 32 oder 64 bit? Ich habe 32-bit Laz-trunk/FPC3.0.4 auf Windows 10 / 64-bit verwendet.

Antworten