Durch Datensätze durchblättern
Stefan
- asp.net
0 Philipp Hasenfratz0 Frank (no reg)
Hallo!
ich möchte gerne per Sql auf Knopfdruck durch mein recordset durchblättern. Meine normale abfrage lautet sql="select blabla from blabla where Nummer=20"
So wenn ich beim vorwärtsblättern nun das Feld wieder auslese in dem die Nummer 20 steht und einfach ein +1 hinhänge funktiuoniert das auch bis einmal ein Datenstz fehlt. Dann springt er nicht zum nächsten, sondern bring den Fehler Datensatz nicht vorhanden. Wie könnte eine gute SQL Abfrage aussehen? Hilfe!
Halihallo Stefan
ich möchte gerne per Sql auf Knopfdruck durch mein recordset durchblättern. Meine normale abfrage lautet sql="select blabla from blabla where Nummer=20"
Für welche Datenbank? - Verwendest du ADO für die DB-Anbindung?
Viele Grüsse
Philipp
Hallo Philipp!
Ja ich benutze ADO für die DB-Anbindung. Datenbank ist leider Access
Hallo Stefan,
leider kann ich dir nicht helfen, aber ich würde die Lösung auch gerne wissen!
yo,
Ja ich benutze ADO für die DB-Anbindung. Datenbank ist leider Access
bei mysql geht das über das LIMIT konstrukt. die abfrage ist so gestalltet, dass am ende die LIMIT klausel steht und deren anfangspunkt variabel ist und Anzahl angibt, wieviele datensätze auf einmal angezeigt werden sollen. DIe SQL anweisung muss entsprechend so gestaltet werden, dass es alle gewünschten Datensätze erfasst.
LIMIT $Variabler_Wert, Anzahl
ob access das limit in gleicher form untersützt, kann ich leider nicht sagen, aber vielleicht gibt es etwas ähnliches.
Ilja
yo,
habe noch vergessen anzumerken, falls access nicht die limit klausel unterstützt, kann man es auch mit zwei abfragen (oder einer Unterabfrage) lösen. die erste dient dazu, die nächstmögliche ID herauszubekommen, zum beispiel so, wobei $id die id der letzten seite ist, die von script zu script übergeben werden muss.
SELECT MIN(ID) from tabelle WHERE id > $id
Ilja
Keine Ahnung warum, aber bei mir funzt es nicht?
yo,
Keine Ahnung warum, aber bei mir funzt es nicht?
wie gesagt, Limit muss nicht von Access untersützt werden. aber was genau geht denn nicht, bzw. gibt es fehlermeldungen ?
Ilja
Immer irgendwelche syntaxfehler
was genau geht denn nicht, bzw. gibt es fehlermeldungen ?
yo,
Immer irgendwelche syntaxfehler
zeigt doch mal dein sql statement und die fehlermeldung dazu ....
Ilja
zeigt doch mal dein sql statement und die fehlermeldung dazu ....
Also dieses Steatement funzt, aber nur solange logischerweise keine Nummer fehlt:
sql=
"select * from patente1 where Nummer LIKE '"&Request("hNummer")&"'+1"
So bei allen (guten) Tipps ist entweder ein syntaxfehler gekommen, oder folgendes:
ADODB.Recordset (0x800A0E78)
Operation is not allowed when the object is closed.
Dies kommt glaube ich wegen dem > Zeichen.
Halihallo Stefan
Also dieses Steatement funzt, aber nur solange logischerweise keine Nummer fehlt:
sql=
"select * from patente1 where Nummer LIKE '"&Request("hNummer")&"'+1"
[pref:t=76673&m=442207]
SELECT TOP 1 *
FROM patente1
WHERE Nummer>"&Request(hNummer)&"
ORDER BY Nummer ASC
Viele Grüsse
Philipp
Hört sich logisch an, aber bei mir kommt dieser Fehler:
Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'Nummer>'
Halihallo Stefan
Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'Nummer>'
Ich glaube du solltest einfach beginnen deine Fehler selber zu lösen.
Denn diese Fehler lassen sich durch einiges Testen und Dokulesen
selber lösen (die ursprüngliche Frage zwar auch, aber dort kann ich
verstehen, dass man am Anfang einen "Denkansatz" braucht).
Viele Grüsse
Philipp
Ich glaube du solltest einfach beginnen deine Fehler selber zu
Naja, auch eine Art zu sagen ich kann es selber nicht.
Trotzdem Danke für den Versuch.
Halihallo Stefan
Ich glaube du solltest einfach beginnen deine Fehler selber zu
Naja, auch eine Art zu sagen ich kann es selber nicht.
Falsch. Ich kann noch vieles, was ich nicht weiss, denn das einzige
was ich können muss ist lesen, logisch ausschliessen und testen.
Genau dazu möchte ich dich auch auffordern. Es stimmt, dass ich auf
diese Frage grad keine Antwort parat hatte, aber man dürfte schnell
auf die Lösung kommen; zwischen Eigenname und Operand ein Leer-
schlag zu platzieren. Man muss nur wollen; was mich stört ist, dass
es viele gibt die eben nicht lösen wollen, sondern gleich ins Forum
stürmen.
Viele Grüsse
Philipp
Hallo Philipp!
Sorry für meine plumpe Aussage, aber ich war so genervt von dieser ganzen ASP SQL VBscript schei.e, da ich an diesen Problem nicht mehere Stunden, sondern mehrere Tage gessensen habe. Nun seis drum, letztlich habe ich das Problem gelöst und bin u.a. auch dir sehr sehr dankbar.
Gruß Stefan
Naja, wenn du oder irgendjemmand noch eine gute Idee habt, dann postet sie. Ich wäre sehr dankbar.
Halihallo Stefan
Ja ich benutze ADO für die DB-Anbindung. Datenbank ist leider Access
Entweder du benutzt einen geeigneten CursorType und bewegst mit
Hilfe des Cursors über die Datensätze, oder du verwendest die in
</archiv/2004/2/71916/#m414112>
beschriebene Möglichkeit, welche IMHO auch auf Access funktioniert.
Bezgl. des Cursors:
http://www.activeserverpages.ru/ADO/dadobj01_6.htm
verwende z.B. den Keyset, Dynamic oder Static Cursor. Alle diese
können zwischen den verschiedenen Datensätzen innerhalb des
RecordSets "herumspringen". Es besteht sogar die Möglichkeit eine
fixe PageSize einzugeben und über AbsolutePage die geforderte zu
selektieren.
Viele Grüsse
Philipp
Hi,
=============================================
lastID = 20 '// via POST oder GET übergeben
objRS_sql = "SELECT * FROM tabelle1
WHERE ID =
(SELECT MIN(ID) FROM tabelle1
WHERE ID > " & lastID & ")"
....
den Rest solltest du ja kennen.
Auf jeden Fall auch eine Lösung.
Gruß, Frank
PS: das SQL Statement ist zwecks der Übersichtlichkeit auf
mehrere Zeilen verteilt