webForumDet fria alternativet

Kalenderfråga

ASPur ASP

9 svar · 365 visningar · startad av magnusfeldth

magnusfeldthMedlem sedan jan. 20034 480 inlägg
#1

jag håller på att göra en kalender som skall vara uppbyggd på följande sätt:

- Den kollar dagens datum och ser om någon post finns som skall gälla för dagens datum. Om så är fallet, skrivs denna ut - finns det flera skrivs flera ut.

Därefter kontrollerar den de närmaste 7 dagarna. Den kollar om något finns för respektive dag och skriver i så fall ut dem.

Så här ska det se ut ungefär:

8:e maj (<--- den biten är redan fixad)
Idag: Pajkastning.
Kom och kasta paj
(om det finns flera event denna dag listas de också på samma stil, rubrik + förklaring)
------------------------------
11/12 | - Potatisskalning
- Räkrensning
-------------------------------
12/12 | - Tvätta sockor
-------------------------------
13/12 | - Vaxa katten
--------------------------------
14/12 | (<------- finns ingen info skrivs bara datum ut)
--------------------------------
15/12 | - Räkna maskrosor på fotbollsplan
- Trimma häcken
---------------------------------
16/12 | - Borsta tänderna

Datum är från början i formen 2003-11-14 18:32:32 i databasen, hur gör de om till 14/11-form? Och hur ska jag skriva loop-satserna och if-satserna? BITTE HILFE!

SebbeMedlem sedan jan. 20032 285 inlägg
#2

Hur menar du? Ska du bara ta ut idag + de sju följande dagarna?

/red Liten missuppfattning! Snart tillbaka med koden igen. ;)

SebbeMedlem sedan jan. 20032 285 inlägg
#3

Här är koden igen då...

For dtm = Date() To DateAdd("d", dtmIdag, 7)
  If dtm = Date() Then
    Response.Write(Day(Date()) & " " & MonthName(Month(Date()))
  Else
    Response.Write(Day(dtm) & "/" & Month(dtm) & " | ")
  End If

  strSQL = "SELECT text, rubrik FROM tabell WHERE FormatDateTime(datum, 2) = #" & dtm & "#"
  Set objRS = objConn.Execute(strSQL)

  If NOT objRS.EOF Then
    If dtm = Date() Then
      Response.Write("<br>Idag:<br>")

      Do Until objRS.EOF
        Response.Write(objRS("rubrik") & "<br>" & objRS("text") & "<br>")
        objRS.MoveNext
      Loop
    Else
      Do Until objRS.EOF
        Response.Write("- " & objRS("rubrik") & "<br>")
        objRS.MoveNext
      Loop
    End If
  End If

  Response.Write("<br>")
  Set objRS = Nothing
Next
magnusfeldthMedlem sedan jan. 20034 480 inlägg
#4

Felmess:

Kompileringsfel i Microsoft VBScript (0x800A03EE)
')' förväntas.
/hhgspunktse/hhgs/index.asp, line 649, column 59
Response.Write(Day(Date()) & " " & MonthName(Month(Date()))
----------------------------------------------------------^
@ndersMedlem sedan juni 200032 969 inlägg
#5

Då är det bara att räkna lite parenteser.

Engine^Medlem sedan dec. 20003 887 inlägg
#6

Så lägg till en parantes...

Response.Write (Day(Date()) & " " & MonthName(Month(Date()))) [blue]' <---')' förväntas.[/blue]

[blue]'eller ta bort en parantes:[/blue]
Response.Write Day(Date()) & " " & MonthName(Month(Date()))
magnusfeldthMedlem sedan jan. 20034 480 inlägg
#7

Fortsättande fråga:

Jag använder följande SQL-sats för att få fram posterna för de närmaste 6 dagarna.

<%	

Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/hhgsdb.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")
    Visa = "SELECT * FROM Kalender WHERE datediff('d',datum,date()) = 0"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>

Nu vill jag få ut formatet i den stilen som jag skrivit ovan, alltså att den skriver ut de närmaste dagarna i stilen
dag/månad (18/11)
Jag vill alltså att datorn loopar ut de närmaste sex dagarna, och där dagarna matchar innehållet i databasen skriver den ut dem enligt formatet:

18/11 - Event 1
- Event 2
--------------------
19/11 - Event 3
-------------------
20/11 - Event 4
-------------------
21/11
-------------------
22/11 - Event 5

SebbeMedlem sedan jan. 20032 285 inlägg
#8

Och nu skriver den ut hur? :o

magnusfeldthMedlem sedan jan. 20034 480 inlägg
#9

så här skriver jag nu:

  <%	

Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("db/hhgsdb.mdb")

	Set RecSet = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM Kalender WHERE datum>=dateadd('d',1,date()) and datum < dateadd('d',7,date()) order by datum"
Set RecSet=Connect.Execute(strSQL)
    %>
    
    <% 
    
    For lngDay=1 to 6
    datDate=DateAdd("d",lngDay,Date())
    datNext=DateAdd("d",lngDay+1,Date())%>
    <%= RecSet("Datum") %><br>
    <% Do
        If RecSet.EOF Then Exit Do
        If RecSet("datum")>=dateNext Then Exit Do %>
        <%=RecSet("Rubrik")%><br>
        <% RecSet.MoveNext
    Loop
Next

%>

<% Recset.Close
Connect.Close

Set Recset = Nothing
Set Connect = Nothing
%>

men nu bara den loopar samma event... vad är felet?

SebbeMedlem sedan jan. 20032 285 inlägg
#10

Gjorde om min kod lite, och som den är nu funkar den i alla fall när jag testade den. :)

For dtm = Date() To DateAdd("d", Date(), 6)
  If dtm = Date() Then
    Response.Write(Day(Date()) & " " & MonthName(Month(Date())))
  Else
    Response.Write(Day(dtm) & "/" & Month(dtm) & " | ")
  End If

  strSQL = "SELECT [text], rubrik FROM tabell WHERE CDate(Year(datum) & ""-"" & Month(datum) & ""-"" & Day(datum)) = #" & dtm & "#"
  Set objRS = objConn.Execute(strSQL)

  If NOT objRS.EOF Then
    If dtm = Date() Then
      Response.Write("<br>Idag:<br>")

      Do Until objRS.EOF
        Response.Write(objRS("rubrik") & "<br>" & objRS("text") & "<br>")
        objRS.MoveNext
      Loop
    Else
      Do Until objRS.EOF
        Response.Write("- " & objRS("rubrik"))
        objRS.MoveNext
      Loop
    End If
  End If

  Response.Write("<br>")
  Set objRS = Nothing
Next
142 ms totalt · 3 externa anrop · v20260731065814-full.c74b5be1
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)