webForumDet fria alternativet

Gruppera händelser via datum

ASP

16 svar · 595 visningar · startad av MrMojo

Medlem sedan okt. 200461 inlägg
Frågan#1

Om jag har en lista på evenemang och vill gruppera alla evenemang under endast en datummärkning istället för att visa datum för varje post. Hur gör man då?

Så som det ser ut nu:

----------------------------

2005-04-13
Evenemang 1

2005-04-13
Evenemang 2

2005-04-13
Evenemang 3

2005-04-15
Evenemang 4

----------------------------

Men om jag vill ha det så här:

----------------------------

2005-04-13
Evenemang 1
Evenemang 2
Evenemang 3

2005-04-15
Evenemang 4

----------------------------

Hur gör man då?

Lite kod:

<%=(rs_turne.Fields.Item("turne_datum").Value)%><br>
 <%=(rs_turne.Fields.Item("turne_bandnamn").Value)%> - <%=(rs_turne.Fields.Item("turne_info").Value)%>

Tacksam för idéer. Jag har kört fast.

Medlem sedan juni 2004533 inlägg
#2

Lägg datumet för posten i en variabel så att du kan jämföra med datumet när du ska visa nästa post. Om de inte är samma så visar du datumet.

Medlem sedan okt. 200461 inlägg
#3

Hur menar du då? Är lite kass på sånt... :r

Medlem sedan sep. 2003301 inlägg
#4
SELECT * FROM tbl GROUP BY eventDate

kanske ?

Medlem sedan juni 2004533 inlägg
#5

Så:

datCurrent = #1900-01-01#
Do ...
If datCurrent <> rs_turne("turne_datum") Then
datCurrent = rs_turne("turne_datum")
Response.Write datCurrent & "<br>"
End If
... visa eventet
Loop ...

Fraggel skrev:

SELECT * FROM tbl GROUP BY eventDate

kanske ?

Det fungerar inte. Du kan bara hämta ut de fält du grupperar på, och då får du bara ut datumen, inte några event.

Medlem sedan okt. 200461 inlägg
#6

Idiot :q som jag är så fattar jag inte hur tusan jag ska få det att funka. Provade med massor av varianter igår kväll, men utan något vettigt resultat. Fler förslag? Kanske en kod anpassad för såna som mig? :birp

Medlem sedan apr. 20031 660 inlägg
#7

HEJ!

Det som Guffa skrivit är helt rätt, har du testat med CDate runt värdena?
Testa även att skriva ut datumen, så du vet att du gör det du tror du gör!

Principen är:
- skriv ut rs("datum")
- skriv ut info
- för över rs("datum") till forra_datum
- hoppa till nästa rs
- jämför om rs("datum") är samma som forra_datum
- om ej samma, skriv ut "<br>"
- skriv ut rs("datum")
- skriv ut info
- osv

Medlem sedan aug. 2002733 inlägg
#8
[red]
temp = ""
do until rs.eof
      if temp <> rs("datum") then
            response.write("<p>" & rs("datum"))
      end if
            response.write(rs("text") & "<br>")
            temp = rs("datum")
rs.movenext
loop[/red]
Medlem sedan sep. 2003301 inlägg
#9

Detta borde vara enkelt att lösa med lite rekursivt tänkande...

har en snutt kod någonstans skall leta lite efter den...

Medlem sedan sep. 2003301 inlägg
#10

Hmm detta löser inte problemet direkt med det är ett steg i rätt riktning...

OBS detta är en test jag gjorde för ett tag sedan så den ser lite rörigt ut men det går att bena ut ;) .

Found it

<%
  Dim d1,d2,d3,d4,d5,dtemp
  Set d1 = Server.CreateObject("scripting.dictionary")
  Set d2 = Server.CreateObject("scripting.dictionary")
  Set d3 = Server.CreateObject("scripting.dictionary")
  Set d4 = Server.CreateObject("scripting.dictionary")
  Set d5 = Server.CreateObject("scripting.dictionary")
  
  Set d1("meny1") = d2
  Set d1("meny2") = d3
  Set d3("meny8") = Server.CreateObject("scripting.dictionary")
  Set d3("meny8")("meny9") = Server.CreateObject("scripting.dictionary")  
  Set d2("meny3") = d4
  Set d2("meny4") = d5
  Set d1("meny1")("meny4")("meny5") = Server.CreateObject("scripting.dictionary")
  Set d1("meny1")("meny4")("meny5")("meny6") = Server.CreateObject("scripting.dictionary")
  set dtemp = d1("meny1")
  set dtemp = dtemp("meny4")
  set dtemp("meny7") = Server.CreateObject("scripting.dictionary")
%>
<PRE>
<%
  Sub rec(ByRef o,i)
    Dim key,t
    For each key in o.keys
      For t = 0 To i
        Response.Write " "
      Next
      Response.Write "["& key &"]" & key & vbcrlf
      rec o(key),i+1
      Response.Write "[\"&key&"]" & vbcrlf
    Next
  End Sub
  rec d1,0
%>
</PRE>
Medlem sedan dec. 19996 721 inlägg
#11

Guffas exempel är alldeles utmärkt. Kör på det.

Medlem sedan okt. 200461 inlägg
#12

Ok, inget klart!

Har fastnat igen. Detta har jag legat lågt med, men nu måste jag få till det.

Jag bifogar min .asp fil. Finns det någon vänlig själ som kan fixa till koden i den som jag vill ha det?

Medlem sedan juni 200032 967 inlägg
#13

Bifoga koden i inlägget istället, och rensa bort det som är irrelevant.

Gör det inte onödigt svårt för folk att hjälpa till!

Medlem sedan okt. 200461 inlägg
#14

Ok, ursäkta min klantighet. :r

Först ut är min databaskoppling:

<%
Dim rs_turne
Dim rs_turne_numRows

Set rs_turne = Server.CreateObject("ADODB.Recordset")
rs_turne.ActiveConnection = MM_smm_STRING
rs_turne.Source = "SELECT *  FROM turneguide  WHERE turne_datum >  date()-1  ORDER BY turne_datum ASC"
rs_turne.CursorType = 0
rs_turne.CursorLocation = 2
rs_turne.LockType = 1
rs_turne.Open()
%>

Sen där jag hämtar datum och evenemang:

<%=(rs_turne.Fields.Item("turne_datum").Value)%><br>
<%=(rs_turne.Fields.Item("turne_bandnamn").Value)% - <%=(rs_turne.Fields.Item("turne_info").Value)%>

Tacksam för hjälp!

Medlem sedan okt. 200461 inlägg
#15

Ingen?

Medlem sedan juni 200032 967 inlägg
#16

Enligt Guffas exempel (och lite renskrivet, du behöver inte kladda till utskrifterna från recordsetet):

datCurrent = #1988-01-01#
While not rs_turne.EOF
	If datCurrent <> CDate(rs_turne("turne_datum")) then
		datCurrent = CDate(rs_turne("turne_datum"))
		Response.write datCurrent & "<br>"
	End if
	Response.write rs_turne("turne_bandnamn") & " - " & rs_turne("turne_info") & "<br>"
	rs_turne.movenext
Wend
Medlem sedan okt. 200461 inlägg
#17

Tack @anders! Du är en klippa! :birp

285 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
154 ms — hämta tråd, inlägg och bilagor (db)