Hoscha: do until .... loop

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

  1. 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

    1. 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

    2. 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

      1. 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

  2. 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