Avatar billede sunweb Nybegynder
18. august 2005 - 11:58 Der er 33 kommentarer og
1 løsning

Grupering, kun vise den første i et sæt

Hejsa...

Jeg vil høre om der er nogen der kan gi mig en ide om hvordan jeg får nedenstående kode til kun at vise den første post af mit gruperings sæt.

Har et felt i en access database der hedder visning, som holder posterne sammen med eks. et 1 tal, et 2 tal osv.

Hvordan får jeg den til kun at vise den første post i sådan et sæt???

Min kode:
<%
select case request.querystring("ListProducts")
case ("15")
Response.Write "<b>Alle spejlene herunder fåes i op til 20 størrelser, se mere info!</b>"
Response.Buffer = True
SET Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/database.mdb")               
set rsVisningMax = Conn.Execute("Select Max(Visning) as maks_Visning FROM 15")
maks_Visning = rsVisningMax("maks_Visning")
rsVisningMax.close
set rsVisningMax = nothing

For i = 1 to maks_Visning
Sql = "Select * FROM 15 where Visning = " & i & " ORDER BY varenr ASC;"
set rs = Conn.Execute(SQL)
Do until rs.EOF

If blnBGColor = True Then
    strBGColor = "#FFFFFF"
    blnBGColor = False
Else
    strBGColor = "#E5EAEF"
    blnBGColor = True
End If
%>

<%
rs.movenext
loop
rs.close
set rs = nothing
Response.Write "<br><br>"
next
conn.close
set conn = nothing
end select
%>

Er der nogen derude der ville være filnk at hjælpe med det??

På forhånd tak!!
Avatar billede hiks Nybegynder
18. august 2005 - 12:43 #1
hej

jeg er ikke helt sikker på hvad du mener - men du kan jo undlade at lave en løkke der udskriver spejlene.

i = 1 'tager den første
i = maks_Visning 'den den største/sidste
'For i = 1 to maks_Visning
    Sql = "Select * FROM 15 where Visning = " & i & " ORDER BY varenr ASC;"
    set rs = Conn.Execute(SQL)
        Do until rs.EOF
   
            If blnBGColor = True Then
                strBGColor = "#FFFFFF"
                blnBGColor = False
            Else
                strBGColor = "#E5EAEF"
                blnBGColor = True
            End If
            rs.movenext
        Loop
    rs.close
    set rs = nothing
    Response.Write "<br><br>"
'next

/hiks
Avatar billede sunweb Nybegynder
18. august 2005 - 13:31 #2
oki, det ser meget brugbart ud - prøver det lige af..

For lige at forklare det færdigt, så har jeg min database med ca 1200 vare numre i på nogle spejle. Men der er kun ca 65 modeller, det vil sige at den ikke skal vise de 1200 men kun de 65. Og det havde jeg tænkt skulle ske ved at give de modeller der er ens et tal. Så eks. de første 14 får et 1 tal, de næste 14 et 2 tal osv.

Kan du følge mig? :)
Avatar billede sunweb Nybegynder
18. august 2005 - 14:00 #3
Hmm får det ikk rigtig til at virke, eller jo det gør det :) Men ikke på den rigtige måde, den jeg beskrev lige over her..

Kan du hjælpe mig, tror du?
Avatar billede hiks Nybegynder
18. august 2005 - 14:38 #4
ja det kan jeg jo nok. - Jeg skal lige være helt med her. Hvordan ved du hvilken model det er?

/hiks
Avatar billede sunweb Nybegynder
18. august 2005 - 14:43 #5
Den aller første kode var min forhenværende som skrev alt ud som du kan se. Jeg vil gerne have den til kun at skrive den første post ud i hver "sæt" - altså kun den første post med tallet 1 osv. Så man kun ser de 65 modeller og ikke alle de ca. 1200 poster som databasen indeholder.

Jeg har ingen ide om hvordan det skal laves, kan du hjælpe mig lidt??

På forhånd tak!!
Avatar billede hiks Nybegynder
18. august 2005 - 14:48 #6
ja men du er nødt til at forklare mig hvordan du skelner de forskellige modeller fra hinanden. Du har et varenr i din tabel - har du også et modelnr?

/hiks
Avatar billede sunweb Nybegynder
18. august 2005 - 14:55 #7
Nåhh på den måde:) Jeg har en masse informationer og selvfølgelig også varenummer. Men jeg skelner dem fra hianden med tal, så hver model har et tal. Der er 65 modeller i 14 størrelser, så de er kædet sammen med et tal.
Kan man så ikk bare få den til at vise den første, og kun den?
Fordi jeg har en side med mere information hvor alle størrelserne bliver vist, så jeg ville gerne undgå at de så også skulle vises på oversigten, det er jo ikk rigtig nødvendig.
Avatar billede hiks Nybegynder
18. august 2005 - 15:00 #8
jow - du ændrer din sql til følgende:

Select DISTINCT varenr, * FROM 15 ORDER BY varenr ASC;"

eller

Select varenr FROM 15 GROUP BY varenr ORDER BY varenr ASC;"

/hiks
Avatar billede sunweb Nybegynder
18. august 2005 - 15:17 #9
hmmm er ikk så heldig at det virker :) Men det er jo nok mig, hehe.. Man kan ikke select flere med en af de koder du skrev herover vel? Man kan kun select varenr ikk?
Avatar billede hiks Nybegynder
18. august 2005 - 15:25 #10
hmmm

er varenummeret unikt? har du 1200 unikke varenumre? og 65 forskellige modeller - men jeg forstår stadig ikke hvordan du kender modellerne fra hinanden. Er varenummeret en del af modelnummeret?

/hiks
Avatar billede sunweb Nybegynder
18. august 2005 - 15:37 #11
varenummeret er unikt, men det er mit id felt der nøgle. Jamen jeg kendder modellerne fra hianden med tal, som sagt - har en kolonne der hedder visning, kun til tal. Så altså de første 14 poster i databasen er samme model, MEN 14 størrelse de har så fået tallet 1 i kolonnen visning. Giver det mening - forstår du mig?
Avatar billede hiks Nybegynder
18. august 2005 - 15:51 #12
ja - det hjælper det vil sige at din tabel ser nogenlunde sådan ud:

tabel: 15

id, varenr, visning, navn, etc

du har ca. 1200 rækker i din tabel, 15, og vil gerne have vist bare et varenummer og een visning. Så er det jeg vil prøve således:

<%
select case request.querystring("ListProducts")
case ("15")
    Response.Write "<b>Alle spejlene herunder fåes i op til 20 størrelser, se mere info!</b>"
    Response.Buffer = True
    SET Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/database.mdb")               
    'åben recordsættet gruppér på varenummeret
    set rsVarer = Conn.Execute("Select varenr FROM 15 GROUP BY varenr ORDER BY varenr;")

    strBGColor = "#FFFFFF"
    if rsVarer.eof = False then
        While rsVarer.eof = False
            If strBGColor = "#FFFFFF" Then
                strBGColor = "#FFFFFF"
            Else
                strBGColor = "#E5EAEF"
            End If
            Response.Write rsVarer("varenr")
   
            rsVarer.Movenext
        Wend
    Else
        Response.Write "Ingen poster i db!"
    End if

    rs.close
    set rs = nothing

    Response.Write "<br><br>"

    conn.close
    set conn = nothing
end select
%>
Avatar billede sunweb Nybegynder
19. august 2005 - 08:47 #13
Så er jeg ved computeren igen :) Jeg har prøvet den kode du venligst har leveret i fuld skrevet tilstand, men det fungere ikk helt, får en fejl-500.

Men tror du er ved at følge mig, hvordan jeg godt kunne tænkt mig det..

Tabel: 15
Kolonner: id, varenr, visning, osv.
Poster: ca. 1200
Modeller: ca. 65

Et eksempel:
De første 14 poster i tabellen hedder id 1 til 14, de har alle sammen i kolonnen visning, fået et 1 tal - således at de hænger sammen.
De næsre 14 poster altså fra og med 15 til 29 har i kolonnen visning fået et 2 tal, så de gerne skulle "hænge" sammen.

Så var var det at jeg godt kunne tænke mig, at asp koden kun skulle udskrive den første post i et "sæt". Så det ville jo så være post 1 og post 15 osv. Man ville kunne se på siden.

Så der kun ville blive vidst de ca. 65 modeller på siden.
Det er faktisk ikk så svært, TROR jeg ikk :) Jeg er bare ikk en hej til det...

Takker for din hjælp indtil nu!!!
Avatar billede hiks Nybegynder
19. august 2005 - 09:02 #14
go morgen - prøv lige:

<%
select case request.querystring("ListProducts")
case ("15")
    Response.Write "<b>Alle spejlene herunder fåes i op til 20 størrelser, se mere info!</b>"
    Response.Buffer = True
    SET Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/database.mdb")               
    'åben recordsættet gruppér på varenummeret
    set rsVarer = Conn.Execute("SELECT visning, FIRST(varenr) AS FORSTE_POST FROM 15 GROUP BY visning ORDER BY FIRST(varenr);")

    strBGColor = "#FFFFFF"
    if rsVarer.eof = False then
        While rsVarer.eof = False
            If strBGColor = "#FFFFFF" Then
                strBGColor = "#FFFFFF"
            Else
                strBGColor = "#E5EAEF"
            End If
            Response.Write "Varenummeret: " & rsVarer("FORSTE_POST") & "<br>"
            Response.Write "Visning: " & rsVarer("visning") & "<br>"
            Response.Write "<hr>"
            rsVarer.Movenext
        Wend
    Else
        Response.Write "Ingen poster i db!"
    End if

    rsVarer.close
    set rsVarer = nothing

    Response.Write "<br><br>"

    conn.close
    set conn = nothing
end select
%>
Avatar billede sunweb Nybegynder
19. august 2005 - 09:28 #15
Det er jo fantastisk!!! Det virker bare perfekt!!!

Mange tak!

Go' weekend :)
Avatar billede hiks Nybegynder
19. august 2005 - 09:32 #16
fino - hvis du kunne tænke dig lidt mere viden omkring sql så læs evt.: http://www.eksperten.dk/artikler/495

- den har jeg skrevet og den er gratis :o) - så kan du nok komme lidt længere med dine sql sætninger alene og ved at teste i access.

også god weekend til dig...

/hiks
Avatar billede sunweb Nybegynder
19. august 2005 - 09:32 #17
hiks en sidste ting? Hvordan selecter jeg flere ting, uden det ødelægger noget? Ved godt at det ikke fungere nu, da jeg har selectet flere ting.


<%
select case request.querystring("ListProducts")
case ("15")
Response.Write "<b>Alle spejlene herunder fåes i op til 20 størrelser, se mere info!</b>"
Response.Buffer = True
SET Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/database.mdb")               
'åben recordsættet gruppér på varenummeret
set rsVarer = Conn.Execute("SELECT visning,jpg,beskrivelse,jpg_s,rank,id,navn FIRST(varenr) AS FORSTE_POST FROM 15 GROUP BY visning ORDER BY FIRST(varenr);")

strBGColor = "#FFFFFF"
if rsVarer.eof = False then
While rsVarer.eof = False
If strBGColor = "#FFFFFF" Then
    strBGColor = "#FFFFFF"
Else
    strBGColor = "#E5EAEF"
End If
%>
<table cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td>
        <a href='viewpicture.asp?picture=<%= rs("jpg") %>&beskrivelse=<%= rs("beskrivelse") %>' onclick="NewWindow(this.href,'myname','525','530','yes');return false"><img width="50" height="50" src="<%= rs("JPG_S") %>" alt="" border="0"></a>
        </td>
        <td width="65%" class="case"  bgcolor="<%= strBGColor %>" style="padding: 5px;">
        <b><%= rs("VareNr") %></b><br>
        <%= rs("Beskrivelse") %><br>                                                                   
        </td>
        <td width="20%" bgcolor="<%= strBGColor %>" align="right">
        <a href="default.asp?ListProducts=show14&menu=30&tabel=<%= rs("Rank") %>&ID=<%= rs("ID") %>&page=<%= rs("navn") %>">
        <img src="images/info.jpg" alt="Læs mere om dette produkt" border="0">
        </a>
        </td>
    </tr>
</table>
<%
rsVarer.Movenext
Wend
Else
Response.Write "Ingen poster i db!"
End if

rsVarer.close
set rsVarer = nothing

Response.Write "<br><br>"

conn.close
set conn = nothing
end select
%>
Avatar billede hiks Nybegynder
19. august 2005 - 09:35 #18
du kan skrive first(attributnavn) - FIRST returnerer den feltværdi fra den første post i dit recordset.

/hiks
Avatar billede sunweb Nybegynder
19. august 2005 - 09:37 #19
Bliver det så sådan her?? :

set rsVarer = Conn.Execute("SELECT visning FIRST(varenr,jpg,beskrivelse,jpg_s,rank,id,navn) AS FORSTE_POST FROM 15 GROUP BY visning ORDER BY FIRST(varenr);")
Avatar billede hiks Nybegynder
19. august 2005 - 09:40 #20
en ad gangen...

set rsVarer = Conn.Execute("SELECT visning, FIRST(varenr) AS 1varenr, FIRST(jpg) AS 1jpg, FIRST(beskrivelse) AS 1beskrivelse, FIRST(jpg_s) AS 1jpg_s, FIRST(rank) AS 1rank, FIRST(id) AS 1id, FIRST(navn) AS 1navn FROM 15 GROUP BY visning ORDER BY FIRST(varenr);")
Avatar billede sunweb Nybegynder
19. august 2005 - 09:49 #21
HEHE, ja det havde jeg så ALDRIG fået mig fusket frem til :)
Men får fejl i linie 2901 - og i den henter den bare jpg,beskrivelse og jpg_s ud. De findes selvfølgelig alle sammen i databasen.

Fejl:
Item cannot be found in the collection corresponding to the requested name or ordinal.

De findes alle sammen i databasen, det er ikke noget med det First halløj vel?
Avatar billede hiks Nybegynder
19. august 2005 - 09:53 #22
du skal huske at ændre din rsVarer("et-eller-anden-attribut") til det der er skrevet efter AS i sql'en! Ellers vil den ikke kunne finde det pågældende "item", som den skriver!

/hiks
Avatar billede sunweb Nybegynder
19. august 2005 - 09:55 #23
Nej det har jeg også gjort, altså eks. <%= rs("1jpg") %> ikk?? Det har jeg gjort ved dem alle sammen...

Hmm men det burde være en nem fejl at rette op på...
Avatar billede hiks Nybegynder
19. august 2005 - 09:59 #24
jow det er sådan.

Du er sikker på at du ikke mangler een enkelt? I den linie? :o)

/hiks
Avatar billede sunweb Nybegynder
19. august 2005 - 10:02 #25
hehe, nope skulle ja da ikke mene jeg gør :)

Linie 2901:
<a href='viewpicture.asp?picture=<%= rs("1jpg") %>&beskrivelse=<%= rs("1beskrivelse") %>' onclick="NewWindow(this.href,'myname','525','530','yes');return false"><img width="50" height="50" src="<%= rs("1jpg_s") %>" alt="" border="0"></a>
Avatar billede hiks Nybegynder
19. august 2005 - 10:12 #26
don't know - det ser rigtigt ud - og hvis du er sikker på at der er værdier i samtlige felter - sååå er det jo til at få grå hår over!

Prøv at se om du kan udelukke nogen af dem. Altså i stedet for linie 2901:

Response.Write rs("1jpg")

og så siden forsætte når du er sikker på at den henter ovenstående:

Response.Write rs("1jpg") & " " & rs("1beskrivelse")

osv osv

/hiks
Avatar billede sunweb Nybegynder
19. august 2005 - 10:16 #27
Hmmmm hvis jeg fjerner alle variablerne og kun lader den hente <%= rs("varenr") %> Melder den samme fejl, selvfølgelig  bare i en anden linie, da den eksisterend kode er fjernet...

Du ved at SQL sætningen er rigtig ikk??? :o)
Avatar billede sunweb Nybegynder
19. august 2005 - 10:17 #28
ja oki, <%= rs("1varenr") %> - den henter det stadigvæk ikk..
Avatar billede sunweb Nybegynder
19. august 2005 - 10:18 #29
Altså koden ser sådan her ud nu, og får stadig den samme fejl:

<%
select case request.querystring("ListProducts")
case ("15")
Response.Write "<b>Alle spejlene herunder fåes i op til 20 størrelser, se mere info!</b>"
Response.Buffer = True
SET Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/database.mdb")               
'åben recordsættet gruppér på varenummeret
set rsVarer = Conn.Execute("SELECT visning, FIRST(varenr) AS 1varenr, FIRST(jpg) AS 1jpg, FIRST(beskrivelse) AS 1beskrivelse, FIRST(jpg_s) AS 1jpg_s, FIRST(rank) AS 1rank, FIRST(id) AS 1id, FIRST(navn) AS 1navn FROM 15 GROUP BY visning ORDER BY FIRST(varenr);")

strBGColor = "#FFFFFF"
if rsVarer.eof = False then
While rsVarer.eof = False
If strBGColor = "#FFFFFF" Then
    strBGColor = "#FFFFFF"
Else
    strBGColor = "#E5EAEF"
End If
%>
<%= rs("1varenr") %>
<%
rsVarer.Movenext
Wend
Else
Response.Write "Ingen poster i databasen!"
End if

rsVarer.close
set rsVarer = nothing

Response.Write "<br><br>"

conn.close
set conn = nothing
end select
%>
Avatar billede hiks Nybegynder
19. august 2005 - 10:36 #30
hmm i tænkeboks. - det virker ikke helt logisk. :(

kan du prøve i stedet med denne sql i stedet:

set rsVarer = Conn.Execute("SELECT visning, MIN(varenr) AS 1varenr, FIRST(jpg) AS 1jpg, FIRST(beskrivelse) AS 1beskrivelse, FIRST(jpg_s) AS 1jpg_s, FIRST(rank) AS 1rank, FIRST(id) AS 1id, FIRST(navn) AS 1navn FROM 15 GROUP BY visning ORDER BY visning;")
Avatar billede sunweb Nybegynder
19. august 2005 - 10:44 #31
hmmm det virker skørt - det virker heller ikk... Kan det have noget at gøre med at min varenr indeholde bogstaver ala SP14434 ????? Og så kan SQL ikke arbejde med den?
Avatar billede hiks Nybegynder
19. august 2005 - 10:50 #32
nej det burde ikke have noget med det at gøre - FIRST tager den første - MIN tager den mindste. First burde under alle omstændigheder virke!

nå nu ved jeg hvorfor - jeg kalder recordsettet... rsVarer - du bruger rs

/hiks
Avatar billede sunweb Nybegynder
19. august 2005 - 10:56 #33
HAHA, NU VIRKER DET!!!! ;) Ej men det er jo helt kanon!!

Manglede den stump kode til 3 sektioner ud af 36 i et varekatalog.. nu kan jeg sq holde weekend :)

Mange mange tak for hjælpen hiks!!
Avatar billede hiks Nybegynder
19. august 2005 - 11:00 #34
fino - go weekend!

/hiks
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