David: fehler nur warum?

WHILE ((Datensatz.Fields.Item("Loginname")<>LogName) Or (NOT Datensatz.EOF))

..

Datensatz.MoveNext()
WEND

----
was stimmt daran nicht? er meint syntaxfehler bei der bedinung nach while.. warum...was stimmt nicht?

mfg
David

  1. WHILE ((Datensatz.Fields.Item("Loginname")<>LogName) Or (NOT Datensatz.EOF))

    ..

    Datensatz.MoveNext()
    WEND


    was stimmt daran nicht? er meint syntaxfehler bei der bedinung nach while.. warum...was stimmt nicht?

    mfg
    David

    Hi,

    eventuell verkraftet die While-Schleife keine doppelten Bedingungen.

    Zumal mir auch der Sinn hinter dieser Schleife etwas unklar ist.

    Solange wie
    Datensatz.Fields.Item("Loginname") ungleich zu LogName ist und das Datensatzobjekt noch nicht das Ende erreicht hat;
    tue ....

    Datensatz.Fields.Item("Loginname") -> Datensatz("Loginname").Value
    (imho besser so, kürzer (auch unsignifikant schneller) und man bezieht sich definitiv auf den Wert des Fields und nicht auf das Field-Objekt)

    vorallem die erste Bedingung macht wenig sinn, du fragst ja ab, ob Datensätze mit einem bestimmten Wert für Loginnamen existieren, entweder es existieren welche (im Normalfall nur einer, denn der Loginname sollte schon eindeutig sein) -> (.eof = FALSE) oder nicht (.eof = True)
    wie wäre es mit:

    set rs = dbconn.execute(sql_stmt)
    IF not rs.EOF THEN
      '// dann wurde ein Eintrag mit dem Loginnamen gefunden

    ELSE
      '// es gibt keinen solchen Loginnamen
    END IF

    Gruß, Frank

    P.S. bitte beachte auch das Thema SQL-Injection, ein ziemliches Sicherheits-Kuckucksei, was sich Programmierer da ins Nest legen können...