29. juli 2003 - 14:06Der er
13 kommentarer og 1 løsning
2 x RS hvor den ene bestemmer hvad den anden skal
? underligt ? ja, det jeg vil have er at jeg har en side, hvor jeg får en lidste ud på (en lidste over datoer som er i en tabel) denne del er lavet. og virker sådan at når der er flere ens datoer i tabellen, så hiver den kun den ud en gang. og hopper vidre til næste.
PROBLEMET er så.:
Under hver dato skal der så komme en eller flere titler ud. altså:
Ja så må du lave lidt kode som holder styr på hvilken du er ved og det er en ny dato. Samt bruge GROUP BY så events på samme dato bliver samlet i et. Eks på koden:
<% SQL = "SELECT dato, titel FROM tablenavn GROUP BY dato ORDER BY dato ASC" Set rs = CONN.Execute(SQL)
dato = "" 'Bruges til at huske den dato man er ved do while not rs.EOF if dato <> rs("dato") then Response.Write rs("dato") Response.write "<br>" dato = rs("dato") end if
kan du hjælpe lidt når jeg har denne her kode? #=mine kommentar#
<% Response.Write "<table width=""590"" cellspacing=""0"" cellpadding=""0"" border=""0"">" ' Laver og udskriver SQL forespørgsel (rsSelDisDate) Set rsSelDisDate = Conn.Execute("SELECT DISTINCT(Biodato) FROM Film WHERE Biodato > #" & Date & "# ORDER BY Biodato")
If Not (rsSelDisDate.BOF AND rsSelDisDate.EOF) THen ' Gennemløb Recordset (rsSelDisDate) med en løkke Do Response.Write "<tr>" Response.Write "<td><li><b style=""font-size:11px; text-decoration:underline;"">" & FormatDateTime(rsSelDisDate("Biodato"),vbLongDate) & "</b></td>" Response.Write "</tr>" Response.Write "<tr>" Response.Write "<td>" Response.Write "<table align=""center"" width=""520"" cellspacing=""0"" cellpadding=""0"" border=""0"">" Response.Write "<tr>" Response.Write "<td>Her# her skal titlerne så komme#</td>" Response.Write "</tr>" Response.Write "</table>" Response.Write "</td>" Response.Write "</tr>" Response.Write "<tr>" Response.Write "<td height=""17""></td>" Response.Write "</tr>" ' Gå til næste Record i rsSelDisDate rsSelDisDate.MoveNext
' Fortsæt indtil rsSelDisDate er gennemløbet (EOF = End Of File) Loop While Not rsSelDisDate.EOF End If Response.Write "</table>"
#her under er det der bruges til at hive titlerne ud#
' Laver og udskriver SQL forespørgsel (rs) Set rs = Conn.Execute("SELECT Id, tDansk, tOriginal, biodato FROM Film WHERE Biodato > #" & Date & "# ORDER By Biodato")
' Gennemløb recordset (rs) med en løkke Do ' Hvis feltet "tDansk" er forskelligt fra tom If rs("tDansk") <> "" Then ' Indsætter indholdet fra rs("tDansk") til en variabel strTdansk = " <i>(" & rs("tDansk") & ")</i>" Else strTdansk = "" End If
Set rs1 = Conn.Execute("SELECT * FROM Anmeldelser WHERE RefId = " & rs("Id"))
If (rs1.BOF AND rs1.EOF) THen strRefId = " " Else strRefId = "<b><i><font color=""#FF0000"" size=""1"">Anmeldt</font></i></b>" End If
' Hvis feltet "RefId" er ligmed Id fra film tabellen If rs("Id") <> rs1("RefId") Then ' Indsæt font strRefId = " " Else strRefId = "<b><i><font color=""#FF0000"" size=""1"">Anmeldt</font></i></b>" End If
' Udskriver et link med teksten fra filmens originale titel Response.Write "<li><a href=""vis_film.asp?filmID=" & rs("Id") & """>" & rs("biodato") & " " & rs("tOriginal") & "</a>" & strTdansk & " " & strRefId
' Gå til næste record i rs rs.MoveNext
' Fortsæt indtil rs er gennemløbet (EOF = End Of File) Loop While Not rs.EOF
hov ja GROUP BY behøves ikke når man bruger ORDER BY dato også så er kolonnen dato jo sorteret rigtigt. Men DISTINCT skal væk for at få alle titler med ud:
Prøv med dette kode:
Response.Write "<table width=""590"" cellspacing=""0"" cellpadding=""0"" border=""0"">" ' Laver og udskriver SQL forespørgsel (rsSelDisDate) Set rsSelDisDate = Conn.Execute("SELECT Biodato, titel FROM Film WHERE Biodato > #" & Date & "# ORDER BY Biodato")
If Not (rsSelDisDate.BOF AND rsSelDisDate.EOF) THen ' Gennemløb Recordset (rsSelDisDate) med en løkke dato = "" Do Response.Write "<tr>" Response.Write "<td>" if dato <> rsSelDisDate("Biodato") then Response.Write "<li><b style=""font-size:11px; text-decoration:underline;"">" & FormatDateTime(rsSelDisDate("Biodato"),vbLongDate) & "</b>" dato = rsSelDisDate("Biodato") End If Response.Write "</td>" Response.Write "</tr>" Response.Write "<tr>" Response.Write "<td>" ' Her er titel tilføjet Response.Write "-" & rsSelDisDate("titel") Response.Write "</td>" Response.Write "</tr>" Response.Write "<tr>" Response.Write "<td height=""17""></td>" Response.Write "</tr>" ' Gå til næste Record i rsSelDisDate rsSelDisDate.MoveNext
' Fortsæt indtil rsSelDisDate er gennemløbet (EOF = End Of File) Loop While Not rsSelDisDate.EOF End If Response.Write "</table>"
? Det ændre ikke på selv koden, dog sorteres tekst felt forskelligt i forhold til et felt af type dato. Har du datoen i et tekstfelt? Så kan du bruger (Access) CDate(dato)
det har intet med dato at gøre - jeg ville benytte group by, ligesom, når man vælger kategori her på eksperten
Synes godt om
Ny brugerNybegynder
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.