Seite 1 von 1

Feldinhalt Vers. 1.90.331

Verfasst: Sa, 25. Nov 2017 16:03
von saul
Hallo,
ich habe heute durch Zufall folgendes festgestellt:
Eine Datenbank besteht aus nur einem Datensatz mit 21 Feldern.
Im Programm 1 öffne ich diese Datenbank und lasse mir den Inhalt eines Feldes anzeigen.

Code: Alles auswählen

use flstand
do while .t.
	?lieferantz
	wait
enddo
Ändere ich nun das Feld lieferantz innerhalb eines 2. Programmes während das Programm 1 immer noch aktiv ist oder durch meinen Datenbank Editor VDBU, so wird mir immer der alte wert lieferantz angezeigt. Ändere ich den Code in

Code: Alles auswählen

use flstand
do while .t.
	go top
	?lieferantz
	wait
enddo
so wird mir jeweils der aktuellste Wert von lieferantz angezeigt.

Code: Alles auswählen

use flstand
go top
do while .t.
	?lieferantz
	wait
enddo
Der letzte Code zeigt den gleichen Fehler.

Wo habe ich da einen Fehler gemacht?

mfg
Wolfgang

Re: Feldinhalt Vers. 1.90.331

Verfasst: Sa, 25. Nov 2017 16:51
von matyschik
Hallo Wolfgang,

Versuch es doch mal mit

Code: Alles auswählen

DO WHILE .NOT. EOF()

Re: Feldinhalt Vers. 1.90.331

Verfasst: Sa, 25. Nov 2017 16:57
von Tom
Durch das DbGoTop() löst Du aus, dass der Datensatz neu eingelesen wird. Ähnliches kannst Du auch mit DbSkip(0) erreichen. Wenn keine Bewegung auf dem Satz erfolgt, bleibt weiterhin der Inhalt des Datenbankcaches gültig. Das Verhalten ist eigentlich in Ordnung. DbRefresh() könnte ebenfalls etwas bewirken, aber da bin ich nicht sicher - ich habe keine Doku hier.

Re: Feldinhalt Vers. 1.90.331

Verfasst: Sa, 25. Nov 2017 17:51
von saul
Hallo,
beide Lösungen haben leider nicht funktioniert. Wenn das Verhalten so o.K., habe aber jetzt eine kleine Funktion mit "go top" geschrieben und das Problem ist damit behoben.

Dank für die Info`s

mfg
Wolfgang