Rolf B: ADO - ASP und Access - Datenbankeintrag mehrfach duplizieren

Beitrag lesen

Hallo supernewb,

du betreibst das doch nun schon eine ganze Weile, und bist immer noch so unbeholfen mit VBScript? Daran musst Du dringend arbeiten. Wie man Schleifen programmiert und Befehle voneinander abgrenzt, das ist absolutes Grundwissen. Kennst Du den ASP Teil von W3Schools?

  1. Eine FOR Schleife zählt den Zähler für Dich automatisch, da musst Du ihn nicht selbst zählen (wenn Du es doch tust, würde die Schleife in Zweierschritten springen).

  2. Eine DO Schleife prüft nur eine Bedingung, da hättest Du selbst zählen müssen. Eine DO Schleife, wo Du nicht selbst zählst, läuft endlos. Die FOR-Schleife ist für deinen Zweck die einfacherere Lösung.

  3. DO until i = Session("Eintraege") ist grundsätzlich richtig in VBScript. Der Einwand von Tabellenkalk, dass das wie eine Zuweisung aussähe und deswegen falsch wäre, gilt nur für Sprachen der C-Familie (wozu auch C#, Java und JavasSript gehören).

  4. Wenn in Session("Eintraege") die Anzahl von INSERTs steht, die ausgeführt werden sollen, dann darfst Du die FOR Schleife nicht bei 0 beginnen lassen. Beispielsweise lässt FOR i=0 TO 3 die Schleife für i=0, 1, 2, 3 laufen, also 4 Durchläufe. Du musst mit i=1 beginnen. VB hat 6 Schleifenvarianten, und man muss das Verhalten jeder einzelnen genau beachten, sonst hat man einen Durchlauf zu viel oder zu wenig.

  5. Der Steuerbefehl für eine Schleife und die Befehle in der Schleife sind zwei verschiedene Dinge, diese Befehle müssen voneinander getrennt werden. Das ist vermutlich der Syntaxfehler in

Dim i
DO until i = Session("Eintraege") "INSERT INTO ...." 
Loop

Entweder muss hinter dem Test ein Doppelpunkt kommen (neuer Befehl in der gleichen Zeile) oder der INSERT-Befehl muss in eine eigene Zeile.

  1. Du kannst nicht einfach einen SQL Befehl in Anführungszeichen notieren. Da musst Du, wie auch sonst, ein SQL-Statement erzeugen und ausführen. Aber ich nehme einfach mal an, dass Du Dir die Schreibarbeit sparen wolltest und nur das SQL notiert hast.

Rolf

--
sumpsi - posui - clusi