Ich habe folgendes Problem:
Ich bilde mir ein SQL-Statement mit JOINs, welches auch vom ADS extrem schnell ausgeführt werden kann.
Das Statement verknüpfe ich mit einem Browser. Mit Hilfe des Browsers kann der Anwender den Datensatzzeiger entsprechend positionieren.
Der Anwender kann dann auch Filterbedingungen setzen, so dass ich ein neues SQL-Statement bilde, welches das bisherige ersetzt.
Anschließend möchte ich automatisch den Datensatzzeiger wieder auf den vorherigen Datensatz positionieren (sofern dieser weiterhin zur Ergebnismenge des SQL-Statements gehört). Leider gelingt es mir nicht immer, dass die Positionierung innerhalb weniger 10tel-Sekunden erfolgt.
Wie macht man dies am besten?
- Vorher die Record-Nummer merken und anschließend wieder darauf Positionieren geht bei SQL-Statements nicht
Also merke ich mir eine eindeutige Id.
- der AdsLocate-Befehl wird beim ADS leider lokal ausgeführt, so dass es damit viel zu lang dauert
Also setze ich temporär einen Filter auf die Id, positionierte den Cursor mittels :GoTop() und lösche den Filter wieder.
Das funktioniert auch oft schnell. Aber manchmal eben leider nicht . Und das, obwohl es eigentlich einen Index über die Id gibt.
Gibt es vielleicht eine andere Lösungsmöglichkeit hierfür?
Uli
Datensatzzeiger bei SQL-Statement positionieren [ERLEDIGT]
Moderator: Moderatoren
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Datensatzzeiger bei SQL-Statement positionieren [ERLEDIGT]
Zuletzt geändert von UliTs am Mo, 12. Mai 2014 13:28, insgesamt 1-mal geändert.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- nightcrawler
- 1000 working lines a day
- Beiträge: 655
- Registriert: Di, 24. Apr 2012 16:33
- Wohnort: 72184 Weitingen
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 96 Mal
- Kontaktdaten:
Re: Datensatzzeiger bei SQL-Statement positionieren
Wenn es einen Index gibt, ist AdsSek das Schnellste. Von der Beschreibung her vermute ich aber eher, dass das Ergebnis einen statischen Cursor erzeugt. Dabei wird die Ergebnismenge nicht vollständig abgebildet, sondern erst, wenn die Records auch benötigt werden - zB durch ein Skip.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Datensatzzeiger bei SQL-Statement positionieren [ERLEDIG
Hallo Joachim,nightcrawler hat geschrieben:Wenn es einen Index gibt, ist AdsSek das Schnellste. Von der Beschreibung her vermute ich aber eher, dass das Ergebnis einen statischen Cursor erzeugt. Dabei wird die Ergebnismenge nicht vollständig abgebildet, sondern erst, wenn die Records auch benötigt werden - zB durch ein Skip.
danke für die schnelle Antwort. Ja, es ist in diesen Fällen ein statischer Cursor. Ich habe die Erfahrung gemacht, dass es bis ca. 20.000 Datensätze ausreichend schnell ist, danach wird es zu langsam...
Ich vermute, dass bei der Auswertung des Filters bei einem statischen Cursor dann alle Records vor Anwendung des Filters bestimmt werden.
Da gibt es keine andere Lösung, oder?
Ich helfe mir jetzt mit einem dynamischen Cursor. Ist auch nicht viel mehr Aufwand.
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück