Seite 1 von 1

set order to in "Do While" Schleife [erledigt]

Verfasst: Do, 19. Jul 2018 18:53
von Wolfgang_B
Folgendes Problem.

ich habe 2 Tabellen geöffnet

use DDB1
index 1,2,3,4

use DB2
index 1,2,3

DO WHILE !EOF()

Hier werden Daten aus DB1 und DB2 verarbeitet
zur Prüfung eine Feldes muss ich auf einen Index z.B. DB1 index 3 zugreifen

Wie ist denn hier der Syntax für "SET ORDER TO .... " ?


DBSKIP()
ENDDO

Man könnte das bestimmt über SELECT() realisieren. Aber das geht doch bestimmt eleganter?

Re: set order to in "Do While" Schleife

Verfasst: Do, 19. Jul 2018 19:23
von Wolfgang Ciriack
Den Index solltest du schon vor der Schleife setzen.

Code: Alles auswählen

db1->(DbSetOrder(1))
do while !db2->(eof())
    if db1->(dbseek(wasauchimmer))
....
    endif
   db2->(dbskip())
enddo
Oder du suchst mit bei dbseek mit indexnummer

Code: Alles auswählen

db1->(dbseek(wasauchimmer,.F.,1))

Re: set order to in "Do While" Schleife

Verfasst: Do, 19. Jul 2018 23:08
von Wolfgang_B
Danke!

Re: set order to in "Do While" Schleife [erledigt]

Verfasst: Fr, 20. Jul 2018 6:10
von Jan
Ich habe mir vor einiger Zeit schon angewöhnt, bei einem DbSeek() grundsätzlich den dazugehörigen Index anzugeben. Dann muß ich mich nicht darüm kümmern, ob ich weiter oben irgendwann man den führenden Index ändere, womit das spätere Seek nicht mehr klappen würde. Und außerdem spare ich mit ein ständiges OrdSetFocus() hin-und-her, nur weil ich zwischendurch mal was auf einem anderen Index suchen will.

Jan

Re: set order to in "Do While" Schleife [erledigt]

Verfasst: Fr, 20. Jul 2018 13:40
von Wolfgang_B
hast recht. Gute Methode -> btw. wer die Hilfe lesen kann ist durchaus im Vorteil #-o

Re: set order to in "Do While" Schleife [erledigt]

Verfasst: Fr, 20. Jul 2018 14:21
von brandelh
Kann aber gefährlich werden, wenn man das vergisst und danach mit do while ! eof() ... durch die Datei skipped und die Reihenfolge nicht wie erwartet ausfällt ;-)

Re: set order to in "Do While" Schleife [erledigt]

Verfasst: Fr, 20. Jul 2018 15:05
von Jan
Hubert,

:-) Stimmt. In die Falle bin ichauch schon getappt. Da muß man natürlich aufpassen. Aber wenn man sich daran gewöhnt, den Index immer im DbSeek() einzubauen, dann ist auch ganz schnell die Gewohnheit da darauf zu achten, das man auch mal wirklich ein OrdSetFocus() machen muß. Das geht inzwischen schon ganz automatisch.

Jan