Classic ASP do while-Schleife zeigt Fehler
Habe ich eine klassische ASP-Seite mit einer einfachen html-Tabelle, und ich will eine Schleife die Zeilen der Tabelle, basierend auf eine unbekannte Zahl von Datensätzen aus der Datenbank abgerufen, aber wenn ich Schleife die Datensätze mit einer do/while-Schleife, erhalte ich eine Fehlermeldung, dass Entweder BOF oder EOF ist True. Ich möchte jede zweite Zeile der Tabelle, die Alternative hintergrund-Farben (die Farben habe ich in CSS).
<% do while not rsTest.eof %>
<tr class="odd">
<td colspan="5"><%=(rsTest.Fields.Item("field").Value)%></td>
</tr>
<% rsTest.moveNext
if not rsTest.eof then
count = count + 1 %>
<tr class="even">
<td colspan="5"><%=(rsTest.Fields.Item("field").Value)%></td>
</tr>
<% end if %>
<% count = count + 1
rsTest.moveNext
loop %>
Den Fehler, nach dem browser, passiert auf den letzten "rsRoster.moveNext" direkt vor der Schleife. Die Schleife keine Fehler aus, wenn eine gerade Anzahl der Datensätze aus der Datenbank abgerufen, aber es Fehler, wenn es eine ungerade Anzahl von Alben, die gezogen wird. Ich habe versucht einlegen ", wenn EOF dann nichts anderes ausführen code", aber die code-Kontrolle, wenn EOF scheint einfach immer ignoriert, wenn ich das tun. Irgendwelche Vorschläge würden geschätzt.
InformationsquelleAutor user2762748 | 2013-11-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß, ich bin rusty auf diesen einen, aber versuchen Sie dies:
Ich begann mit der oddFlag=1, was bedeutet, ich werde beginnen mit der ungeraden Zeile in diesem Fall. Also, wenn es ungerade Zeile wird es zeigen die ungeraden Klasse Zeile dann wiederum oddFlag zu 0, was bedeutet, dass in der nächsten Schleife wäre es für die sogar Reihe. So, auf der nächsten Schleife werden die Anzeige auch Zeile und drehen Sie dann den oddFlag zu 1, so dass die next-Schleife wäre für ungerade wieder. Und so weiter und so Fort.
InformationsquelleAutor Edper
Da die anderen Antworten gar nicht erwähnt: das problem bei deinem code ist, dass du tust MoveNext zweimal, und das zweite nicht testen, wenn die erste bereits in der EOF.
In jedem Fall, das ist eine unnötig komplizierte Weise zu tun, abwechselnden Farben.
Mit dieser Methode die counter-variable (
i
) ist als eine tatsächliche, gut, Zähler - so zum Beispiel, wenn Sie schreiben wollen ein "Anzahl von Zeilen zurückgegeben" Meldung am Ende, können Sie.InformationsquelleAutor Martha
Bisschen schlampig hier, aber das ist, wie ich normalerweise zu erreichen:
Sie sind es nicht. ich Schritten von 1 auf 2 und dann zurück zu 1. Sie brauchen nicht zu wissen, wie viele Datensätze in der Datenbank.
InformationsquelleAutor HK1
Warum nicht einfach:
Oder um sicher zu gehen:
Und noch besserer Weg ist, um cache alles und halten Verbindung sehr kurz:
InformationsquelleAutor Plippie