DbGoto()

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

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

DbGoto()

Beitrag von Manfred »

Hi Leute,

irgendwie verstehe ich die Welt nicht mehr. Ich hatte in einem Code folgendes stehen gehabt:

Code: Alles auswählen

dbgotop()
dbgoto(nummer)
ich dachte noch so bei mir, was soll der Quatsch? Also habe ich DbGotop() entfernt. Nachdem ich aber dann wie ein Döppken einen Fehler gesucht habe, ist mir aufgefallen, das das Dbgotop() davor anscheinend wichtig ist, wenn die aktuelle Recno größer ist, als die, zu der gegangen werden soll. Da ich das nicht so richtig glauben konnte, habe ich DbGotop() wieder eingebaut und danach klappte es wieder. Jetzt stellt sich mir die Frage: hat jemand von euch auch schon so eine Erfahrung gemacht? Ich dachte immer egal wo man steht, DbGoto() springt immer zur gewünschten Stelle.
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
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DbGoto()

Beitrag von Wolfgang Ciriack »

Ich dachte immer egal wo man steht, DbGoto() springt immer zur gewünschten Stelle.
Ja, so isses.
Viele Grüße
Wolfgang
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: DbGoto()

Beitrag von Tom »

Ich dachte immer egal wo man steht, DbGoto() springt immer zur gewünschten Stelle.
Tatsächlich kenne ich das von Dir skizzierte Szenario mit der ADSDBE und aktivem (nativem) Filter, also SET FILTER TO oder DbSetFilter(). In dieser Situation musste ich häufiger feststellen, dass ein DbGoto(nRecno) keinen tatsächlichen Sprung zum Datensatz auslöste, wenn direkt zuvor ein Filter gesetzt oder verändert wurde. Erst mit einem DbGoTop() zuvor ging es. Mit den anderen Engines kenne ich dieses Verhalten allerdings nicht.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DbGoto()

Beitrag von brandelh »

Laut Dokumentation ...
"Hinweis: DbGoto(RecNo()) bewirkt das Zurückschreiben der Dateipuffer in die zugehörigen Dateien in der Workarea.
Bei einer Mehrplatzanwendung im Netzwerk werden dadurch geänderte Daten für andere Workstations sichtbar. "
Aber was noch wichtiger ist (für die anderen PCs erledigt das doch schon unlock ...) der eigene PC wird gezwungen die Daten neu einzulesen, weshalb man die Änderungen anderer sieht.
Früher habe ich dazu dbSkip(0) verwendet ...

Leider scheint ab und zu dennoch ein "Buffer" bzw. eine "Optimierung" das sofortige Einlesen zu verhindern.
Ein vorgelagertes dbGoTop() oder dbGoBottom() erzwingt eine tatsächliche Bewegung und daher auf jeden Fall neu eingelesene Daten (und mehr Arbeit für die Festplatte) ... :roll:
Gruß
Hubert
Antworten