Filterbedingung aus Textstring [Erledigt]

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Filterbedingung aus Textstring [Erledigt]

Beitrag von Jan »

Ich muß einen Filter setzen, wo je nach vorigen Auswahlen verschiedene Filterbedingungen gelten können. Also schreibe ich die einfach in einen String rein. Den Filter darauf zu setzen klappt auch. Aber beim DbGoTop() erzählt der mir dann immer, die im String aufgeführten Felder würden nicht existieren.

Der String sieht dann in etwa so aus: "feldname == bedingung1 .AND. feldname == bedingung2"

DbFilter() gibt mir immer nur den Variablennamen des Strings zurück.

Wie muß ich das anstellen, damit das richtig läuft?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Filterbedingung aus Textstring

Beitrag von georg »

Hallo, Jan -


das hört sich für mich so an, als wärest Du im falschen Select()-Bereich? Der SET FILTER ändert ja noch nichts (so sagt zumindest mein Gedächtnis), erst das Bewegen durch die Datei versucht dann, die Filter-Bedingung umzusetzen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Filterbedingung aus Textstring

Beitrag von Tom »

Das liegt daran, dass "bedingung1" und "bedingung2" im Moment des Zusammenbaus LOCALs waren, und wenn der Filter dann - außerhalb der "Baufunktion" - ausgeführt wird, existieren diese eben nicht. So beispielsweise dürfte es klappen (gibt aber noch elegantere Wege):

Code: Alles auswählen

"feldname == '"+Trim(bedingung1)+"' .AND. feldname == '"+Trim(bedingung2)+"'"
(Auf die zusätzlichen einfachen Anführungszeichen achten!)
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Filterbedingung aus Textstring

Beitrag von brandelh »

wenn Bedingung1 eine Variable ist, muss die private sein, ansonsten gilt natürlich, dass es sicherer ist LOCAL Variablen zu nutzen und den String daraus erzeugen zu lassen.
Bei den Feldern würde ich immer FIELD-> davor setzen, dann gibt es keine Missverständnisse.
Feldtypen mit Zeichen müssen in ' eingeschlossen werden ... was kann es noch sein ... ;-)
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Filterbedingung aus Textstring

Beitrag von Jan »

Hmm.

Georg hat natürlich Recht mit dem Select, aber das kann ich ausschließen. Einerseits ist die betreffende dbf vorher manuell selected worden, andererseits kann ich bei DbSetFilter() ja den betreffenden Bereich angeben.

Der Weg von Tom funktioniert leider nicht, da die Werte numerisch sind. Setze ich die dann wie von ihm vorgeschlagen in Hochkommata, dann werden die bei der Auswertung als String angesehen, was natürlich zur Laufzeit knallt.

Der eigentliche Fehler lag ganz woanders. Der Feldname hatte sich irgendwann zwischendurch geändert. Ich habe das im Code korrigiert, aber die auszuwertende Zwischendatei hatte noch den alten Feldnamen drin, die war seit der Änderung nicht neu erzeugt worden. :banghead: Jetzt läuft der wenigstens ohne Laufzeitfehler durch.

Aber leider ist der Ausdruck jetzt leer. Obwohl er mehrere Seiten lang sein müsste. Muß mich mal weiter auf die Suche machen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Filterbedingung aus Textstring

Beitrag von Jan »

OK. Habs gefunden. Wenn natürlich der auszuwertende Datenbestand überhaupt nichts aufweist, was der Filterbedingung entspricht, dann kann da ja auch nix vernünftiges bei rumkommen. :doubt:

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Filterbedingung aus Textstring [Erledigt]

Beitrag von Tom »

Immerhin hattest Du den Thread vorsorglich in "Newbie" gestartet. :wink:
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Filterbedingung aus Textstring [Erledigt]

Beitrag von Jan »

Tom,

tja. Hier war das aber zum Glück nicht meine Schusseligkeit. Bei Faktoren lagen außerhalb meiner Kenntnisse, ich mußte mit dem umgehen, was mir geliefert worden war. Doof und peinlich ist das aber natürlich trotzdem. Aber hier im Forum darf man sich ja zum Glück ab und an sowas leisten, ohne gleich niedergemacht zu werden.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten