SQL commando resultaat aanroepen in ASP

Pagina: 1
Acties:

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Lo,

Ik had weer eens een klein vraagje.

Ik heb hieronder een simpele code hoe ik het aantal record in een tabel kan tellen.
Mijn vraag is nu, hoe roep ik het gewenste resultaat aan, aangezien ik niet naar een specifiek veld vraag. Is hiervoor dus een standaard ASP variabele :?

code:
1
2
3
4
Set rsProducten = Server.CreateObject ("ADODB.Recordset")
rsProducten.ActiveConnection = dbCon
sqlStringCount = " SELECT Count(*) FROM Product "
Set rsProducten = dbCon.Execute (sqlStringCount)


response.write rsProducten("veldnaam") werkt bijvoorbeeld niet (ja je moet toch wat proberen).
Ik weet dat ik van recordcount gebruik kan maken, maar ik wil liever met SQL werken en geen Access commando's gebruiken.
Ook heb ik gezocht op internet, maar zonder resultaat. De eerlijkheid gebied me wel te zeggen dat ik ook niet precies wist hoe ik mijn zoekactie moest omschrijven.

Verwijderd

Probeer eens:

Response.Write( rsProducten(0) )

Wat dan dus eerste veld met index 0 zou moeten teruggeven. :)

[ Voor 0% gewijzigd door Verwijderd op 22-10-2002 22:02 . Reden: was zo kort ;-) ]


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Verwijderd schreef op 22 oktober 2002 @ 21:58:
Response.Write(rsProducten(0)) ?
Kijk dat was simpel :|, maar kwam er echt niet uit.

Hartelijk dank :)

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Als je het netjes wilt doen, doe je het natuurlijk volledig:
Response.Write rsProducten.Fields(0).Value

Dan weet je later ook wat je daar aan het writen bent, als je het over een half jaar terugleet ofzo.

日本!🎌


Verwijderd

Je hebt gelijk. Het gebruiken van default methods/properties van objecten is not really the way to go. |:(

[edit]:

iets mooier (en mogelijk sneller) zou het dan natuurlijk zijn om ipv:

ASP:
1
sqlStringCount = " SELECT Count(*) FROM Product "

neer te zetten:

ASP:
1
sqlStringCount = " SELECT Count(<primary_key_veld>) FROM Product "

en dan daarna ook nog te refereren naar het veld met die naam;

ASP:
1
Response.Write(rsProducten.Fields(<primary_key_veld>).Value)

en niet met index 0;

ASP:
1
Response.Write(rsProducten.Fields(0).Value)


_/-\o_

[ Voor 0% gewijzigd door Verwijderd op 23-10-2002 00:26 . Reden: puntje i ]


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

ASP:
1
2
3
4
sqlStringCount = " SELECT Count(*) AS bla FROM Product "
Set rsProducten = dbCon.Execute (sqlStringCount)

Response.write rsProducten("bla")


edit:
btw. het aanmaken van een recordset-object, Set rsProducten = Server.CreateObject ("ADODB.Recordset"), is niet nodig.
De dbConn.Execute() retourneert een recordset-object.

Today's subliminal thought is:


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

repelsteel: nee, iets van "SELECT COUNT(ID) FROM Tabel" geeft één veld terug, maar zonder naam. Probeer maar in de Query Analyser. Ik heb trouwens niet geprobeert wat dan de naam van zo'n veld is wanneer je het met ADO opvraagt...

En het is wel degelijk sneller om de index dan de naam van een veld te gebruiken als referentie. Immers, bij de naam moet eerst de index opgezocht worden waar die naam bij hoort. Het is alleen makkelijker en minder foutgevoelig om de naam als referentie te gebruiken.

日本!🎌


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Verwijderd schreef op 23 oktober 2002 @ 00:17:
iets mooier (en mogelijk sneller) zou het dan natuurlijk zijn om ipv:

ASP:
1
sqlStringCount = " SELECT Count(*) FROM Product "

neer te zetten:

ASP:
1
sqlStringCount = " SELECT Count(<primary_key_veld>) FROM Product "
Het is niet mooier en zeker niet sneller. COUNT (*) telt het aantal records op basis van een geschikte index en dat is vaak de PK. COUNT (PK) wordt alleen gedwongen om de PK te gebruiken.
Als de optimizer slim genoeg is, weet ie dat de PK uniek is in deze query, maar anders moet ie ook nog een soort distinct doen om alleen de unieke te tellen.

Never underestimate the power of


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Als we toch gaan miereneuken over het statement wil ik er ook nog wel wat aan toevoegen :)..
code:
1
SELECT COUNT(*) AS totaal FROM Product

En je hebt vervolgens een prachtige omschrijvende kolomnaam die je uit je resultset kunt halen.

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


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 28-08 19:27

Crazy D

I think we should take a look.

owh leuk, mierenneuken ;)
Als we het toch over snelheid hebben, gebruik dan geen recordset.Fields("veldnaam").value, maar gebruik recordset.Collect("veldnaam"). .Collect is een hidden collectie (verschijnt niet in die intellisense lijst, en ik geloof dat ie niet eens in de help staat) maar hij bestaat wel en is sneller dan via de fields collection (en recordset("veld") gebruikt ook de fields collectie).

Exact expert nodig?


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

cameodski schreef op 23 oktober 2002 @ 12:47:
[...]

Het is niet mooier en zeker niet sneller.
En bovendien is COUNT(*) iets anders dan COUNT(kolom). In het laatste geval zullen NULL values afaik niet meegeteld worden (nu zal dat igv een PK niet zo veel voorkomen natuurlijk)
Janoz schreef op 23 oktober 2002 @ 12:50:
Als we toch gaan miereneuken over het statement wil ik er ook nog wel wat aan toevoegen :)..
ahum O-)

Today's subliminal thought is:


Verwijderd

Heerlijk vind ik dat mierenneuken :)
Daar valt altijd wat van te leren; Thanks ;) 8)
Pagina: 1