Toon posts:

[ASP] Eén rij uit recordset halen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben nog niet lang bezig met asp, so don't shoot me :)

Op verschillende pagina's gebruik ik sql queries om een ganse hoop records uit de database te halen. Deze hou ik bij in een recordset.

strSql = "select l.id, l.text, l.url, l.name, i.description from tblLinks l, tblInfo i where l.id > 123"
Set rsLinks = Server.CreateObject("ADODB.Recordset")
rsLinks.Open strSql, strConn, adOpenForwardOnly, adLockReadOnly, adCmdText

(In de select haal ik wel meer velden uit tblLInks dan in het voorbeeldje hierboven)

Nu heb ik een functie geschreven die met de geselecteerde velden ui tblLinks (dus niet alle velden uit de select) van een rij een string opbouwt en teruggeeft.

do while not rsLinks.eof
showLink(rsLinks("id"))
response.write("<p>")
response.flush
rsLinks.moveNext
loop

Ik zit met een probleem om showLink uit te voeren. Deze functie heeft dus alle geselecteerde velden uit tblLinks nodig van het huidige record. Moet ik al deze velden apart als argument meegeven of bestaat er een meer elegante oplossing? De ganse recordset meegeven lijkt me ook niet echt aangewezen (velden uit tblInfo zijn bv niet nodig), aangezien dan alle records worden doorgegeven, of niet? Kan ik niet een record uit de ganse recordset halen en deze doorgeven? Of kan ik evt iets BYREF doorgeven? Bedankt!

  • gotcha
  • Registratie: Oktober 1999
  • Laatst online: 29-07 18:20
een enkel record uit een recordset meegeven is helaas nogal lastig/tamelijk onmogelijk met ADO. wat je kunt doen is de hele recordset passen (by reference, that is). voordat je hem passt moet je dan een bookmark definieren in de recordset wat je apart meepasst.
je functie kan dan aan de hand van het bookmark het juiste record weer terugvinden en uitlezen.
deze methode werkt wel, maar wil nog wel eens voor problemen zorgen.
tenzij het om heel veel velden gaat, zou ik dan ook alle benodigde velden als losse parameters meegeven aan de functie

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
code:
1
2
3
4
5
6
7
8
9
<%
  Dim arrRS
  arrRS = objRS.GetRows()
  Dim arrRij( UBound( arrRS, 1 ) )
  Dim i
  For i = 0 to Ubound( arrRS, 1 )
    arrRij(i) = arrRS( i, 0 (ofeenandererij) )
  Next
%>

Met GetRows() pak je de recordset en stopt hem geheel in een array. Daarna loop je door alle velden van 1 rij om deze rij in een nieuwe array te stoppen. Dan heb je dus een array met 1 rij die je door kan geven aan de functie.
Niet getest natuurlijk. :o