Avatar billede bootlab Nybegynder
23. juni 2003 - 23:43 Der er 8 kommentarer og
1 løsning

Count sql med relation

Hej :/

Jeg har to tabeller (Aarstal (a) og Billeder (b)) i en access db hvor der er en relation imellem dem (a.Id = b.Aar):

Tabel : Aarstal
-- ---
Id Aar
-- ---

og så

Tabel : Billeder
-- --- ------ ------
id Aar Format ImgSti
-- --- ------ ------

Hvordan laver jeg et udtræk som viser alle dem fra Tabellen "Aarstal" som er brugt i Tabellen "Billeder"
samt hvor mange der er af hver.

Jeg har forsøgt med dette som så ikke virker!!

<%
    Set RS = Server.CreateObject("ADODB.Connection")
    DBPath = "DBQ=" & server.mappath("mindb.mdb")
    RS.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
    sql = "SELECT * FROM Aarstal;"
    Set Rs = Rs.Execute(Sql)
    If Not Rs.EOF Then
   
    Set RsTael = Server.CreateObject("ADODB.Connection")
    RsTael.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
   
    Do While Not RS.EOF
   
    sql = "SELECT COUNT (b.Aar) AS Tal FROM Billeder b WHERE b.Aar = " & Rs("Id") & ";"
    Set RsTael = RsTael.Execute(Sql)
    If Not RsTael.EOF Then
    Response.Write "<tr><td><p><b><a href=billeder.asp?aar=" & Rs("Id") & ">" & Rs("Aar") & "</a> " & RsTael("Tal") & "</b></td></tr>"
    Else
    End If
   
    RS.MoveNext
    Loop
    Else
    Response.Write "<tr><td><p><br><br><br><b>No match was found from this query!!</b><br><br></td></tr>"
    End If
    RsTael.Close
    Set RsTael = Nothing
    RS.Close
    Set RS = Nothing
%>


Nogle der kan hjælpe mig med problemet???

/boot
Avatar billede -master-d- Nybegynder
23. juni 2003 - 23:59 #1
Prøv at lave denne sql istedet.

  sql = "SELECT COUNT(Aar) AS Tal FROM Billeder WHERE Aar = " & Rs("Id") & ";"
    Set RsTael = RsTael.Execute(Sql)
Avatar billede bootlab Nybegynder
24. juni 2003 - 00:06 #2
Det virker ikke!!

Den siger:

Objektet understøtter ikke denne egenskab eller metode: 'RsTael.Execute'
Avatar billede -master-d- Nybegynder
24. juni 2003 - 00:11 #3
Det er fordi du genbruger for variablerne.

Prøv denne.


<%
    Set Conn = Server.CreateObject("ADODB.Connection")
    DBPath = "DBQ=" & server.mappath("mindb.mdb")
    Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
    sql = "SELECT * FROM Aarstal;"
    Set Rs = Conn.Execute(Sql)
    If Not Rs.EOF Then 
    Do While Not RS.EOF
   
    sql2 = "SELECT COUNT(Aar) AS Tal FROM Billeder WHERE Aar = " & Rs("Id") & ";"
    Set RsTael = Conn.Execute(Sql)
    If Not RsTael.EOF Then
    Response.Write "<tr><td><p><b><a href=billeder.asp?aar=" & Rs("Id") & ">" & Rs("Aar") & "</a> " & RsTael("Tal") & "</b></td></tr>"
    Else
    End If
   
    RS.MoveNext
    Loop
    Else
    Response.Write "<tr><td><p><br><br><br><b>No match was found from this query!!</b><br><br></td></tr>"
    End If
    RsTael.Close
    Set RsTael = Nothing
    RS.Close
    Set RS = Nothing
%>
Avatar billede bootlab Nybegynder
24. juni 2003 - 00:21 #4
hmm.. :) det hjalp lidt på det - nu siger den at der fejl længere nede i linjen :

Response.Write "<tr><td><p><b><a href=billeder.asp?aar=" & Rs("Id") & ">" & Rs("Aar") & "</a> " & RsTael("Tal") & "</b></td></tr>"

Den siger:
Avatar billede bootlab Nybegynder
24. juni 2003 - 00:21 #5
ADODB.Recordset (0x800A0CC1)
Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal.
Avatar billede -master-d- Nybegynder
24. juni 2003 - 00:44 #6
Grunden til den fejl er at der jo på et eller andet tidspunkt vil komme et årstal som der ikke tilhører nogen billeder, og denne stump kode prøver altså at udskrive noget som ikke er der.

Kommer lige med et forslag på hvad du så gør.
Avatar billede -master-d- Nybegynder
24. juni 2003 - 00:47 #7
<%
    Set Conn = Server.CreateObject("ADODB.Connection")
    DBPath = "DBQ=" & server.mappath("mindb.mdb")
    Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

    sql = "SELECT * FROM Aarstal;"
    Set Rs = Conn.Execute(Sql)
    If Not (RS.BOF OR Rs.EOF) Then 
    Do While Not RS.EOF
   
    sql2 = "SELECT COUNT(Aar) AS Tal FROM Billeder WHERE Aar = " & Rs("Id") & ";"
    Set RsTael = Conn.Execute(Sql)
    If Not (RsTael.BOF OR RsTael.EOF) Then
    Response.Write "<tr><td><p><b><a href=billeder.asp?aar=" & Rs("Id") & ">" & Rs("Aar") & "</a> " & RsTael("Tal") & "</b></td></tr>"
    Else
    End If
   
    RS.MoveNext
    Loop
    Else
    Response.Write "<tr><td><p><br><br><br><b>No match was found from this query!!</b><br><br></td></tr>"
    End If

    Conn.Close
    Set Conn = Nothing
%>
Avatar billede bootlab Nybegynder
24. juni 2003 - 00:55 #8
Så var den der :)

Det eneste jeg blev nød til at rette var:

Set RsTael = Conn.Execute(Sql)
til -->
Set RsTael = Conn.Execute(Sql2)

Der er SQ lige 200 stk. velfortjente point til dig :)
Tusind tak for din deltagelse her sent på aftenen...
Sov godt :)

/boot
Avatar billede bootlab Nybegynder
24. juni 2003 - 00:56 #9
oO(hmmmm)
RS.BOF
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