Dbsetfilter

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Dbsetfilter

Beitrag von Rolf Ramacher »

hallo zusammen.

kann man mit dbsetfilter eigentlich nur 1 Bedingung filtern, oder auch mehere. Dies habe ich versucht, aber hat nicht funkt.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Rolf,

klar kann man mit DbSetFilter() mehrere Bedingungen setzen. Im Gegensatz zu Scopes, da geht immer nur eine. Dafür sind Scopes wesentlich schneller. Daher ist es oft schneller, auf die Hauptbedingung einen Scope zu setzen, und dann auf die weitere(n) Bedingung(en) den Filter.

Zeig doch mal die nicht funktionierende Codezeile.

Jan
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Rolf,

Code: Alles auswählen

set filter to ( ( empty( klub ) .or. klub >= 990 ) .and. ( tag == left( tempauswahl[ h ], 1 ) ) )
Sollte dann eigentlich so mit DbSetFilter() gehen:

Code: Alles auswählen

xumwandl->( DbSetFilter( { || ( ( empty( xumwandl->klub ) .or. xumwandl->klub >= 990 ) .and. ( xumwandl->tag == left( tempauswahl[ h ], 1 ) ) ) } ) )
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hier mein Code:

Spstamm->(DbSetFilter({|| substr(Artnr,1,3) > aFelder[10][2] .and.;
substr(Artnr,1,3) < aFelder[11][2], Saison=aFelder[6][2] } ))


Die aFelder[10][2] und aFelder[11][2] beinhalten Warengruppen von bis
und saison ist die nächste Bediungen - oder müssen alle dann mit .and. abgefragt werden ?
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Rolf,
was soll das "," vor saison? Es müssen alle Bedingungen mit .and. (oder .or., je nachdem) verknüpft werden!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hallo Martin,

das mit dem "," stand so in der xbase Hilfe. Kommt hier .and. hin ?
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Yup! Oder .or. - je nachdem, was Du brauchst...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Rolf,
Thema Hilfe: da bist Du durcheinander gekommen! Das "," trennt die Filterbedingung als Codeblock von der optionalen Filterbedingung als Zeichenkette!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Dbsetfilter

Beitrag von Manfred »

Hi,

ich hänge mich mal wieder hinten dran.

Ich kann nichts finden, was mir im Moment weiterhilft, wenn ich einen Filter auf einen logischen und einen numerischen Wert kombiniert setzen will. Der numerische Wert ist klar, Str(wert,x,x). Wie sieht das nochmal aus mit dem logischen Wert? Wie muß der umgewandelt werden?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Dbsetfilter

Beitrag von Tom »

Hallo, Manfred.

Du musst nichts umwandeln:

SET FILTER to numwert = irgendwas .and. logischerwert

numwert ist ein numerischer Wert aus der Datenbank, logischerwert ein logisches Feld. Hier müsste ein "!" davorgesetzt werden, wenn .F. abgefragt werden soll. Mit DbSetFilter sähe das so aus:

DbSetFilter({||numwert = irgendwas .and. logischerwert})

Dadurch, dass Du klammern, verunden und verodern kannst, musst Du keine Umwandlungsoperationen durchführen (wie bei zusammengesetzten Indexen), sondern einfach nur wie in einer IF-Abfrage Ausdrücke bauen.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Dbsetfilter

Beitrag von Manfred »

Hi Tom,

nee, ich bin blöde. Statt .And. habe ich + genommen. :confused1: Vielleicht hätte ich zum Jahreswechsel doch mal so richtig einen heben sollen....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten