Avatar billede sunweb Nybegynder
16. august 2005 - 08:55 Der er 14 kommentarer og
1 løsning

Grupering i asp ved hjælp et tal i access kolonne

Hejhej...

Jeg tror det bliver svært at forklare, men prøver ad :)

Jeg har en produkt oversigt hvor man kan klikke på de enkelte produkter for at få mere information om det enkelte produkt, alt sammen ved hjælp af en Acees database.

Jeg er har en kolonne i databasen der hedder rank, som holder de produkter sammen, der er af samme slags, men i forskellige mål.

Så vil jeg jo gerne at når man klikker ind på mere information på et produkt, så vises det valgte produkts "makkere" nedenunder.

De er gruperet således, at alle 1'ere høre sammen, alle 2'ere osv.

Er der nogen der kan give mig en ide om hvordan dette gøres??

På forhånd mange tak!!!!
Avatar billede nielle Nybegynder
16. august 2005 - 09:08 #1
F.eks. noget i denne stil:

SQL = "SELECT * FROM produkter WHERE id=" & Request.Form("vareId")
rs = Conn.Execute(SQL)

Response.Write rs("vareNavn")

SQL2 = "SELECT * FROM produkter WHERE rank=" & rs("rank") & " AND id<>" & Request.Form("vareId")
rs2 = Conn.Execute(SQL2)

Do While Not rs2.EOF
    Response.Write rs2("vareNavn")
    rs2.MoveNext
Loop
Avatar billede sunweb Nybegynder
16. august 2005 - 09:23 #2
Okay, nice!!

Ser dette rigtig ud ? :

        <%               
        select case request.querystring("ListProducts")
        case ("show15")
        Set Conn = Server.CreateObject("ADODB.Connection")
        DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
        DSN = DSN & "DBQ=" & Server.MapPath ("../db/database.mdb")
        Conn.Open DSN
        strSQL = "Select * From " & Request.QueryString("tabel") & " Where Id = " & Request.Querystring("ID")
        rs = Conn.Execute(SQL)
       
        Response.Write rs("varenr")
       
        SQL2 = "Select * From " & Request.QueryString("tabel") & " WHERE rank=" & rs("rank") & " AND Id<>" & Request.Querystring("ID")
        rs2 = Conn.Execute(SQL2)
       
        Do While Not rs2.EOF
            Response.Write rs2("varenr")
            rs2.MoveNext
        Loop
        Conn.Close
        Set Conn = Nothing
        end select
        %>
Avatar billede nielle Nybegynder
16. august 2005 - 09:43 #3
Tja, det ser nu ikke helt tosset ud, men:

Det er lidt vild at bruge en Select-Case hvis der kun er en Case. Du burde hellere bruge en If-Then.

Rent sikkerhedemæssigt er det ikke nogen god ide at hente tabelnavnet via Request.QueryString("tabel"). En ondsindet hackertype bille kunne bruge dette til at indtaste et af dine andre tabel-navne (f.eks. dit kunde register) og så kigge i hvad der står der.

Hvis du bare bruger Response.Write rs("varenr") på den angivne måde så kommer der ikke noget mellemrumimellem posterne: ”125727236327” i stedet for ”125 72 7 23 63 27”.

Men ellers er det fint. :^)
Avatar billede sunweb Nybegynder
16. august 2005 - 09:55 #4
Oki tak! Jeg har 42 Cases :D Men det med sikkerheden, jeg bruger det kun på den måde i varesortimentet, og kunde logins lægger i anden db, og en helt anden struktur, der benyttes session, ssl og anden server til logins. Er det så ok at bruge tabel navnet i QueryString???

Jeg får en fejl i min linie 157, ovenstående kode starter i 757 - hmmm...

Får fejlen:

Microsoft VBScript compilation error '800a03f6'

Expected 'End'

/default.asp, line 157

Har jeg ikke afsluttet min nye kode her rigtig nok????


Takker mange gange for din hjælp!! :)
Avatar billede nielle Nybegynder
16. august 2005 - 10:07 #5
Jeg kan ikke finde nogen syntaks-fejl i den ovestående kode, så det må desværre være et andet sted det går galt. :^(

... og et svar :^)
Avatar billede sunweb Nybegynder
16. august 2005 - 10:08 #6
Det er bare det at det ikke var galt før, men først nu efter jeg har lavet det ballade her...
Avatar billede sunweb Nybegynder
16. august 2005 - 10:14 #7
Er det her virkelig rigtig:

WHERE visning=" & rs("visning") & " AND Id<>" & Request.Querystring("ID")

(Og jeg er med på at det hed rank før, men at der står visning nu) :)
Avatar billede nielle Nybegynder
16. august 2005 - 10:31 #8
Bortset fra at den første halvdel af din SQL-kommando mangler så ser det da rigtigt ud.

Under alle omstændigheder, så skyldes den fejl du får ikke at der er fejl i din SQL-sætning. Dette ville nemlig give dig en anden type fejlmeddelelse.
Avatar billede sunweb Nybegynder
16. august 2005 - 10:34 #9
Ja det ved jeg godt - sys bare det så forkert ud, men oki...

Men rart at vide det sidste der :) Tak
Avatar billede nielle Nybegynder
16. august 2005 - 10:52 #10
Hvor synes du at det ser forkert ud... Kunne du forklare lidt?
Avatar billede nielle Nybegynder
16. august 2005 - 10:59 #11
Hvis der var fejl i din SQL-sætning så ville det var din database som gave en fejlmeddelelse. I dette tilfælde er det derimod en ren ASP-fejl.

Fejlbeskeder fra databasen ser nogen lunde sådan her ud:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in SELECT statement.

/ditScript.asp, line 757 (linjen med: Conn.Execute(SQL))
Avatar billede sunweb Nybegynder
17. august 2005 - 07:17 #12
Hej igen idag nielle :)

Jeg har godt haft mine problemer med den stump kode fra igår, det virker helt fint på varenummeret, den viser fint - men når jeg eks. også gerne vil hente variablen r("beskrivelse") og rs("str") med, og vise dem - står jeg af..

<%
'Grupere varer fra databasen i sektion 15
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../db/database.mdb")
Conn.Open DSN
SQL = "Select * FROM " & Request.QueryString("tabel") & " WHERE id = " & Request.Querystring("ID")
rs = Conn.Execute(SQL)

Response.Write ""

SQL2 = "Select * From " & Request.QueryString("tabel") & " WHERE visning=" & rs("visning") & " AND Id <> " & Request.Querystring("ID")
Set rs2 = Conn.Execute(SQL2)

Do While Not rs2.EOF
    Response.Write rs2("varenr") & "<br>"
    rs2.MoveNext
Loop
%>

Håber du har et øjeblik til at se på det idag - vil gerne oprette det i en ny tråd, hvis det er !

Mvh
sw
Avatar billede nielle Nybegynder
17. august 2005 - 07:39 #13
God morgen :^)

Jeg er ikke lige klar over hvad du mener med at den giver dig problemer? Det er da lige ud af landevejen at udskrive dem:

<%
' Grupere varer fra databasen i sektion 15
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../db/database.mdb")

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open DSN

SQL = "SELECT varenr, beskrivelse, str, visning FROM " & Request.QueryString("tabel") & " WHERE id = " & Request.Querystring("ID")
Set rs = Conn.Execute(SQL)

' Response.Write "" - Sådan nogle linjer kode som denne gør absolut ingen ting andet end at sluge processotkraft
Response.Write rs("varenr") & " " & rs("beskrivelse") & " " & rs("str") & "<br>"

SQL2 = "SELECT varenr, beskrivelse, str FROM " & Request.QueryString("tabel") & " WHERE visning=" & rs("visning") & " AND Id <> " & Request.Querystring("ID")
Set rs2 = Conn.Execute(SQL2)

Do While Not rs2.EOF
    Response.Write rs2("varenr")& " " & rs2("beskrivelse") & " " & rs2("str") & "<br>"
    rs2.MoveNext
Loop
%>


Normalt ville man så pakke det ind i en table, eller lave noget med div's, for at få det til at stå pænt. Men den slags skal jo tilpasses til resten af siden, så det er lidt svært for mig at lave andet end en demo:

...

SQL = "SELECT varenr, beskrivelse, str, visning FROM " & Request.QueryString("tabel") & " WHERE id = " & Request.Querystring("ID")
Set rs = Conn.Execute(SQL)
%>
<table border="1">
<tr>
<td valign="top">
<% =rs("varenr") %><td>
<td valign="top"><% =rs("beskrivelse") %><td>
<td valign="top"><% =rs("str") %><td>
</tr>
<%
SQL2 = "SELECT varenr, beskrivelse, str FROM " & Request.QueryString("tabel") & " WHERE visning=" & rs("visning") & " AND Id <> " & Request.Querystring("ID")
Set rs2 = Conn.Execute(SQL2)

Do While Not rs2.EOF
%>
    <tr>
    <td valign="top"><% =rs2("varenr") %><td>
    <td valign="top"><% =rs2("beskrivelse") %><td>
    <td valign="top"><% =rs2("str") %><td>
    </tr>
<%
    rs2.MoveNext
Loop
%>
</table>
Avatar billede sunweb Nybegynder
17. august 2005 - 07:59 #14
Det er jo virkelig fantastisk :) Den bedste start på en morgen! Jeg har lavet et mindre varesystem, og det eneste jeg manglede var denne kode, den skal bruges 3 steder, og så er jeg stort set færdig :)

Nu mangler jeg kun at få mig fusket frem til, på oversigten over produkterne i den pågældende sektion, at den kun skal vise den første i "et sæt" - altså så den kune viser den første af alle 1'erne og den første af alle 2'erne.. Men det må jeg prøve at fuske mig frem til:)

Du skulle jo næsten ha flere point for din hjælp!!
Avatar billede nielle Nybegynder
17. august 2005 - 08:05 #15
Det behøves ikke :^)
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