Scope + Filter EOF() [ERLEDIGT]

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
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

Scope + Filter EOF() [ERLEDIGT]

Beitrag von Manfred »

Ich setze einen Scope über eine DBF mit Index und dann noch einen Filter. Dann wird auch was gefunden. Sobald ich aber dann in der gefundenen menge auf das Ende springe mit Dbgobottom() komme ich nicht wieder zurück. Es wird immer eof() angezeigt. Wo mache ich den Denkfehler?
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: Scope + Filter EOF()

Beitrag von Tom »

Was heißt "Dann wird auch etwas gefunden" genau?

DbSetScope() bewegt den Datensatzzeiger auf den ersten gültigen Datensatz, aber DbSetFilter() macht das nicht. Wenn Du also beides nacheinander ausführst, ohne ein DbGotop() zu machen, bleibst Du auf dem ersten Datensatz, der dem Scope genügt, aber möglicherweise trifft der Filter nicht zu. Das wird erst bei der ersten Bewegung evaluiert. Wahrscheinlich also findet Dein Filter überhaupt keine Datensätze, und beim DbGoBottom() merkst Du das.
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: Scope + Filter EOF()

Beitrag von Manfred »

verdammt, ich hatte es geahnt, das ich auf jeden Fall das Gotop nach dem Filter vergessen hatte. Das war mal feste eingebrannt. Seit ich aber mit SQl viel mache, habe ich es vergessen. Werde mal sehen, ob es das war.
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
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Scope + Filter EOF() [ERLEDIGT]

Beitrag von AUGE_OHR »

hi Manfred,

ich setze einen FILTER erst nach einem SEEK mit dem "Inhalt" des (TOP) FILTER
damit stelle ich fest "ob" es überhaupt einen Treffer gibt und brauche dann auch kein GOTOP()
gruss by OHR
Jimmy
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: Scope + Filter EOF() [ERLEDIGT]

Beitrag von Tom »

Wenn Du einen Filterausdruck hast, nach dem Du eine Indexsuche ausführen kannst, brauchst Du keinen Filter.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Scope + Filter EOF() [ERLEDIGT]

Beitrag von AUGE_OHR »

hi Tom,

ich habe mich da falsch ausgedrückt denn das SEEK bezieht sich natürlich auf SCOPE und nicht FILTER
dabei enthält mein FILTER auch den Teil von SCOPE was früher notwendig war vor Sixdrive / SCOPE

Code: Alles auswählen

SEEK (cArtnr)
IF FOUND() 
   SET FILTER TO ARTNR = cArtnr and LAGER > 0
   BROWSE()
durch den "Skipper" wird der Pointer in den Bereich des FILTER "bewegt" wenn er den Bildschirm aufbaut

aber du hast natürlich Recht das ohne "Bewegung" des Pointer der FILTER nicht aktiv werden kann
gruss by OHR
Jimmy
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: Scope + Filter EOF() [ERLEDIGT]

Beitrag von Tom »

Hallo, Jimmy.

Verstehe, aber das ist vermutlich der problematischere Vorgang. Ein DbSetScope() führt ja implizit schon das Seek aus; man steht also anschließend bereits auf dem ersten Datensatz. Wenn man dann den Filter setzt und DbGotop() auslöst, müssen nur noch Datensätze evaluiert werden, die sowieso im Scope sind. Das ergänzt einander auf diese Weise auch fast perfekt: Mit dem Scope erst die Datenmenge reduzieren, mit dem Filter dann mehr oder weniger unscharf in dieser Teilmenge suchen.
Herzlich,
Tom
Antworten