do until .... loop
Hoscha
- asp.net
Guten Morgen,
mein Skript iteriert durch ein Recordset hindurch.
Nun möchte diese Recordset-schleife einmal abbrechen, wenn er am Fileende angelangt ist und ebenfalls, wenn die Bedingung in der Schleife erfüllt ist:
do until rs.eof AND notexist <> 0
if rs("hpi_no") = rows(0) then
(...)
notexist=0
end if
rs.movenext
loop
So wie ich es im obigen Skript mit der Markierungsvariablen "notexist" gelöst habe, scheint es nicht zu klappen.
Vielen Dank voraus,
Holger
Korrektur:
do until rs.eof AND notexist=0
if rs("hpi_no") = rows(0) then
(...)
notexist=0
end if
rs.movenext
loop
So lautet mein Code, der jedoch auch nicht das tut.
Gruß, Hoscha
Hi,
do until rs.eof AND notexist=0
"iteriere so lange, bis schließlich sowohl das Ende der Datei erreicht ist als auch die Bedingung erfüllt ist".
Die Abbruchbedingung ist bei Dir dann "True" wenn _beide_ Bedingungen erfüllt sind. Das willst Du doch eigentlich nicht, oder ?
Wurde "notexist" vor der Schleife initialisiert ? "
Ciao
Hans-Peter
do until rs.eof AND notexist=0
if rs("hpi_no") = rows(0) then
(...)
notexist=0
end if
rs.movenext
loop
Ich kenne mich mit Visual Basic (ist es doch?) zwar nicht aus, aber in solch hinterhältigen Fällen ist es immer sinnvoll, am Anfang der Schleife die betreffenden Variablen auszugeben (hier: rs.eof und notexist), damit man wenigstens schonmal weiß, ob es an den Variablen oder an der Prüfung liegt.
In der do-Bedingung würde ich es mit ein paar freundlichen Klammern probieren.
Weiterhin fällt mir auf, daß Du notexist möglicherweise nicht initialisiert hast. In der obigen Schleife läuft das im Moment darauf hinaus, daß das Programm gar nicht in die Schleife reinlaufen kann, da nicht initialisierte Variablen in der Regel 0 oder false sind.
Und -nachdem ich die halbe Seite wahrscheinlich umsonst getippt habe- zu guter Letzt fällt mir auf, daß Du in der Bedingung den falschen Operator benutzt hast. Wenn die Schleife beim Dateiende und ebenfalls (wohlgemerkt: und _ebenfalls_, also bei einem von beiden, nicht bei beiden gleichzeitig) bei notexist=0 enden soll, dann brauchst Du ein OR und kein AND.
Vielleicht hilft's ja.
Gruß,
soenk.e
Hallo,
Danke für eure Tips.
Die Variable notexist wird zu Anfang des Codes mit dim initialisiert. Das war es also nicht.
Aber natürlich musste das AND durch ein OR ersetzt werden.
Danke,
Hoscha
Hi, hallo
do until rs.eof
if rs("hpi_no") = rows(0) then
(...)
» exit do
end if
rs.movenext
loop
wenn Bedingung erfüllt, verlasse die Schleife mit EXIT + schleifentyp, in deinem Fall: exit do
Tschau, tschüß,
Frank