[ASP]Te veel antwoorden voor recset.

Pagina: 1
Acties:

  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 15-09 21:06

BlackBurn

One Ring To Rule Them All

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%  
  Dim rsComment
  Set rsComment= cnDB.Execute("SELECT * FROM tbl_responses WHERE news_id="&Request.Querystring("id")&" ORDER BY id")
  While not rsComment.EOF 
  Set rsUsers= cnDB.Execute("SELECT gebruikersnaam, mailadres FROM tbl_users WHERE id="&rsComment("user_id"))
  Response.Write "<tr>" &VbCrLf
  Response.Write "<td bgcolor=""#000000""><font face=""Verdana, Arial, Helvetica, sans-serif"" color=""#FFFFFF""><i><font size=""2"">Placed by :"& rsUsers("Username") &"on "&rsComment("Date") &" </font></i></font></td>" &VbCrLf
  Response.Write "</tr>" &VbCrLf
  Response.Write "<tr>" &VbCrLf
  Response.Write "<td bgcolor=""#FFFFFF""><font color=""#000000"">"&rsComment("Message")&"</font></td>" &VbCrLf
  Response.Write "</tr>" &VbCrLf
  Response.Write "<tr>" &VbCrLf
  Response.Write "<td>&nbsp;</td>" &VbCrLf
  Response.Write "</tr>" &VbCrLf
  rsUsers.MoveNext
  Wend
%>

Ik zie het probleem wel, deze opdracht
code:
1
Set rsComment= cnDB.Execute("SELECT * FROM tbl_responses WHERE news_id="&Request.Querystring("id")&" ORDER BY id")

levert meer dan 1resultaat op en daarom weet deze opdracht niet welke die moet pakken of zie ik dat verkeerd |:(
code:
1
Set rsUsers= cnDB.Execute("SELECT gebruikersnaam, mailadres FROM tbl_users WHERE id="&rsComment("user_id"))

In ieder geval heb ik er nog geen oplossing voor, kan ook niet echt helder denken, maar dit wil ik nog even afmaken.

If it is broken, fix it. If it ain't broken, make it better!


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
wat doet hij niet dan?
imo lees hij alle records in en laat hij die zien.

  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 15-09 21:06

BlackBurn

One Ring To Rule Them All

Topicstarter
Dit geeft hij als foutmelding
code:
1
2
3
4
Soort fout:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access-stuurprogramma] Er zijn te weinig parameters. Het verwachte aantal is: 1.
/personal/news/news.asp, line 52

If it is broken, fix it. If it ain't broken, make it better!


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Je vergelijkt een integere waarde met een string in je eerste where.
code:
1
Set rsComment= cnDB.Execute("SELECT * FROM tbl_responses WHERE news_id= " & CInt(Request.Querystring("id")) & " ORDER BY id")

Klopt die ORDER BY trouwens wel?

Verwijderd

Op dinsdag 18 december 2001 23:20 schreef BlackBurn het volgende:
Dit geeft hij als foutmelding
code:
1
2
3
4
Soort fout:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access-stuurprogramma] Er zijn te weinig parameters. Het verwachte aantal is: 1.
/personal/news/news.asp, line 52
heel vaak betekend deze melding dat je een typfout of e.d hebt gemaakt in je veld naam... tenminste als ik die foutmelding had was het altijd zo iets

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 19:13

Crazy D

I think we should take a look.

Op woensdag 19 december 2001 08:46 schreef Dwergje het volgende:
heel vaak betekend deze melding dat je een typfout of e.d hebt gemaakt in je veld naam... tenminste als ik die foutmelding had was het altijd zo iets
Typefout in een veldnaam, of een waarde waarvan je denkt dat ie gevuld is is niet gevuld.
(en dan zal ik nog maar even niet zeggen dat het _nooit_ slim is om rechtstreeks via Request.QueryString een waarde in je query te proppen)

Exact expert nodig?


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 15-09 21:06

BlackBurn

One Ring To Rule Them All

Topicstarter
nog niet gelukt, helaas werkte ook geen van deze antwoorden ;(

Dus hopelijk ziet iemand het als nog, maar heb zelf ook nog niet veel tijd gehad om het nog een keer door te spitten |:( Heb het bovenste geprobeerd, veldnamen gecontroleerd, ook met variabelen geprobeerd en ook om met Cint de String naar een Integer te zetten, maar niks mocht baten :'(

In ider geval vast bedankt voor de tips!

If it is broken, fix it. If it ain't broken, make it better!


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Volgens mij mist er een rsComment.MoveNext, aangezien je nu steeds hetzelfde record loopt en zo nooit bij 't einde komt.

Kan je dit trouwens niet met een join voor elkaar krijgen?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16:30

Janoz

Moderator Devschuur®

!litemod

Ik zou trouwens ook nog maar eens wat SQL-cursusen doornemen.. Het ophalen van de comments en users zou je eigenlijk met 1 query moeten doen (En welke record set laat je nou doorlopen? .. de while conditie checked de comments, terwijl je telkens de volgende user neemt....)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Set rsComment= cnDB.Execute("SELECT tbl_responses.* , gebruikersnaam, mailadres FROM tbl_responses LEFT OUTER JOIN tbl_users ON tbl_users.id = tbl_responses.user_id WHERE news_id="&Request.Querystring("id")&" ORDER BY id")

While not rsComment.EOF

Response.Write "blah"
rs.Comment.MoveNext
Wend

Wat er fout ging was dat je geen movenext had voor rsComment, alleen voor rsUsers.

ps. ik ben het eens met Janoz... GA OP CURSUS!! :)
Pagina: 1