AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Table Filter

Ein Thema von strom · begonnen am 1. Jul 2016 · letzter Beitrag vom 1. Jul 2016
Antwort Antwort
Seite 4 von 5   « Erste     234 5   
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#31

AW: Table Filter

  Alt 1. Jul 2016, 13:05
werde es gleich mal mit einer Query Komponente versuchen!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#32

AW: Table Filter

  Alt 1. Jul 2016, 13:11
Hallo,

die Heidi, oh Gott, Maria
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#33

AW: Table Filter

  Alt 1. Jul 2016, 13:23
versuch doch mal bitte
Code:
Form1.Table_Einsaetze_Event.Filter := 'EINSATZNUMMER LIKE ''12345%'' ';
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#34

AW: Table Filter

  Alt 1. Jul 2016, 13:30
Beim Suchen bin ich auf diesen Tread gestoßen: http://www.delphipraxis.net/188464-q...in-dbgrid.html

Daraus schließe ich erstmal, dass Filter bei der Datenbank grundsätzlich erstmal einsetzbar sind.

Bei diesem Filter Form1.Table_Einsaetze_Event.Filter := 'EINSATZNUMMER = "42" ' kann ich keinen syntaktischen Fehler erkennen.

Also bleiben nur noch Datenfehler übrig.
(Oder Fehler von ganz woanders her, die nur zufällig bei dem Setzen von Filtern "hochblubbern").

Dazu möchte ich (erstmal) wissen:

Ist Einsatznummer immer gefüllt?
Wieviele Datensätze hast Du in der Datenbank?
Kannst Du prüfen, ob alle Werte der Einsatznummer korrekt, d. h. spezifikationsgerecht, befüllt sind?
Kann die Einsatznummer auch leer sein?

Nun wird's spekulativ:

Trenne mal die Anzeigekomponenten von der Datenbankkomponente. Vermutlich hast Du ja Table_Einsaetze_Event irgendwo 'ner TDatasource (oder so) zugewiesen.

Lässt sich der Filter dann setzen?
Wenn ja, verschluckt sich irgendeine Komponenten, sobald ein Filter gesetzt wird, aber der Filter ist nicht das Problem.

Bleibt der Fehler bestehen, muss es irgendwo in den Daten oder bei der Tabellenkomponente oder der Datenbank ein Problem geben.

Kannst Du den ganzen "Spass" mal debuggen?
Breakpoint auf die Zeile, in der der Filter befüllt wird und von da aus dann schrittweise in alles reinsteppen, was da so ausgeführt wird. Wo "landest" Du, wenn die Exception ausgelöst wird?
Eventuell kann man dann von da aus (etwas zielgerichteter) weitersuchen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#35

AW: Table Filter

  Alt 1. Jul 2016, 13:38
Vielleicht stehen auch Leerzeichen im String. Versuch den mal zu Trimmen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#36

AW: Table Filter

  Alt 1. Jul 2016, 13:52
Bei diesem Filter Form1.Table_Einsaetze_Event.Filter := 'EINSATZNUMMER = "42" ' kann ich keinen syntaktischen Fehler erkennen.
Du nicht - die meisten von uns auch nicht- aber irgendwer zwischen Benutzer und Daten verursacht ja die Meldung und ja nach Komponenten/Schnittstellen Kombination wird die "' Kombination recht unübersichtlich.
Zitat:
Exception: Argument außerhalb des Bereichs
Also drehen wir halt mal an allen möglichen Schräubchen.

@mkinzler
angeblich sind in der DB nur 10stellige Ziffernfolgen enthalten, da ist dann wohl kein Platz für ein Blank. "42" passt da allerdings auch nicht, "0000000042" wäre da schon besser.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#37

AW: Table Filter

  Alt 1. Jul 2016, 14:04
Also dieses Filter-Gedöns wird von TDataSet zwar eingeführt, ist aber nur virtuell.

Das Setzen der Filter -Eigenschaft setzt auch nicht die Eigenschaft Filtered gesichert wieder auf false . Jedenfalls passiert das nicht in TDataSet .

Jede Ableitung von TDataSet muss sich also selber darum kümmern, ob und wenn ja wie sie sich darum kümmert. Daran hängt eben auch, wie die Syntax des Filter-Texts sein muss.

Kann man z.B. im Source von Delphi-Referenz durchsuchenTClientDataSet.SetFilterText sehen.

Pauschale Aussagen zum Thema Delphi-Referenz durchsuchenTDataSet.Filter, Delphi-Referenz durchsuchenTDataSet.Filtered erschöpfen sich also darin, dass es diese Eigenschaften gibt und dass es auch Komponenten gibt, bei denen man diese Eigenschaften sinnvoll zum Filtern verwenden kann.

Und selbst Delphi-Referenz durchsuchenTDataSet.OnFilterRecord muss von den abgeleiteten Klassen implementiert werden, damit sich da überhaupt etwas regt.

Ein Blick auf die Historie von mydac zeigt einem auch so einige Einträge bzgl. der Filter-Eigenschaft
Zitat:
  • Support for the BETWEEN statement in TDADataSet.Filter is added
  • Bug with using the LIKE clause in a dataset filter is fixed
  • Bug with using case-insensitive filter is fixed
  • ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#38

AW: Table Filter

  Alt 1. Jul 2016, 14:18
Bei diesem Filter Form1.Table_Einsaetze_Event.Filter := 'EINSATZNUMMER = "42" ' kann ich keinen syntaktischen Fehler erkennen.
Du nicht - die meisten von uns auch nicht- aber irgendwer zwischen Benutzer und Daten verursacht ja die Meldung und ja nach Komponenten/Schnittstellen Kombination wird die "' Kombination recht unübersichtlich.
Zitat:
Exception: Argument außerhalb des Bereichs
Also drehen wir halt mal an allen möglichen Schräubchen.

@mkinzler
angeblich sind in der DB nur 10stellige Ziffernfolgen enthalten, da ist dann wohl kein Platz für ein Blank. "42" passt da allerdings auch nicht, "0000000042" wäre da schon besser.

Gruß
K-H
Das Feld ist VarChar(10), da kann also alles rein, was man in 10 Zeichen fassen kann. Aber das heißt ja nicht, dass da auch alles drinn sein darf, was man in 10 Zeichen fassen kann.
"42" geht ebenso wie " 42" oder " 42 " und "0000000042".
Aber das heißt ja noch nichts.
Wenn es irgendwo in der Applikation eine Stelle gibt, an der dieses VarChar(10) nur aus Ziffern bestehen darf, aber dann, zufällig beim Setzen dieses Filters, etwas anderes bekommt, als diese (genau oder maximal?) zehn Ziffern, so mag dann dort irgendwo genau diese Fehlermeldung draus resultieren.

Ohne genauere Kenntnis der "Datenlage" und dessen, was die Applikation damit macht, scheint mir momentan eine zielgerichtete Fehlersuche kaum möglich.

Allgemein läßt die Fehlermeldung eher darauf schließen, dass hier irgendein Wert, an dem wir beim Filtern vorbeikommen, größer oder kleiner als der kleinste bzw. größte zulässige Wert ist.
Eventuell ist auch für "irgendetwas" der "getroffene Wert" kleiner oder größer als der kleinste bzw. der größte Wert für einen Index (Array, Liste, ..., wasweißdergeier)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#39

AW: Table Filter

  Alt 1. Jul 2016, 14:33
Ohne genauere Kenntnis der "Datenlage" und dessen, was die Applikation damit macht, scheint mir momentan eine zielgerichtete Fehlersuche kaum möglich.
Wie Sir Rufo ausgeführt hat, ist ja auch die "Programmlage" nicht sehr sicher. Also wäre es sinnvoll sich erst einmal alle Daten in "Einsatznummer" anzuschauen. U.U. ist da auch das eine oder andere NULL dabei?
Und dann, nach Kenntnis der vorhandenen Daten, den Filter zu definieren.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#40

AW: Table Filter

  Alt 1. Jul 2016, 14:35
Hallo,
vielleicht wird das varchar ja als char interpretiert von der JosefDB ( ).
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:22 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