Avatar billede rille101 Nybegynder
11. december 2007 - 13:55 Der er 13 kommentarer og
2 løsninger

sammentæl count udtræk via løkke

hej.
jeg har en tabel med dato og antal.

Min sql laver en count, således:
count(antal) as totalantal
From counter
group by dato

Det giver resultatet:

1/12 = 10
2/12 = 14
3/12 =  9

Hvordan laver jeg et asp script der sammentæller 10+14+9 ?
Det skal foregå i en løkke, så jeg senere kan sætte where kriterier på sql'en. Der kan derfor være forskel på antallet af tal der skal lægges sammen.

er der nogen der har en løsning liggende?
Avatar billede softspot Forsker
11. december 2007 - 14:01 #1
Under antagelse af at rs indeholder dine optællinger fra udtrækket og feltet med optællingerne ligger i en kolonne ved navn antal:

sum = 0
do while not rs.eof
  sum = sum + rs("antal")
  rs.movenext
loop
Avatar billede rille101 Nybegynder
11. december 2007 - 14:57 #2
Det er den jeg bruger lige nu, men den giver bare 0, også selvom den løkke der udskriver 1/12 = 10 osv. viser de korrekte udtræk :-(.
Avatar billede jarlen67 Nybegynder
12. december 2007 - 12:23 #3
Jeg vil da formode at det er totalantal der skal benyttes.

sum = 0
do while not rs.eof
  sum = sum + rs("totalantal")
  rs.movenext
loop
Avatar billede rille101 Nybegynder
12. december 2007 - 15:11 #4
Hej jarlen67. det virker heller ikke (samme resultat) forstår det sgu ikke.
Avatar billede happycow Nybegynder
12. december 2007 - 19:50 #5
Har du debugget og tjekket at der er en værdi i rs("antal") eller rs("totalantal") ...
Avatar billede nielle Nybegynder
12. december 2007 - 19:58 #6
Kan du ikke vise os den relevante del af din kode. Det ovenstående burde virke og hvis det ikke gør så er det fordi at vi mangler et eller andet.
Avatar billede rille101 Nybegynder
13. december 2007 - 09:14 #7
<%
Dim rs
Dim rs_cmd
Dim rs_numRows

Set rs_cmd = Server.CreateObject ("ADODB.Command")
rs_cmd.ActiveConnection = MM_connUglvig_STRING
rs_cmd.CommandText = "SELECT dato, sum(antal) as totalantal FROM tabel GROUP by dato"
rs_cmd.Prepared = true

Set Rs = rs_cmd.Execute
rs_numRows = 0
%>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
                        <%do until rs.EOF%></p>
                          <tr>
                            <td width="44%" class="style1"><strong><%=rs("dato")%>:</strong></td>
                            <td width="56%"><span class="style1"><%=rs("totalantal")%> stk</span></td>
                          <%rs.MoveNext
loop
%></tr>
                        </table>
                        <p align="left" class="style1"><%if not rs.BOF then%>
                          Leveret ialt: <strong>
                          <%
                        sum = 0
                        do until rs.EOF
                        sum= sum+ rs("totalantal")
rs.MoveNext
loop

%>
i alt: <%=sum%><%%><%end if%></strong></p>





Kan det være fordi jeg har to løkker?
Avatar billede nielle Nybegynder
13. december 2007 - 18:22 #8
Kan det være fordi jeg har to løkker?>

Ja! Løkke nr. 2 løber nemlig aldrig nogen steder rs er nået til EOF når du starter løkken 2. gang.

Men hvorfor have 2 løkker, når det kan klares i et og samme gennemløb?

<%
Dim rs
Dim rs_cmd
Dim rs_numRows

Set rs_cmd = Server.CreateObject("ADODB.Command")
rs_cmd.ActiveConnection = MM_connUglvig_STRING
rs_cmd.CommandText = "SELECT dato, sum(antal) as totalantal FROM tabel GROUP BY dato"
rs_cmd.Prepared = True

Set Rs = rs_cmd.Execute
rs_numRows = 0
%>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<%
sum = 0
Do Until rs.EOF
%>
    <tr>
    <td width="44%" class="style1"><strong><%=rs("dato")%>:</strong></td>
    <td width="56%"><span class="style1"><%=rs("totalantal")%> stk.</span></td>
    </tr>
<%
    sum = sum + rs("totalantal")
    rs.MoveNext
Loop
%>
</table>

<p align="left" class="style1">Leveret ialt: <strong>i alt: <%=sum%></strong></p>
Avatar billede rille101 Nybegynder
14. december 2007 - 11:13 #9
Ja, hvorfor egentlig :-D
Det var det der var fejlen.
Så lærte jeg også det.
Smider du et svar nielle...
Avatar billede nielle Nybegynder
14. december 2007 - 16:24 #10
Hmm, nu var jeg jo ikke en om at give det rette svar. Det må da være en deler?
Avatar billede rille101 Nybegynder
15. december 2007 - 10:24 #11
Så synes jeg at softspot også skal smide et svar, så får i alle tre.
Avatar billede nielle Nybegynder
28. december 2007 - 21:36 #12
softspot, lægger du ikke et svar?
Avatar billede rille101 Nybegynder
18. januar 2008 - 10:57 #13
Softspot, jeg går ud fra at du ikke vil have points. Derfor lukker jeg spm nu.
Hvis du føler dig snydt, så smid lige en melding, så finder vi ud af det :)

Tak for hjælpen!
Avatar billede nielle Nybegynder
18. januar 2008 - 16:44 #14
Takker for point :^)
Avatar billede jarlen67 Nybegynder
20. januar 2008 - 10:01 #15
Takker.
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