Jeg har selv prøvet at lave et db udtræk på denne her måde:
sql = "SELECT * FROM refrencer,year where refrencer.dato=year.id and r_id="&sid&" order by år " 'response.Write sql' 'response.End() set rs = Conn.Execute(sql)
Det gav ikke lige det jeg ville frem til, da der nu kommer et årstal ud hver gang det kommer en refence.
Det ser sådan her ud.
2007 ref
2007 ref
Osv.
Det jeg gerne ville var at udskrive mine referencer i nogle grupper sådan at de bliver samlet under forskellige årstal.
Noget i stil med det her
2007 ref1 ref4
2008 ref3 ref5
2009 ref2 ref6
Håber dette er forståligt på forhånd tak for hjælpen.
Det du søger kan ikke løses vha SQL alene - selvfølgelig skal din SQL inkludere en ORDER BY, men resten skal håndteres i din ASP-kode. Benyt fx en variabel til at holde styr på hvilkten årstal du er i gang med at udskrive - indeholder variablen det samme årstal som den record du er ved a behandle udskriver du ikke årstallet, ellers udskriver du årstallet og opdaterer din variabel.
jeg fik vist lige hænderne op lidt for tidligt da det endnu ike virker efter hensigten, da den nu kun udskiver en reference godt nok under det rigtige årstal
medmindre du laver fx en Stored Procedure og danner dit eget specifikke resultat derinde skal du som tidligere skrevet håndtere udskrivning i ASP som foreslået i #4
kan det prøve; gruppen (something) udskrives kun hvis den er forskellig fra den sidst udskrevne gruppe (var) - det øvrige indhold under gruppen udskrives altid (otherstuff). For at det giver mening skal det hele (pånær var = "") ind i en løkke.
for at løse problemet må vi jo indsnævre mulighederne for hvor problemet kan ligge - derfor forsøger jeg at finde ud af om det resultat databasen returnere er det ønskede resultat eller ej. Gør databasen ikke det er det din SQL vi skal kigge på og ikke kode.
Med hvis man prøver at fjerne GROUP BY yid DESC så skriver den også alle refencerne ud under det rigtig årstal men skriver bare 2007 ud for hver gang der kommer en ny REF.
<% sql = "SELECT * FROM s_menu where s_id="&sid set rs = Conn.Execute(sql) do until rs.eof%>
<%=rs("title")%><br /><br />
<% rs.movenext loop
%>
<%
sql = "SELECT * FROM refrencer inner join year on year.yid=refrencer.dato WHERE r_id="&sid&" ORDER BY dato ASC" 'response.Write sql' 'response.End() set rs = Conn.Execute(sql)
var = "0"
do until rs.eof%>
<%
if cint(var) <> cint(rs("dato")) then response.write rs("dato") var = rs("dato") end if response.write rs("år") %>
er det ikke lidt dobbeltkonfekt? årstallet er vel nok?
anyway - jamen, så virker scriptet jo også ud fra hvad jeg kan se; tallene 1 og 2 udskrive én gang hver fordi de står inde i din if-sætning og årstallet samt selve referencen udskrives hver gang fordi de står uden for if-sætningen. Skal det være anderledes må du sætte koden op ud fra hvad der skal udskrives - fx årstallet ind i if-sætningen.
Ja det kan jeg godt se nu virker det jo som det skal det er hvis bare mig der har været noget forvirret.
Jeg skal hvis til at øve mig i noget íf or else.
Men vad var det nu lige denne del if sætningen betyder??
if cint(var) <> cint(rs("dato")) then
mange tak for hjælpen
Jeg kan lige lave et nyr spørgsmål så du kan få point.
Jeg har nemlig også et andet spørgsmål.
Her er koden som den ser ud nu
<%
sql = "SELECT * FROM refrencer inner join year on year.yid=refrencer.dato WHERE r_id="&sid&" ORDER BY år ASC" 'response.Write sql' 'response.End() set rs = Conn.Execute(sql)
var = "0"
do until rs.eof%>
<%
if cint(var) <> cint(rs("dato")) then response.write rs("år") var = rs("dato") end if
dokumentation er vist et af mine svage punkter - men kort kan det vel skrives om if-sætningen sådan; sammenligner dato på foregående værdi, hvis forskellig så udskriv årstal.
Point skal gives i et nyt spm da dette allerede er lukket.
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.