Avatar billede ravnkilde Nybegynder
23. januar 2004 - 09:16 Der er 10 kommentarer og
1 løsning

Udtræk fra datbase fordeles over flere tabeller på samme side

Hej!

Jeg har en database med et felt, der hedder Competence. I Competence er der seks områder (eks. kaldet 1, 2, 3, 4, 5 og 6).

Når jeg laver mit udtræk fra databasen får jeg listet samtlige poster, men det bliver uoverskueligt,trods en sortering efter Posternumber.

Derfor vil jeg gerne have udtrækket fra databasen fordelt over seks tabeller - men stadig på samme side. Eks. alle data fra Competence-området 1 skal i en tabel for sig, alle data fra Competence-området 2 skal ind en tabel for sig osv.

Nedenfor ses min nuværende kode, som formentligt skal justeres på flere punkter.

Jeg har brug for lidt hjælp her...

--- start på kode ---

<%
Option Explicit

Dim objConn
Dim objRs
Dim intPosternumber
Dim strSQL, strCompetence, strTitle, strSubtitle, strLanguage, strPDF_URL, strFilesize, strBGColor, strPosters, strNew
Dim blnBGColor

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("database/Posters.mdb")

strSQL = "SELECT Posternumber, Competence, Title, Subtitle, Language, PDF_URL, Filesize, New FROM Data ORDER BY Posternumber ASC;"
Set objRs = objConn.Execute(strSQL)
If Not (objRs.BOF AND objRs.EOF) Then
    Do While Not objRs.EOF
        intPosternumber = objRs("Posternumber")
        strCompetence = objRs("Competence")
        strTitle = objRs("Title")
        strSubtitle = objRs("Subtitle")
        strLanguage = objRs("Language")
        strPDF_URL = objRs("PDF_URL")
        strFilesize = objRs("Filesize")
               
        If blnBGColor = True Then
            strBGColor = "#FFFFFF"
            blnBGColor = False
        Else
            strBGColor = "#eeeeee"
            blnBGColor = True
        End If           
       
        If objRs("New") = true Then
strNew = " <img src=""images/new.gif"" alt=""New"" /> "
Else
strNew = ""
End If
   
strPosters = strPosters & "<tr bgcolor="""& strBGColor &"""><td>"& intPosternumber &"</td><td>"& strCompetence &"</td><td><a href="""&Server.MapPath("./"&strPDF_URL)&""">"& strTitle &"</a>"& strNew &"</td><td>"& strSubtitle &"</td><td>"& strLanguage &"</td><td align=""right"">"& strFilesize &"</td></tr>"

        objRs.MoveNext
    Loop
Else
    strPosters = "<tr><td colspan=""2"">Der er ingen Poster!</td></tr>"
End If

objConn.Close
Set objConn = Nothing

Response.Write("<table width=""100%"" border=""0"" cellpadding=""2"" cellspacing=""1""><tr bgcolor=""#CCCCCC""><td><b>Poster No.</b></td><td><b>Competence area</b></td><td><b>Title</b></td><td><b>Subtitle</b></td><td><b>Language</b></td><td><b>File size</b></td></tr>")
Response.Write strPosters
Response.Write("</table>")
%>
   
--- slut på kode ---
Avatar billede nute Nybegynder
23. januar 2004 - 09:40 #1
hmm ... kan du ikke udføre dette i en loop ? noget ála:


for i = 1 to 6
strSQL = "SELECT Posternumber, Competence, Title, Subtitle, Language, PDF_URL, Filesize, New FROM Data WHERE Competence = " & i & " ORDER BY Posternumber ASC;"
Set objRs = objConn.Execute(strSQL)
If Not (objRs.BOF AND objRs.EOF) Then
    Do While Not objRs.EOF
...
    Loop
End if
next

/nute
Avatar billede sbm Nybegynder
23. januar 2004 - 10:04 #2
Jeg kan ikke forstå at du ønsker at opdele det i flere tabeller...?

Er data for de enkelte typer Comptetence rimeligvis ens? Det vil jeg næsten tro de er, siden du indtil nu har haft dem alle liggende i en og samme tabel.

Burde du så ikke bare begrænse din select til kun at hive en enkelt af de seks kompetence typer ud ad gangen. Så skal du bare gøre det seks gange, hvor din WHERE sættes til 1, 2, 3, 4, 5 eller 6

Nu jeg sidder og skriver dette, får jeg nærlæst nute's indlæg, og jeg tror det er nogenlunde det samme han forsøger at sige. :-)

Med andre ord: prøv nute's eksempel.
Avatar billede nute Nybegynder
23. januar 2004 - 10:22 #3
sbm >> yup ... det er det samme jeg prøvet at sige ... ikke med ord - men med kode ;-)
Avatar billede sbm Nybegynder
23. januar 2004 - 10:45 #4
nute >> Jeg kan ikke helt forstå dit eksempel, hvor du først har en
    If Not (objRs.BOF AND objRs.EOF) Then
og inde i din if har du så en
    Do While Not objRs.EOF

Det burde vel være tilstrækkeligt med "Do While" løkken, med mindre din If del har en else del du gerne vil ind i, såfremt resultsettet er tomt...?
Avatar billede nute Nybegynder
23. januar 2004 - 10:49 #5
sbm >> helt korrekt ... men jeg har (*rødme* *rødme*) kun kopieret den kode som ravnkilde har postet uden at reviewe den :-/ Min pointe var bare at splitte op SQL'en i 6 queries ... hvordan den ellers bliver implementeret er p.t. ligegyldig da det ikke var helt tydelig hvad spm'et egentlig gik ud på ;-)
Avatar billede sbm Nybegynder
23. januar 2004 - 11:03 #6
Hmmm. Den er faktisk ikke så skævøjet endda.

Hvis der skal være seks tabeller på den samme side, bør vi nok have både en IF og en WHILE

If Not (objRs.BOF AND objRs.EOF) Then
    response.write "<table>"
    Do While Not objRs.EOF
        response.write "<tr><td>" & objRs("Posternumber") & "</td></tr>"
    Loop
    response.write "</table>
End if


Så skal der selvfølgelig bare lidt flere felter ind i end kun Posternumber :-)
Avatar billede ravnkilde Nybegynder
23. januar 2004 - 16:12 #7
Prøver jeres forslag af på mandag. Tak indtil videre.
Avatar billede ravnkilde Nybegynder
06. september 2004 - 14:31 #8
.
Avatar billede sbm Nybegynder
06. september 2004 - 16:56 #9
Øhm? Ingen forklaring? Ikke noget med hvad du brugte, eller hvordan det blev løst? Bare indkassering af point, og så kan folk rende og hoppe?

Ok.
Avatar billede ravnkilde Nybegynder
06. september 2004 - 20:58 #10
sbm: Helt ærligt, så er jeg kommet lidt (læs: meget langt) væk fra opgaven. Jeg opretter spørgsmålet igen, så kan du SVARE på det og få de 100 pts. Det er bestemt ikke for at jeg selv skal have pointene. Hvorfor skulle jeg egentligt det, når jeg selv har oprettet spørgsmålet. Jeg har blot afsluttet spørgsmålet, for ikke at have for mange åbne spørgsmål.
Avatar billede sbm Nybegynder
06. september 2004 - 21:19 #11
Næ. Generelt set er jeg selv ret ligeglad med point, men det er der mange andre der ikke er, og jeg synes bare ikke det var ok at lukke uden nogen angivelse af hvorfor hvordan og hvorledes. Folk havde jo brugt tid på at være behjælpelige, og hvis de svar kunne bruges ville det ikke være fair sådan at smække døren i.
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