Seite 1 von 1

Sinn/Zweck einer Funktion

Verfasst: Do, 07. Apr 2016 14:53
von Wonderer
Hallo,

im mir vorliegenden Code habe ich eine Funktion gefunden die einen interessanten Namen hat und aus der ich aber trotz Kürze nicht schlau werde.

Vielleicht hat jemand eine Idee wofür das gut sein soll?

Code: Alles auswählen

*****************
function Fpos_bug
*****************
local Mrel:=DbRSelect(1),;
      Mselect

if Mrel#0
 Mselect:=select()
 select (Mrel)
 if .not. eof()
  DbGoto( recno())
 endif
 select (Mselect)
endif
return (NIL)
Das mit den Relations im XBase muss ich mir noch anschauen, habe ich gerade gestern das erste mal davon gelesen.

Re: Sinn/Zweck einer Funktion

Verfasst: Do, 07. Apr 2016 15:10
von georg
Hallo,


wahrscheinlich wird mit der Funktion ein Positionierungsbug (möglicherweise auch nur aus der Sicht des Programmierers) behoben.

Möglicherweise soll hier der Datensatz in der abhängigen Datei aktualisiert werden, was in einem Netzwerkumfeld nicht automatisch passiert, wenn an einem anderen PC Änderungen vorgenommen werden.

Durch das Positionieren auf den gleichen Satz werden die Feldinhalte neu aus der Datei gelesen. Ohne die Positionierung werden die Feldinhalte aus dem (möglicherweise) veralteten Puffer gelesen.

Re: Sinn/Zweck einer Funktion

Verfasst: Do, 07. Apr 2016 15:54
von Herbert
Falls in area(1) eine tabelle geöffnet wird, wird dort der bereits aktuelle Datensatz nochmals gelesen.
Wie Georg vermutet, war vielleicht einmal ein Problem mit der Positionierung, das mir allerdings nicht bekannt ist.

Re: Sinn/Zweck einer Funktion

Verfasst: Do, 07. Apr 2016 16:04
von brandelh
da von BUG und REL die Rede ist betrifft es wohl den Bug in der RELEATION, der in 1.80 oder 1.82 enthalten war.
Die 1.90.331 hat den nicht mehr.

Auch ich war damals davon betroffen ...

1. Hauptsatz, wird angesprungen und angezeigt.
2. In der abhängigen Datei sind z.B. 3 Sätze zu diesem enthalten.
3. Der Anwender blättert zum 2. oder 3. ... und will nun Daten ändern (auf dem Monitor sind Daten aus dem Hauptsatz und dem abhängigen ...
4. Das Programm sperrt den Haupt und den gewählten Kinddatensatz und schreibt die Änderungen weg ...

leider hat aber der RLOCK() des Hauptsatzes, ein automatisches dbSeek() des Kindsatzes durchgeführt ...

und die Kinddaten wurden in den ersten statt dem richtigen geschrieben ...

Re: Sinn/Zweck einer Funktion

Verfasst: Fr, 08. Apr 2016 9:43
von Wonderer
danke!

@Hubert Ok, ich glaube das habe ich verstanden :)