Avatar billede kbonline Nybegynder
23. februar 2003 - 22:51 Der er 9 kommentarer og
1 løsning

kan det gøres smartere ?

jeg skal have skrevet antal poster der er i en database (eller det sidste ID nummer)

Nu gør jeg sådan, men kan det gøres smartere ?

--
<%
antal=0
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("data.mdb")
Conn.Open DSN

' SQL forespørgsel
strSQL = "Select * from database"
' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)
%>

<%
' Gennemløb Recordset (rs) med en løkke
while not rs.eof
%>
<%
antal=antal+1
%>

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

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
wend

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
Avatar billede Jman Praktikant
23. februar 2003 - 22:56 #1
'databasekald:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("din-database.mdb")
SQL = "Select * from database"
set rscount = conn.execute("select count(id) as antal from databasen")
antal = rscount("antal")
set rscount = nothing
%>

'vis hvor mange poster der er:
<h1>Der er <%=antal%> poster i databasen</h1>
Avatar billede kaptajnkemo Nybegynder
23. februar 2003 - 23:00 #2
Du kan også bruge:

SELECT MAX(id) FROM table;

For at finde det højeste (sidste?) id.
Avatar billede kaptajnkemo Nybegynder
23. februar 2003 - 23:01 #3
forresten....

Du spørger om antal poster i databasen. Mener du i virkeligheden antal poster  i en tabel?

SELECT COUNT(something) virker kun på tabelniveau.
Avatar billede kbonline Nybegynder
23. februar 2003 - 23:02 #4
hvad kræver mindst resourcer og hvad er hurtigst ??
Avatar billede kaptajnkemo Nybegynder
23. februar 2003 - 23:05 #5
Er ikke helt med på hvad du mener.
hurtigst af hvad?
Avatar billede kbonline Nybegynder
23. februar 2003 - 23:07 #6
hvad er lettest og hurtigst at hente for asp filen
Avatar billede Jman Praktikant
23. februar 2003 - 23:13 #7
kaptajnemo - din ide går lidt i stykker, hvis der er blevet slettet en post i mellemtiden - I hvert fald hvis man skal tælle det samlede antal poster
Avatar billede kbonline Nybegynder
23. februar 2003 - 23:15 #8
ok - har prøvet, og finder superiors metode ganske brugbar

Tak for indsatsen :-)
Avatar billede kaptajnkemo Nybegynder
23. februar 2003 - 23:15 #9
SELECT COUNT(*) er lidt langsommere end SELECT COUNT(id) da databasen skal gennemløbe alle kollonner i alle poster, men tilgengæld er du sikker på at tælle ALLE poster med. Hvis du definerer at den kun skal tælle id, så tæller den kun de poster hvor der er udfyldt et id (hvilket principielt burde være alle poster).

Uanset hvad så er det meget meget teoretisk. Det som tager tiden i dit script vil være datatransmission mellem din klient og webserveren samt den tid det tager at køre resten af dit script. Med mindre du har flere tusinde poster vil du ikke mærke forskel.
Avatar billede kaptajnkemo Nybegynder
23. februar 2003 - 23:18 #10
superior> Ja, hvis der bliver slettet poster så går der rod i regnskabet ved bare at tælle MAX, hvis man vil vide hvor mange der er. Derfor skal man jo bruge count.

Det jeg skriver (eller prøver på :D) er at hvis man bare vil vide hvilket id der er det nyeste kan man bruge SELECT MAX. SELECT COUNT vil jo netop ikke give det nyeste id hvis der er blevet slettet.
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