Hallo!
> ich habe eine Rankingliste �ber eine SQL-Abfrage
> welche mir z.B. 200 Zeilen ausgibt, das sind dann
> praktisch die Platzierungen 1-200.
>
> Nun suche ich innerhalb des Recordsets �ber Find
> nach einem bestimmten Eintrag.
Ist schon umst�ndlich, oder? W�re es nicht besser wenn direkt 21
Datens�tze ankommen?
> Jetzt m�chte ich die Ausgabe der Daten, bei 10 Zeilen
> vor dem gefundenen starten und bei 10 Zeilen nach
> dem gefundenen Beenden.
> Set objRecordset = Server.CreateObject("ADODB.Recordset")
> jrs.Open strSQLQuery, objeconnection , 3, 3
Warum Schreibrechte? Reicht adLockReadOnly nicht aus?
> jrs.find "stammid = " & idnr ' Eintrag innerhalb des Rankings suchen
> posdat = jrs.absoluteposition ' Position des Eintags
> if posdat - 10 < 0 then
> jrs.movefirst ' falls unter den ersten zehn
> else
> jrs.move (posdat - 10) ' Cursor auf 10 zur�ck setzen
Das bewegt den Cursor um 155 Zeilen nach vorne. ;-)
> End if
Da Du den Static-Cursor verwendest, kannst Du ja direkt mit
jrs.Move(-10)
Response.Write("<table><tr><td>" & _
jrs.GetString(2, 21, _
"</td><td>", _
"</td></tr><tr><td>", _
" ") & "</td></tr></table>")
arbeiten, also erst 10 zur�ck und dann 21 Zeilen ausgeben.
> Problem:
> Tja, der Cursor l�sst sich �ber move nicht setzen,
> bekomme immer -3 zur�ck.
Du bekommst EOF, weil Du ja �ber das Ende hinausschiest.
>
> Hat jemand nen Tip?
Ich w�rde den eigenen Datensatz suchen und dann die 10 davor und danach
mit union einbinden. Dann kannst Du sogar direkt den ForwardOnly-Cursor
verwenden.
Freundliche Gr��e
Joachim van de Bruck
| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp