Avatar billede gimdner Nybegynder
11. januar 2002 - 11:23 Der er 12 kommentarer og
1 løsning

Hjælp til kode

Jeg har hurtigt lavet det her stykke kode:
<!--#include file=\"DBconnection.inc\"-->
<%
    Set DB = Connect()

    SQL = \"SELECT * FROM DVDfilm, DVDgenre, DVDmedie, DVDproducenter, DVDskuespillere \"
      set RS = DB.Execute (SQL)
%>
<html>
<head>
<title>Oversigt over DVDfilm</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head>

<body bgcolor=\"#FFFFFF\" text=\"#000000\">
<p>
<% Do While Not RS.EOF %>
</p>
<p>
  <% Response.Write RS(\"Titel\") %>
  <br>
  <% Response.Write RS(\"Genre\") %>
  <br>
  <% Response.Write RS(\"Spilletid\") %>
  <br>
  <% Response.Write RS(\"Skuespiller\") %>

<%
RS.MoveNext
Loop

CloseAndDis ()
%>
</p>
</body>
</html>

Problemet er, at filmen bliver skrevet ud, det antal gange som der er skuespillere i filmen... dvs. hvis der er 2 skuespillere tilføjet filmen, så bliver alle informationer udskrevet en gang for hver skuespiller. Hvad gør jeg for at få den til kun at udskrive infoet en gang, og så bare skrive de skuespillere som er med i filmen?

Jeg vil gerne hvis du kan skrive koden til det, på forhånd tak
Avatar billede wisen Nybegynder
11. januar 2002 - 11:32 #1
Du mangler hvis en \"Where\" i den select-sætning :)

noget i stil med \"SELECT * FROM DVDFilm film, DVDgenre genre WHERE genre.id = film.genreId\"

Jeg går ud fra at du har nogle fremmednøgler i tabellen DVDFilm, som peger på dens tilhørsforhold til de andre tabeller...
Avatar billede gimdner Nybegynder
11. januar 2002 - 11:35 #2
ja men det var skuespillere som er problemet. Det er korrekt at jeg har fremmednøgler
Avatar billede wisen Nybegynder
11. januar 2002 - 11:40 #3
jaja, men du skal selvfølgelig udvide \"where\" delen :)
Avatar billede gimdner Nybegynder
11. januar 2002 - 11:45 #4
plz skriv koden :)
Avatar billede coltau Juniormester
11. januar 2002 - 11:48 #5
Prøv med følgende:
SQL = \"SELECT * FROM DVDfilm, DVDgenre, DVDmedie, DVDproducenter, DVDskuespillere group by DVDskuespillere\"

Group by sikre at der kun vises en linie for hver skuespiller.
Avatar billede gimdner Nybegynder
11. januar 2002 - 11:51 #6
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der kan ikke grupperes efter felter, der er markeret med \"*\".
/multimediesamling/Sider/DVD_oversigt.asp, line 6
Avatar billede coltau Juniormester
11. januar 2002 - 11:58 #7
Ok. Så skal de enkelte felter angives i stedet for *.
En kollega kom lige forbi og forslog følgende:
SQL = \"SELECT DISTINCT * FROM DVDfilm, DVDgenre, DVDmedie, DVDproducenter, DVDskuespillere\"

Man kan også lade Access eller lign. program danne SQL-sætninger.
Avatar billede markmusen Nybegynder
11. januar 2002 - 12:04 #8
prøv om ikke det virker hvis du bruger while ... wend i stedet for do loop:

<% Do While Not RS.EOF %>
erstattes med:
<% while not rs.eof %>
og
Loop
erstattes med:
wend
Burde virke!
Avatar billede markmusen Nybegynder
11. januar 2002 - 12:11 #9
do until i stedet for do while skulle også virke!
Avatar billede gimdner Nybegynder
11. januar 2002 - 14:49 #10
Jeres forslag har desværre ingen effekt, resultatet er det samme som før :((
Avatar billede coltau Juniormester
11. januar 2002 - 15:34 #11
Hvis du vil bruge den SQL-sætning som du selv har lavet kan nedenstående while-løkke udskrive resultatet som du ønsker.

<%
strLastTitle = \"\"
Do While Not RS.EOF
    if RS(\"Titel\") <> strLastTitle then
      Response.Write \"<br>\"
      Response.Write RS(\"Titel\") & \"<br>\"
      Response.Write RS(\"Genre\") & \"<br>\"
      Response.Write RS(\"Spilletid\") & \"<br>\"
      Response.Write RS(\"Skuespiller\") & \"<br>\"
      strLastTitle = RS(\"Titel\")
    else
      Response.Write RS(\"Skuespiller\") & \"<br>\"
    end if
  RS.MoveNext
  Response.Write \"<br>\"
Loop
%>

Ellers er den korrekte måde at lave en SQL-sætning der netop indeholder det resultat der skal vises og det kan kun lade sig gøre hvis man kender feltindholdet i tabellerne.
Avatar billede gimdner Nybegynder
11. januar 2002 - 16:02 #12
hvis jeg skrive de felter jeg har, vil du så lave sætningen?
Avatar billede coltau Juniormester
11. januar 2002 - 16:48 #13
Jeg kan prøve - men jeg skal have tabel og feltnavne og helst en beskrivelse af den rækkefølge felterne skal vises på skærmen.

Send det evt. som mail til ccc@post11.tele.dk
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