bin gestern auf ein Problem gestoßen, was ich mir nicht erklären kann.
Ich habe eine DBF Datei in der ich Werte aus einer Excel Tabelle eintragen muß.
Die DBF Datei wird von Anfang an gelesen und dann der entsprechende Eintrag in der Tabelle gesucht.
Beim Skip auf den nächsten Satz, wird aus Gründen die ich nicht nachvollziehen kann, der Satzzeiger
um 2 Sätze bewegt.
Habe dann den DBSKIP entfernt, um zu sehen was passiert. Das war dann eine Endlosschleife da
das Programm immer auf den ersten Satz stand.
Der Code hierzu:
Code: Alles auswählen
oApp:Application:Worksheets(2):activate() // Activate sheet
oSheet := oApp:Application:Worksheets(2) // Shortcut
// Put values into array
aValues := oSheet:UsedRange:value
nRow := 268
("mstamm")->(dbGoTop())
do while !("mstamm")->(eof())
for I:= 2 to nRow // 1. Zeile Ueberschrift
if rtrim(("mstamm")->kennung) == rtrim(aValues[i,149])
do while !("mstamm")->(dbrlock(RecNo()))
enddo
("mstamm")->knummer1 := aValues[i,16]
("mstamm")->knummer2 := aValues[i,15]
("mstamm")->knummer3 := aValues[i,15]
("mstamm")->telfax := rtrim(aValues[i,144])+rtrim(aValues[i,145])
("mstamm")->(dbskip(0))
("mstamm")->(dbrunlock(RecNo()))
exit
endif
next
msgbox(str(("mstamm")->(recno())))
("mstamm")->(dbskip(1))
enddo
gemacht wird. Ist bestimmt nicht die beste Lösung (für bessere kenne ich mich zu wenig aus).
("mstamm")->(dbGoTop())
("mstamm")->(dbskip(1))
do while !("mstamm")->(eof())
("mstamm")->(dbskip(-1))
for I:= 2 to nRow // 1. Zeile Ueberschrift
if rtrim(("mstamm")->kennung) == rtrim(aValues[i,149])
do while !("mstamm")->(dbrlock(RecNo()))
enddo
("mstamm")->knummer1 := aValues[i,16]
("mstamm")->knummer2 := aValues[i,15]
("mstamm")->knummer3 := aValues[i,15]
("mstamm")->telfax := rtrim(aValues[i,144])+rtrim(aValues[i,145])
("mstamm")->(dbskip(0))
("mstamm")->(dbrunlock(RecNo()))
exit
endif
next
msgbox(str(("mstamm")->(recno())))
("mstamm")->(dbskip(1))
enddo
Meine Frage ist jetzt nur, habe ich einen Gedankenfehler oder woher kommt dieses Problem ?