03. maj 2003 - 21:35
Der er
39 kommentarer og 1 løsning
Tæl antal poster med specielt navn
Hej. Jeg sidder her med en database, der indeholder forskellige data samt navnet på en person, der har tilmeldt data'et. Jeg vil nu lave en oversigt over personer, der har smidt data i databasen, samt udskrive antallet af poster de har lavet. Nogen der har erfaring med dette, og som kan give mig eksempler herpå ? - tak
Annonceindlæg fra Deloitte
Jeg går ud fra at denne person har et unikt ID og der refereres til netop dette ID ved de posteringer denne person har lavet.... Så løber du indlæggene igennem og tæller...... Noget alá Select feltnavn from t_posteringer WHERE postID=1 Så laver du en counter der ligger en til for hvert gennemløb.....
Nej, hver person har ikke et ID nr. Dette genereres for hvert input.
hmm.. hvordan vil du så tracke hvem der har lavet hvad... vel ikke på navn... hvilket jo netop ikke er unikt.....
Ok, kort og godt vil jeg have, at en liste genereres over brugerne (kolonnen hedder "navn"). efterfølgende vil jeg have en udskrift over, hvor mange gange hvert navn optræder i føromtalte kolonne.
hmmm... og hvad skulle det kunne vise? At x antal tilfældige personer har lavet posteringer under ET bestemt navn!!! Har du et sted hvor man kan se det du har lavet.
Det er det samme antal personer der går og indtaster nu og da. Folk er jo oprettede, og kan ikke ændre deres navn.. - nej, det kan ikke ses.
sql = "select count * as found from tabel where navn = '"& request("navn")&"'" Med denne sql får du alle de poster fra en tabel hvor navn er lig et navn du sender siden. ret lige request("navn") selv. Derefter udskriver du antaller med <%=RecordsetNavn("found")%>
Ellebaek > Mange tak for dit svar. Tjekker jeg lige med det samme ^_^
Kan jeg skrive strSQL foran select-linien i stedet ? Og hvorfor har ud ASP-start og slut commands på udskrift-commandoen ? skal den ikke se således ud : response.write RecordsetNavn("found") ?
det var bare hvis det var i html du bruger <%=rs("found")%> du kan kalde din sql hvad du vil... strSQL er fint nok. Husk at ændre RecordsetNavn til navnet på dit recordset...
Min kode : <% ' Der oprettes forbindelse til databasen dbname=Server.MapPath("db.mdb") set cn = server.createobject("ADODB.Connection") constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & dbname cn.connectionstring = constr cn.open strSQL = "select count * as found from tabel where navn = '"& request("navn")&"'" Set rs = Cn.Execute(strSQL) Response.write RecordsetNavn("found") %>
Jeg får fejl når jeg executer den.
Hvordan finder du det navn du skal tælle med ??
Du skal havde () omkring * i Count : strSQL = "select count (*) as found from tabel where navn = '"& request("navn")&"'"
Hm, jeg er ikke helt sikker på : Response.write RecordsetNavn("found") Min Kolonne hedder "navn" og min tabel hedder "anmeldelse" - noget der så skal ændres ?
<% ' Der oprettes forbindelse til databasen dbname=Server.MapPath("db.mdb") set cn = server.createobject("ADODB.Connection") constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & dbname cn.connectionstring = constr cn.open strSQL = "select count * as found from anmeldelse where navn = '"& request("navn")&"'" Set rs = Cn.Execute(strSQL) Response.write rs("found") %>
Ok, lidt dumt at glemme at skrive tabelnavnet :) - men det virker stadig ikke
Husk nu der stadig skal () omkring *
Kode :
<%
' Der oprettes forbindelse til databasen
dbname=Server.MapPath("db.mdb")
set cn = server.createobject("ADODB.Connection")
constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & dbname
cn.connectionstring = constr
cn.open
strSQL = "select count (*) as found from anmeldelse where forfatter = '"& request("forf")&"'"
Set rs = Cn.Execute(strSQL)
Response.write rs("found")
%>
URL :
http://localhost/test/test.asp?forf=Cool Fejlkode :
NAVN error '80004005'
Unspecified error
/anime/taktil.asp, line 22
øh der er slet ikke 22 linjer i koden. Er det hele filen taktil.asp ?
Ok kan du så udpege linje 22?
yep - det er den tomme linie mellem : Set rs = Cn.Execute(strSQL) -> HER Response.write rs("found")
Den tomme linje..hmm mærkeligt. Prøv at sæt curseren op efter &"'" og tryk på delete indtil linjen med Response.write er kommet helt hen til &"'" og lav et nyt linje skift.
Er der nogle data i databasen så du vil få et antal ud? Normalt er det en god ide at tjekke på om det recordset man har fået er tomt for at undgå fejl når man udskriver.: if not rs.EOF then Response.write rs("found") else Response.write "Tomt recordset" end if
Jeg tog fejl. Det er linie 20 der er fejl i nu (foretog ikke nogen rettelser) - Linie 20 : Set rs = Cn.Execute(strSQL)
Og du en kolonne som hedder forfatter ?
Prøv at tilføje linjen : set rs = server.createobject("ADODB.RecordSet") Lige efter linjen som ligner den med: set cn = server....
Sådan : set cn = server.createobject("ADODB.Connection") set rs = server.createobject("ADODB.RecordSet") constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & dbname cn.connectionstring = constr cn.open Samme fejl..
Jeg har erstattet : = '"& request("forf")&"'" med : = Cool " - så kan vi udelukke en fejl der..
Mærkeligt prøv at bruge et andet navn en found eksvis antal: strSQL = "select count (*) as antal from anmeldelse where forfatter = '"& request("forf")&"'"
Ny fejlkode : Microsoft JET Database Engine error '80040e10' No value given for one or more required parameters. /anime/taktil.asp, line 14 Koden : <% ' Der oprettes forbindelse til databasen dbname=Server.MapPath("db.mdb") set cn = server.createobject("ADODB.Connection") ' set rs = server.createobject("ADODB.RecordSet") constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & dbname cn.connectionstring = constr cn.open strSQL = "select count (*) as antal from anmeldelse where forfatter = Jemt" Set rs = Cn.Execute(strSQL) Response.write rs("antal") %>
Teksten skal hvade ' omkring i SQL sætningen: strSQL = "select count (*) as antal from anmeldelse where forfatter = 'Jemt'"
Nå ja, det er rigtigt - takker, det hjalp :)
Kurser inden for grundlæggende programmering