Scope + Filter EOF() [ERLEDIGT]
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21216
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Scope + Filter EOF() [ERLEDIGT]
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!!
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: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: Scope + Filter EOF()
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.
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
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21216
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Scope + Filter EOF()
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!!
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!!
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Scope + Filter EOF() [ERLEDIGT]
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()
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
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: Scope + Filter EOF() [ERLEDIGT]
Wenn Du einen Filterausdruck hast, nach dem Du eine Indexsuche ausführen kannst, brauchst Du keinen Filter.
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Scope + Filter EOF() [ERLEDIGT]
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
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
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()
aber du hast natürlich Recht das ohne "Bewegung" des Pointer der FILTER nicht aktiv werden kann
gruss by OHR
Jimmy
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: Scope + Filter EOF() [ERLEDIGT]
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.
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
Tom