DB-Ausgabe in Formular: Navigieren zw. Datensätzen

Folgendes Problem:
Ich habe mit ASP (VBScript) ein Datenbankausgabe programmiert.
Die Daten in eine Tabelle auszugeben funktioniert auch wunderbar.
Ziel ist jedoch ein Formular, in dem jeweils nur ein kompletter Datensatz angezeigt wird.
Das Anzeigen klappt auch noch. ABER: Was ich nicht hinkriege, ist die Navigation zwischen den Datensätzen: Nächster, Vorheriger, Erster und Letzter.
Ich habe es mit Recordset.MoveNext, Recordset.MoveLast usw. probiert. Doch MoveFirst ist das einzige, was dabei funktioniert.
In den anderen Fällen erhalte ich nur einen ADODB.Field-Error (80020009): Entweder EOF, BOF oder der aktuelle Datensatz wäre gelöscht, die Operation benötige einen aktuellen Datensatz.
Aber wie kann ich ihn dazu bringen, dass er weiß, welches der aktuelle Datensatz ist???

Bin dankbar für jeden Hinweis!

Jens

Ich nehme mal an, dass Du das Vorwärts, Zurück etc. mittels Formularbuttons machen willst.

Wenn Du nun wieder die Seite aufrufst (beispiel: showdb?nav=next) dann weiss ja der server nicht, wo du gerade bist…

Ich würde vorschlagen, dass Du in diesem Fall einfach die Datensatznummer als HIDDEN-Field in das Formular oder direkt in den Aufruf der Seite einbaust. Würde dann etwas so aussehen:

Dann wertest Du einfach den QueryString „dbnr“ aus und springst zum Eintrag dbnr+1…

So sollte es meiner Meinung nach gehen…

Besten Dank für deine Antwort! Ich bin dabei, deinen Tipp auf mein Programmkonstrukt anzupassen aber auf ein paar Verständnisprobleme gestoßen.

Und zwar würde ich es bei mir so formulieren:

Was ist nav=next? Sind beides Variablen oder ist next schon eine Anweisung zum nächsten Datensatz zu gehen? Und wie bringe ich da previous, first und last mit ins Spiel?
Und wie ermittelt man die nr_des_aktuellen_datensatzes? Geht das mit Recordset.AbsolutePage?
Und zu guter letzt: Wie springe ich zu einem bestimmten Datensatz?

Ich hoffe, das sind nicht zu viele Fragen auf einmal…:wink:

Thanx&Bye
Jens

Wenn du ein paar Stunden Geduld hast, dann mache ich mal ein Beispiel wie ich das mein… muss das aber auch zuerst schnell hacken, damit ich sehe obs wirklich stimmt…

Also stand by… :smile:

Termin: Heute Abend/Morgen Vormittag, ok ? /nt/
.

Termin: Heute Abend/Morgen Vormittag, ok!:smile:
nicht hetzen…:wink:

Sodele…ist zwar Mittag - aber fertig :smile:
Hi…

Also ich habe nach endlos langem fluchen endlich das Zeugs zum laufen gebracht. Ich glaub ich habe noch NIE in meinem Coder-Leben sowieviele Details vergessen bzw. übersehen (bei einem Kommentar in ASP das ’ vergessen z.B.)…

Aber lange Rede kurzer Sinn… IT WORKS !

http://www.spaceweb.ch/asp/db_navigation

Dort siehst Du ein lauffähiges Beispiel. Den Quellcode kannste auch dort downloaden :smile:

1 Like

Hallo Christian,
vielen herzlichen Dank!
Hab es gleich in mein Script eingepasst, bei mir funktioniert es aber nur zur Hälfte.
Anfang und Ende klappen.
Aber bei Zurueck geht er immer zum Datensatz 0 und bei Weiter bringt er beim ersten Klick den Satz 1 - okay - aber dann kommt er von dort nicht mehr weg… hhm… finde keine Lösung:frowning:
Bin jetzt leider nächste Woche nicht da, aber falls du eine Idee hast… wäre es sehr nett, wenn du dich meldest. Das Problem ist weiterhin akut.

Also, bis denn
Thanx&Bye
Jens

Aber bei Zurueck geht er immer zum Datensatz 0 und bei
Weiter bringt er beim ersten Klick den Satz 1 - okay -
aber dann kommt er von dort nicht mehr weg… hhm… finde
keine Lösung:frowning:

ojeoje…klingt fast so, als hätte ich dir den falschen code ins zip gepackt… ich schau mal nach…

Hmmm…ich hab mir schnell den Code angeschaut. Ist aber exakt der gleiche, wie der, den Du auf dem Web ausführen kannst.

Hast Du mal probiert MEIN asp-file bei dir zu starten ?
Dazu brauchst du ne DB mit dem System-DSN „lan_guest“, darin eine Tabelle mit dem Namen „Guestbook“ und dort wiederum zwei spalten mit „Name“ und „Datum“.

Mach das doch mal und sag mir ob es dann geht.

Zudem…machst Du das über ne Access-Datei oder per SQL-DB ? weil mir ist aufgefallen, dass man je nach Umgebung das ganze etwas anders machen muss - frag mich abe rnid wie oder wieso :smile:

P.S. Wenn Du den Code abgetippt hast, dann schau, ob wirklich ALLES so stimmt wie Du’s geschrieben hast. Zudem schau Dir auch den HTML-Code im unteren Teil an. Da übergebe ich noch HIDDEN-Felder, welche die Datensatznummer enthält…

Musst einfach wirklich den ganzen Code einbauen. Du kannst natürlich auch (testweise) die Angaben zu System-DSN, Tabelle und die zwei ausgelesenen Felder in der Tabelle an eine Deiner Datenbanken anpassen…

Ich hoffe es klappt !

Viele Grüsse & ein schönes Weekend

Christian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

WICHTIG… Anmerkung …WICHTIG
Bin heute wohl irgendwie nid so 100% da… :smile:

Mir ist beim lesen Deines Codes etwas aufgefallen. Aber dass zu erklären dauert recht lange. Also:

Wir haben 4 Formulare. Diese rufen immer dieselbe Datei mit verschiedenen QueryStrings auf:

I = index.asp?nav=WEITER
\>I = index.asp?nav=ENDE

Dabei wir in jedem Formular noch ein HIDDEN-FIELD mit dem Namen „dbnr“ übergeben, welches die Nr. des aktuellen Datensatzes enthält.

Also…nun das Problem.

Bei ANFANG wird folgendes ausgeführt: DB\_Nr = 0
Bei ZURUECK wird folgendes ausgeführt: DB\_Nr = DB\_Nr - 1
Bei WEITER wird folgendes ausgeführt: DB\_Nr = DB\_Nr + 1
Bei ENDE wird folgendes ausgeführt: DB\_Nr = Recordset.Recordcount

Nehmen wir mal an, wir übergeben das HIDDEN-Field „dbnr“ **NICHT**. Der Wert DB_Nr ist beim ausführen des Scriptes standartmässig nicht gesetzt, also 0 (null). Folgendes passiert:

ANFANG: DB\_Nr = 0
ZURUECK: DB\_Nr = 0 - 1 = -1
WEITER: DB\_Nr = 0 + 1 = 1
ENDE: DB\_Nr = Recordset.Recordcount = 99

Durch die Fehlerlkorrektur wird aus -1 dann schlussendlich 0 (null). Egal wie oft Du das script aufrufst, es passiert jedes Mal nur genau das, weil die Variable DB_Nr nicht übergeben wird.

Ich denke desshalb, das es mit fast 100% Sicherheit daran liegt, dass Du a) das HIDDEN-Field vergesen hast, b) den Wert im HIDDEN-Field nicht richig einträgst oder c) das HIDDEN-Field im Script nicht richtig ausliest.

Bei Fragen einfach Mail an mich, schaue am Weekend nicht hier vorbei, bin aber des öfteren online…

Viele Grüsse

Christian

1 Like

Guten Morgen…

Hats jetzt geklappt oder wie schauts aus ?

Gelöst!:smile:
Also, nun will ich’s auch nochmal hier posten:
Christian, ich danke dir recht herzlich - es funktioniert jetzt einwandfrei!
Hatte es ja letztens schon fast soweit, nur den Wald vor Bäumen nicht mehr gesehen…:wink:
In den Namen der Formular-Buttons stand ‚db_nr‘ und im Script ‚dbnr‘…

Thanx&Bye
Jens