Avatar billede agg-zeus Nybegynder
13. april 2002 - 21:50 Der er 9 kommentarer og
1 løsning

Count med Access .....

Jeg har et script som først skal tælle alle poster (billeder) i en DB og bagefter trække en fra for hver gang et felt ikke stemmer med den fest man har valgt. Der er 4 billeder i DB'en, og 2 af dem hører til "fest" og de 2 andre "egnepics", men når den tæller op og trækker fra så får den det til 4 billeder! Og der er kun 2!

Scriptet:


sql = "select count(*) as antal from pics"
rs.open sql, cn
antal = rs.fields("antal")
rs.close

sql = "Select * from pics WHERE fest = '"&fest&"' ORDER BY id ;"
'sql = "SELECT * FROM pics ORDER BY id;"
rs.open sql, cn
Do while not (rs.BOF or rs.EOF)
    If rs.fields("fest") <> fest Then
        antal = antal - 1
    End If
    rs.movenext
Loop

rs.close


Hvad har jeg gjort galt?
Avatar billede kimiwan Nybegynder
13. april 2002 - 21:55 #1
for det første tager den jo kun de billeder ud, der er fra festen "fest" ..så den vil aldrig nå at trække noget fra i dit do-while loop.

hvis du bruger din "SELECT * FROM pics ORDER BY id" sql string i stedet, skal du lige huske at skrive "fest" i stedet for fest - ellers tjkker den jo blot om rs.fields("fest") er forskellig fra variablen fest - ikke strengen "fest":

If rs.fields("fest") <> "fest" Then
Avatar billede agg-zeus Nybegynder
13. april 2002 - 21:57 #2
fest = Request.Querystring("fest")

Og nu kan fest kun have værdien "fest" eller "egnepics" ....
Avatar billede agg-zeus Nybegynder
13. april 2002 - 22:00 #3
gjorde således i stedet for:

sql = "select count(*) as antal from pics"
rs.open sql, cn
antal = rs.fields("antal")
rs.close

'sql = "Select * from pics WHERE fest = '"&fest&"' ORDER BY id ;"
sql = "SELECT * FROM pics ORDER BY id;"
rs.open sql, cn
Do while not (rs.BOF or rs.EOF)
    If rs.fields("fest") <> fest Then
        antal = antal - 1
    End If
    rs.movenext
Loop

rs.close
sql = "Select * from pics WHERE fest = '"&fest&"' ORDER BY id ;"
rs.open sql, cn

og nu virker det faktisk... men der er garanteret en MEGET bedre måde at gøre det på...
Avatar billede kimiwan Nybegynder
13. april 2002 - 22:05 #4
vil du bare tælle, hvor mange pics der er fra en bestemt fest???
Avatar billede kimiwan Nybegynder
13. april 2002 - 22:07 #5
SELECT COUNT(*) FROM pics WHERE fest = '" & request.querystring("fest") & "';"

så får du antallet af billeder fra festen i request.querystring("fest")
Avatar billede kimiwan Nybegynder
13. april 2002 - 22:07 #6
dvs. COUNT(*) AS antal  ..i stedet for bare COUNT(*)  :o)
Avatar billede agg-zeus Nybegynder
13. april 2002 - 22:11 #7
det hænger sammen med følgende:

intMaxColumn = 2 'maximum antal billeder i hver række
intBilleder = antal 'antallet af billeder
intCount = 0 'Tæller
Response.Write "<tr>"
For x = 1 to intBilleder
intCount = intCount+1
If intCount > intMaxColumn Then
intCount = 1
Response.Write "</tr><tr><td height=""15""></td></tr>"
End If

hvor jeg jo skal bruge antal billeder til den fest der er valgt...
Avatar billede kimiwan Nybegynder
13. april 2002 - 22:15 #8
kunne du ikke bruge den sql streng, jeg lige lavede til at hente antallet af billeder fra en given fest???  det burde da virke og returnere antallet af billeder fra den angivne fest.
Avatar billede agg-zeus Nybegynder
13. april 2002 - 22:17 #9
Nej, for linien: For x = 1 to intBilleder --- kræver jo antallet af billeder til festen for at kunne lave det så den skrive 2 billeder per række... men fuck det! det jeg har lavet nu virker, så det er jo godt nok...
Avatar billede kimiwan Nybegynder
13. april 2002 - 22:21 #10
men antallet af billeder til den specifikke fest har du jo netop i rs.fields("antal")

intBilleder = rs.fields("antal")  i stedet for  intBilleder = antal

det sql strengen gør er bare kun at tælle antallet af billeder fra lige netop den fest, du har angivet :o)
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