Avatar billede tblaster Nybegynder
11. maj 2002 - 13:38 Der er 16 kommentarer og
1 løsning

Tælling af antal i en tabel med en speciel værdi!

Hejsa

Jeg har en database med en tabel der hedder "Tilmeldte" I den har jeg følgende kolonner: Deltagere og Firma.

Nu er mit spørgsmål så hvordan jeg gør sådan at den finder alle dem der har samme firma og så ligger deres deltager antal sammen så min side viser at der er 2 tilmeldte fra firma a og ikke at den skriver firma a har 1 tilmeldte og firma a har en tilmeldte!

Her er min kode som jeg har den indtil nu:

<%Language = "VBScript"%>
<%Fagseminar = request.Querystring%>
<HTML>
<HEAD>
<TITLE>Tilmeldte</TITLE>
</HEAD>
<BODY text=#000000 vLink=#000000 aLink=#000000 link=#000000 rightMargin=0>
Følgende firmaer er tilmeldt til seminaren:<br><br>                 
<%
Set Conn = Server.CreateObject("ADODB.Connection")
        Set Rs = Server.CreateObject("ADODB.Recordset")
        'Modify and use this connection if your database is in your database directory
        'Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=Fagseminar.mdb"
        Conn.Open "DBQ=" & Server.Mappath("Fagseminar.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"

SQL = "SELECT Fagseminar.FagseminarId, Tilmeldte.Deltagere, Tilmeldte.Firma, Tilmeldte.Betaling, Tilmeldte.Fagseminar from Tilmeldte LEFT JOIN Fagseminar ON Tilmeldte.Fagseminar = Fagseminar.Fagseminarid where Tilmeldte.Fagseminar=" & request.querystring("Fagseminar")
rs.Open SQL, Conn

If rs.BOF AND rs.EOF then
  Response.Write "Der er på nuværende tidspunkt ingen tilmeldte."
  Response.Write"<br>"

End if

For x = 1 to 10
    If rs.eof then
        Exit For
    Else
%>

<% =rs("Firma")%> med <% =rs("Deltagere")%> deltagere.<br>

            <%
      rs.MoveNext
    End If
Next

%> <br>
<a href="java script:history.go(-1)" style="text-decoration: none">Tilbage til informationerne om fagseminaren</a><br>   
<a href="fagseminar.asp" style="text-decoration: none">Tilbage til listen over fagseminar</a>
               
</BODY></HTML>
Avatar billede avlund Nybegynder
11. maj 2002 - 13:41 #1
Er det nu dig igen!

SQL = "SELECT Fagseminar.FagseminarId, Tilmeldte.Deltagere, Tilmeldte.Firma, Tilmeldte.Betaling, Tilmeldte.Fagseminar from Tilmeldte LEFT JOIN Fagseminar ON Tilmeldte.Fagseminar = Fagseminar.Fagseminarid GROUP BY Tilmeldte.Firma WHERE Tilmeldte.Fagseminar=" & request.querystring("Fagseminar")
rs.Open SQL, Conn

Så skulle den vist være der...
Avatar billede tblaster Nybegynder
11. maj 2002 - 13:47 #2
Ja det er mig igen :-D ... den lave fejl hvis jeg bruger det du skrev:
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Tilmeldte.Firma WHERE Tilmeldte.Fagseminar=23'.
Avatar billede avlund Nybegynder
11. maj 2002 - 13:49 #3
Hmm, måske Access ikke understøtter GROUP BY?

Det bør man finde ud af... øjeblik.
Avatar billede avlund Nybegynder
11. maj 2002 - 13:57 #4
Selvfølgelig. GROUP BY skal efter WHERE.

Sådan her:

SQL = "SELECT Fagseminar.FagseminarId, Tilmeldte.Deltagere, Tilmeldte.Firma, Tilmeldte.Betaling, Tilmeldte.Fagseminar from Tilmeldte LEFT JOIN Fagseminar ON Tilmeldte.Fagseminar = Fagseminar.Fagseminarid WHERE Tilmeldte.Fagseminar=" & request.querystring("Fagseminar") & " GROUP BY Tilmeldte.Firma"
rs.Open SQL, Conn
Avatar billede tblaster Nybegynder
11. maj 2002 - 13:59 #5
Så får jeg følgende fejl:
[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'FagseminarId' as part of an aggregate function.
Avatar billede avlund Nybegynder
11. maj 2002 - 14:01 #6
Nå ja. Der er et eller andet rod med at de alle skal nævnes.
Avatar billede avlund Nybegynder
11. maj 2002 - 14:09 #7
Den syntax virker kun i MySQL. Du bliver nødt til at bruge alt det du SELECT'er i din GROUP BY også.
Avatar billede eagleeye Praktikant
11. maj 2002 - 14:38 #8
Du kan benytte denne SQL, den sammen tæller antal deltagere fra alle firmaer tilknyttet et fagsminar:

strSQL = "SELECT Tilmeldte.Firma, Count(Tilmeldte.Firma) AS AntalOfFirma FROM Fagseminar LEFT JOIN Tilmeldte ON Fagseminar.FagseminarId = Tilmeldte.Fagseminar WHERE Fagseminar.FagseminarID = " & request.querystring("Fagseminar") & " GROUP BY Tilmeldte.Firma;
set rs = connection.execute(strSQL)
udskrive:

Response.write "Fra firma " & rs("Firma") & " deltager " & rs("AntalOfFirma") & "."
Avatar billede eagleeye Praktikant
11. maj 2002 - 14:40 #9
ups der mangler en " til at afslutte SQL sætnignne:

strSQL = "SELECT Tilmeldte.Firma, Count(Tilmeldte.Firma) AS AntalOfFirma FROM Fagseminar LEFT JOIN Tilmeldte ON Fagseminar.FagseminarId = Tilmeldte.Fagseminar WHERE Fagseminar.FagseminarID = " & request.querystring("Fagseminar") & " GROUP BY Tilmeldte.Firma;"
Avatar billede tblaster Nybegynder
11. maj 2002 - 14:47 #10
Så får jeg følgende:
Object required: ''

Jeg har smidt det ind som følgende:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
        Set Rs = Server.CreateObject("ADODB.Recordset")
        'Modify and use this connection if your database is in your database directory
        'Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=Fagseminar.mdb"
        Conn.Open "DBQ=" & Server.Mappath("Fagseminar.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"

strSQL = "SELECT Tilmeldte.Firma, Count(Tilmeldte.Firma) AS AntalOfFirma FROM Fagseminar LEFT JOIN Tilmeldte ON Fagseminar.FagseminarId = Tilmeldte.Fagseminar WHERE Fagseminar.FagseminarID = " & request.querystring("Fagseminar") & " GROUP BY Tilmeldte.Firma;"
set rs = connection.execute(strSQL)

If rs.BOF AND rs.EOF then
  Response.Write "Der er på nuværende tidspunkt ingen tilmeldte."
  Response.Write"<br>"

End if

For x = 1 to 10
    If rs.eof then
        Exit For
    Else
%>

Response.write "Fra firma " & rs("Firma") & " deltager " & rs("AntalOfFirma") & "."

            <%
      rs.MoveNext
    End If
Next

%>
Avatar billede eagleeye Praktikant
11. maj 2002 - 14:52 #11
arh du bruger:
rs.Open SQL, Conn

Prøv at ænndre denne:
set rs = connection.execute(strSQL)

Til denne:
rs.Open SQL, Conn
Avatar billede eagleeye Praktikant
11. maj 2002 - 14:52 #12
hmm sådan her:
rs.Open strSQL, Conn
Avatar billede tblaster Nybegynder
11. maj 2002 - 15:00 #13
Nu virker siden da men den tæller jo bare hvor mange kolonner der har det sammen firma navn! Den skal jo lægge deltagerne sammen!

Det jeg får nu er:
Fra firma Cowi deltager 1.
Fra firma Hp1 deltager 2.
Fra firma Imerco deltager 1.

Det jeg skulle have var:
Fra firma Cowi deltager 24
Fra firma Hp1 deltager 2
Fra firma Imerco deltager 10
Avatar billede eagleeye Praktikant
11. maj 2002 - 15:05 #14
Ok. hvordan gemme du så antallet af deltagere hvis det ikke er en per række?
Avatar billede tblaster Nybegynder
11. maj 2002 - 15:28 #15
Min databases tabel ser ca. sådan ud:
Fima                  Deltager
Firma 1                    1
Firma 2                    23
Firma 1                    1
Firma 3                    50
Firma 1                    1
Avatar billede eagleeye Praktikant
11. maj 2002 - 15:34 #16
så kan du lave Count(firma) om til Sum(deltagere):


strSQL = "SELECT Tilmeldte.Firma, Sum(Tilmeldte.Deltagere) AS AntalOfDeltagere FROM Fagseminar LEFT JOIN Tilmeldte ON Fagseminar.FagseminarId = Tilmeldte.Fagseminar WHERE Fagseminar.FagseminarID = " & request.querystring("Fagseminar") & " GROUP BY Tilmeldte.Firma;"



'udskriv
Response.write "Fra firma " & rs("Firma") & " deltager " & rs("AntalOfDeltagere") & "."
Avatar billede tblaster Nybegynder
11. maj 2002 - 16:08 #17
Bare glem det ... jeg har valgt at ændre det hele totalt, eftersom at man ikke skal kunne tilføje et firma med x antal bruger! Hver enkelte bruger skal selv tilmeldes! Men tak for hjælpen eagleeye ... det gav mig nogle tips til senere brug!
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