Avatar billede idiotbarn Nybegynder
27. maj 2001 - 21:23 Der er 18 kommentarer og
2 løsninger

Count

Ok, jeg skal ha asp til at tælle hvor mange forskellige kategorier der er i min database, hvordan gør man det? Det skal være forskellige.....
Avatar billede egede Nybegynder
27. maj 2001 - 21:25 #1
Sætter et loop til at loope indtil der ikke er flere kategorier, 2 sek. så laver jeg et eksempel.
Avatar billede stigc Nybegynder
27. maj 2001 - 21:26 #2
de ligger vel i en tabel eller hvad?

SLECET DISTINCT count(katgories) FROM table
Avatar billede egede Nybegynder
27. maj 2001 - 21:28 #3
sådan noget lignende:

<%
kategori = \"0\"

Do
  kategori = kategori + 1

  \' Gå til næste Record i rs
  rs.MoveNext

\' Fortsæt indtil rs er gennemløbet

Loop While Not rs.EOF

Response.Write kategori
%>
Avatar billede stigc Nybegynder
27. maj 2001 - 21:29 #4
SELECT DISTINCT count(katgories) FROM table


ser denne her udemærket side:
http://www.w3schools.com/sql/sql_count.asp

Avatar billede egede Nybegynder
27. maj 2001 - 21:32 #5
anbefaler stigc\'s metode...
Avatar billede idiotbarn Nybegynder
27. maj 2001 - 22:23 #6
Hvordan får jeg den til at udskrive tallet?
Jeg har prøvet:

Dist = \"SELECT DISTINCT Count(Kategori)AS Antal FROM Jokes\"
Set rs = Conn.Execute(Dist)
Response.Write rs(\"Antal\")
Men der får jeg 97, jeg har ikke 97 af noget i den database(?)
Avatar billede idiotbarn Nybegynder
27. maj 2001 - 22:24 #7
Jeg skal bruge tallet i en variabel, da jeg skal bruge den til at regne med...
Avatar billede stigc Nybegynder
27. maj 2001 - 22:39 #8
det må du jo have, for du bruger den helt rigtig.
Avatar billede mwittrock Nybegynder
28. maj 2001 - 00:02 #9
idiotbarn, har du ikke kategorierne i en tabel for sig? I så fald er det

SELECT COUNT(*) AS Antal FROM kategori_tabel

Den foreslåede SELECT sætning:

SELECT DISTINCT Count(Kategori)AS Antal FROM Jokes

giver ikke mening. Den korrekte syntax er

SELECT COUNT(DISTINCT Kategori) AS Antal FROM Jokes

men Access understøtter ikke COUNT(DISTINCT)...



SELECT COUNT(
Avatar billede mwittrock Nybegynder
28. maj 2001 - 00:04 #10
Ignorér den sidste linje...
Avatar billede stigc Nybegynder
28. maj 2001 - 00:35 #11
mwittrock  >>

ifølge http://www.w3schools.com/sql/sql_count.asp giver det da mening, men det kan godt være at Access ikke understøtter det.


Avatar billede stigc Nybegynder
28. maj 2001 - 00:37 #12
det lille hack burde kunne gøre det nu når Access ikke kan:

SELECT count(jokeid) from joke where jokeid IN (select max(jokeid) from joke group by kategories)


Men det må kunne gøres nemmere. :)
Avatar billede mwittrock Nybegynder
28. maj 2001 - 01:15 #13
-> stigc:

Det er noget vrøvl, der står på den side (husk at ikke alt man læser på nettet, er korrekt ;-). Tænk på hvad SELECT DISTINCT gør... SELECT DISTINCT fjerner identiske rækker fra resultatet, men SELECT COUNT(kolonne) returnerer kun én række, så det giver ingen mening at tale om identiske rækker.

(Jeg har mailet til dem om fejlen)

Det bedste bud i Access må stadig være at tælle samtlige rækker i den tabel, der indeholder kategorierne (antager, at sådan en tabel eksisterer).
Avatar billede stigc Nybegynder
28. maj 2001 - 01:25 #14
hvis vi antager det du siger til aller sidst så havde mit bud da selvfølgelig også været uden DISTINCT, men som jeg ser det hedder tabellen JOKES, og der ligger en masse jokes med en tilhørende kategori, hvor flere kan have den samme. Nu skal vi hav fundet ud af hvor mange forskellige der er.

mit sidte bud burde gøre det:

SELECT count(jokeid) from joke where jokeid IN (select max(jokeid) from joke group by kategories)


Avatar billede mwittrock Nybegynder
28. maj 2001 - 01:47 #15
Det jeg siger er, at hvis databasen er rimeligt opbygget, så findes der en tabel, der indeholder samtlige kategorier OG en tabel der indeholder samtlige vittigheder. I så fald vil

SELECT COUNT(*) AS Antal FROM Kategorier

give det rigtige resultat.

Godnat :)
Avatar billede isl19960 Nybegynder
28. maj 2001 - 10:42 #16
Kunne man ikke - hvis man alligevel skal bruge alle kategorierne senere på siden - lave en alm. forspørgsel og derefter bruge <%=RS.RecordCount%> til at få antallet.

Jeg har brugt denne metode før - og det virker...

Det kan også være at jeg har misforstået noget - er ikke en haj til ASP :-)
Avatar billede idiotbarn Nybegynder
01. juni 2001 - 19:34 #17
isl19960--> hvordan bruger du =RS.RecordCount, gider du ikke lave et eksempel, og Stinc det må du også meget gerne gøre med:
SELECT count(jokeid) from joke where jokeid IN (select max(jokeid) from joke group by kategories)
Avatar billede isl19960 Nybegynder
02. juni 2001 - 11:21 #18
Det kan du tro jeg vil - her er det...

Dim objConn, strConn, objRS, strQ

\'Connection oprettes til databasen
set objConn = Server.CreateObject(\"ADODB.Connection\")
strConn = \"DSN=adresser;database=adresser;UID=;PWD=;\"
objConn.Open strConn

\'Recordset oprettes til objConn
Set objRS = server.CreateObject(\"ADODB.Recordset\")
set objRS.ActiveConnection = objConn

\'streng til SQL-forespørgsel bygges op
strQ = \"SELECT * from ADRESSER\"

\'Recordset fyldes med data
objRS.CursorType = adOpenStatic
objRS.open strQ
%>
<html>
<body>
<center><b><%=objRS.RecordCount%> adresser findes i databasen nu<b></center>
</body>
</html>

Det er vigtigt at du husker følgende linie:

objRS.CursorType = adOpenStatic

... ellers virker det ikke (jeg sad selv og svedte over det et stykke tid)
Avatar billede isl19960 Nybegynder
02. juni 2001 - 11:22 #19
Hov - der mangler vist et <% i starten :-)
Avatar billede isl19960 Nybegynder
02. juni 2001 - 11:31 #20
Nu går det da helt galt :-)

Mangler seføli også
<!--#include file=\"adovbs.inc\"-->
udenfor <% %> helt øverst.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester