Dbsetfilter() und DbEval()
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Dbsetfilter() und DbEval()
wenn man einen Dbsetfilter() macht, dann ist ein DbGotop() danach sehr angebracht, damit der Filter auch greift. Gilt das eigentlich auch für ein DbEval()? Das fängt doch immer automatscih am Anfang an und müßte doch dann ein internes DbGoTop() machen und ein zusätzliche DbGoTop() vorher überflüssig machen, oder?
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!!
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!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Dbsetfilter() und DbEval()
DbEval() wird immer für alle Datensätze der Workarea ausgeführt, berücksichtigt aber Filter und Scopes.
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Dbsetfilter() und DbEval()
das heißt, man muß kein Dbgotop() vorher setzen, wenn ein Filter vorher gesetzt wurde, weil DbEval das automatisch macht?
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!!
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!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Dbsetfilter() und DbEval()
So isses.
Und in der Zeit, in der Du diese Fragen stellst und auf ihre Antworten wartest, hättest Du das mit vier Zeilen Code ein Dutzend mal ausprobieren können. (Zudem steht es m.E. in der Doku, aber ich habe gerade keine griffbereit.)
Und in der Zeit, in der Du diese Fragen stellst und auf ihre Antworten wartest, hättest Du das mit vier Zeilen Code ein Dutzend mal ausprobieren können. (Zudem steht es m.E. in der Doku, aber ich habe gerade keine griffbereit.)
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Dbsetfilter() und DbEval()
Das hätte ich Tom, aber ich hätte auch meine Frage anders stellen können. Ich hatte mir das schon gedacht, aber ich wollte eigentlich wissen, ob jemand evtl. seine Erfahrung damit gesammelt hat und der meinung ist, das es nicht 100%ig klappt.
Aber mal so nebenbei gefragt, welcher Teufel reitet Dich eigentlich in letzter Zeit? Seit wann wird hier im Forum darauf geachtet, ob dumme Fragen gestellt werden? Das war bisher nie der Fall....
Aber mal so nebenbei gefragt, welcher Teufel reitet Dich eigentlich in letzter Zeit? Seit wann wird hier im Forum darauf geachtet, ob dumme Fragen gestellt werden? Das war bisher nie der Fall....
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!!
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!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Dbsetfilter() und DbEval()
Teufel? Nein. Wirke ich so unentspannt? Wenn ja - falscher Eindruck. Das Gegenteil ist der Fall.
Ich wollte nur mal darauf hinweisen, dass es manchmal einfacher und schneller ist, etwas auszuprobieren.
BTW: Beim Einsatz der ADS habe ich die Erfahrung gemacht, das ein DbGoto() bei aktivem Filter zuweilen fehlschlägt, wenn nicht vorher ein DbGoTop() stattgefunden hat. Dies nur am Rande.
Ich wollte nur mal darauf hinweisen, dass es manchmal einfacher und schneller ist, etwas auszuprobieren.
BTW: Beim Einsatz der ADS habe ich die Erfahrung gemacht, das ein DbGoto() bei aktivem Filter zuweilen fehlschlägt, wenn nicht vorher ein DbGoTop() stattgefunden hat. Dies nur am Rande.
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Dbsetfilter() und DbEval()
alles klar.
Mein Problem ist nämlich derzeit, das in diesem Zusammenhang ein Programm etwas komische Ergebnisse liefert und ich war mir nicht wirklich sicher, ob das nicht evtl. damit zusammenhängt. Deshalb meine etwas ungelenke Frage hier.
Mein Problem ist nämlich derzeit, das in diesem Zusammenhang ein Programm etwas komische Ergebnisse liefert und ich war mir nicht wirklich sicher, ob das nicht evtl. damit zusammenhängt. Deshalb meine etwas ungelenke Frage hier.
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!!
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!!
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2125
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Dbsetfilter() und DbEval()
Jein:
Siehe Parameter in fetter Schrift.DbEval( <bBlock>, ;
[<bForCondition>], ;
[<bWhileCondition>], ;
[<nCount>], ;
[<xRecordID>], ;
[<lRest>] ) --> NIL
Parameters
<bBlock>
<bBlock> contains a code block which is executed for each data record.
<bForCondition>
<bForCondition> is an optional code block containing a condition as a logical expression. <bBlock> is only executed for the data records where <bForCondition> returns the value .T. (true).
<bWhileCondition>
<bWhileCondition> is an optional code block containing a condition as a logical expression. DbEval() terminates as soon as <bWhileCondition> returns the value .F. (false).
<nCount>
The optional argument <nCount> specifies the number of records for which <bBlock> is evaluated beginning with the current data record.
<xRecordID>
The optional argument <xRecordID> specifies a record ID (for DBF files it is the record number). If <xRecordID> is specified, the evaluation of <bBlock> begins with the specified record.
<lRest>
The logical value <lRest> optionally specifies whether <bBlock> is evaluated for all records of a work area (<lRest>==.F.), or only for the records from the current to the last record (<lRest>==.T.). The default value is .F. (false), indicating that <bBlock> is evaluated for all data records.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Dbsetfilter() und DbEval()
die "komischen" Ergebnisse könnten auch was mit der "Optimierung" zu tun haben ...
gruss by OHR
Jimmy
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Dbsetfilter() und DbEval()
@Jimmy: Du immer mit Deinen Legenden. Das hat mit Sicherheit nichts mit dem Problem zu tun.
@Werner: Jein? Die Ausgabe dieses Testcodes erzeugt zweimal - wie von mir erwartet - die gleichen Ergebnisse. DbEval() kann an Filter und Scope der Workarea nicht vorbei. Du kannst nur noch weiter einschränken.
@Werner: Jein? Die Ausgabe dieses Testcodes erzeugt zweimal - wie von mir erwartet - die gleichen Ergebnisse. DbEval() kann an Filter und Scope der Workarea nicht vorbei. Du kannst nur noch weiter einschränken.
Code: Alles auswählen
FUNCTION Main()
LOCAL aStru := {{'NUMBER','N',5,0},{'LOGIC','L',1,0},{'TEST','C',30,0}}, nCtr
SET EXCLUSIVE ON
DbCreate('test',aStru)
USE test NEW
INDEX ON number TO test
FOR nCtr := 1 to 100
APPEND BLANK
REPLACE number WITH RecNo()
NEXT
DbSetScope(SCOPE_TOP,20)
DbSetFilter({||Int(number/2)==number/2})
DbEval({||FieldPut(2,.T.)})
DbGoTop()
CLEAR
DO WHILE !Eof()
?? Str(number,5,0)
DbSkip(1)
ENDDO
? Replicate('-',80)
DbClearFilter()
DbClearScope()
DbGoTop()
DO WHILE !Eof()
IF logic
?? Str(number,5,0)
ENDIF
DbSkip(1)
ENDDO
CLOSE DATA
RETURN NIL
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Dbsetfilter() und DbEval()
Ich rede von KEINEM Mythos sonst würde es nicht so viele PDRs geben !
immer wenn ich FILTER höre muss ich zunächst an die Xbase++ "Optimierung" denken.
besonders auffällig bei DBFNTX wenn Zeichen > 128 z.b München oder Nürnberg ...
nur weil Problem bei einem User nicht auftreten heisst es noch lange nicht das es bei einem anderen User, sogar auf dem selben PC, dann auftreten können
gruss by OHR
Jimmy
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Dbsetfilter() und DbEval()
Hi, Jimmy.
Ist schon richtig, aber dann würde es nicht nur an dieser Stelle Probleme geben. Manfred hat schon ziemlich komplexes Zeug am Start, und wenn er Optimize und Rushmore und all das aktiv hätte und (versehentlich) in riskanter Weise nutzen würde (also von den noch übrigen Fehlern betroffen wäre), würden wir über andere Probleme reden. Und größere und häufigere.
Bei dieser Gelegenheit abermals. Smartfilter funktioniert gut.
Ist schon richtig, aber dann würde es nicht nur an dieser Stelle Probleme geben. Manfred hat schon ziemlich komplexes Zeug am Start, und wenn er Optimize und Rushmore und all das aktiv hätte und (versehentlich) in riskanter Weise nutzen würde (also von den noch übrigen Fehlern betroffen wäre), würden wir über andere Probleme reden. Und größere und häufigere.
Bei dieser Gelegenheit abermals. Smartfilter funktioniert gut.
Herzlich,
Tom
Tom
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2125
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Dbsetfilter() und DbEval()
Alles gut. Mein Hinweis bezog sich auf die Möglichkeit der Einschränkung der zu verarbeitenden Datensätze. Das war ja auch die hauptsächliche Frage von Manfred. Deshalb auch mein Hinweis:
Siehe Parameter in fetter Schrift.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Dbsetfilter() und DbEval()
ok, da sind die 3 PDR geschlossen.
bei OPTIMIZE stehen aber noch einige als offen da
gruss by OHR
Jimmy
Jimmy