här kommer databasen
kalender som visar matcher, tuneringar och träningar
137 svar · 3 703 visningar · startad av PLks · sida 2 av 7
Frågan, av PLks
hej wf jag har en tblKalender (Access 2003) med följande fält/egenskaper - id/räknare - datum/långformat - starttid/medellång tid - sluttid/medellång - aktivitet/text - motståndare - lokal/text Använder en formulär för att lägga in data. Datan vill jag sedan listapå rätt datum (dvs rätt tabellcell) Hur gör jag så jag täcker alla dess
Läs frågan i sin helhet →Nu börjar jag kanske, möjligen (fast tveksamt förstås) förstå vad det är du försöker dig på i else-blocket. Är det något sånt här du är ute efter?
Else
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
For dTempDate = dStartDate to dEndDate
Response.Write dTempDate & " " & rsBokad("aktivitet") & " i "
Response.Write rsBokad("lokal")
Next
End if
@nders skrev:
Nu börjar jag kanske, möjligen (fast tveksamt förstås) förstå vad det är du försöker dig på i else-blocket. Är det något sånt här du är ute efter?
Tack du är en klippa :bire - som vanligt!
Men varför tveksam?
Det hela skall mynna ut i följande (kodad på ren svenska)
[list=1]
[*]Om dagens datum = rsBokad("startDatum")?skriv ut aktivitet, lokal
[*]Om dagens datum = dTempDate skriv ut aktivitet, lokal
[/list=1]
jag trodde/tror att lättare att mixtra med ovanstående, när jag fått till utskrifterna
Men varför tveksam?
Jag var bara tveksam till att jag förstått hur du ville ha det. :)
Du menar alltså att du bara vill ha utskriften om dagens datum är rsBokad("startDatum") eller dTempDatum? Då räcker det nog med att kolla dTempDatum, eftersom loopen börjar på rsBokad("startDatum"), därmed har dTempDatum det värdet till att börja med.
Då kan det alltså se ut så här:
For dTempDate = dStartDate to dEndDate
If dTempDate = Date then
Response.Write dTempDate & " " & rsBokad("aktivitet") & " i "
Response.Write rsBokad("lokal")
End if
Next
Nu kommer vi till förklaringen ;)
Jag har en kalender av skrivbordstyp där man får dagens namn, om det finns helgdagar mm så printas dessa i rätt ruta…
Koden för pingstdagen är tex.
ElseIf int(manad) = Month(pingstd) AND iDag = Day(pingstd) then
Response.Write "</FONT></B>></TD><TD CLASS=""tdhelg"" VALIGN=""BOTTOM"">"
Response.Write "Pingstdagen
Det jag vill göra nu är med pseudokod
[list=1]
[*]Om dagens datum finns i rsBokat(”startDatum”)
[*]If Left(rsBokad("aktivitet"), 3) = "Trä" Then
Response.Write "<P>" & rsBokad("startDatum") & " " & rsBokad("aktivitet") & " "
Response.Write rsBokad("startTid") & " - "
Response.Write rsBokad("endTid") & " , " & rsBokad("lokal") & "<P>"
[*]ElseIf Left(rsBokad("aktivitet"), 2) = "Ma" Then
Response.Write rsBokad("startDatum") & " " & rsBokad("aktivitet") & " mot "
Response.Write rsBokad("Mot") & " i" & rsBokad("lokal") & ", kl "
Response.Write rsBokad("startTid") & "<P>"
,
[*]Else
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
For dTempDate = dStartDate to dEndDate
Response.Write dTempDate & " " & rsBokad("aktivitet") & " i "
Response.Write rsBokad("lokal")
Next
End if [*]akjlkfaölkölaf
[/list=1]
Nu har jag försökt sy ihop det hela, dvs få det utskrivet i kalendern delar avkoden(restän funkar)
<%
Response.Write "<CENTER><FONT SIZE =""4""><B>" & FirstVersal(MonthName(manad)) & ", " & ar & "</B></FONT></CENTER>"
Response.Write "<CENTER><TABLE CLASS=""table"" CELLSPACING=""0"" CELLPADDING=""1"">"
For iDag = 1 to DatePart("d", DateSerial(ar, manad+1, 0))
aDagar(iDag) = WeekDayName(DatePart("w",ar & "-" & manad & "-" & iDag))
iWeekDay = DatePart("w",ar & "-" & manad & "-" & iDag)
[blue] dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))[/blue]
Response.Write "<TR><TD CLASS=""tdleft"" ALIGN=""CENTER"" VALIGN=""BOTTOM""><CENTER><B><FONT SIZE=""5"">"
Response.Write iDag
Response.Write "</FONT></B></CENTER></TD><TD CLASS=""tdnamn"" VALIGN=""BOTTOM"">" & FirstVersal(aDagar(iDag)) & "</TD>"[blue]
Set minCon = Server.CreateObject("ADODB.Connection")
set rsBokad = Server.CreateObject("ADODB.Recordset")
minCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\ovaasp\db\upptaget.mdb")
strSQL =" SELECT * FROM upptaget ORDER by ID DESC"
rsBokad.Open strSQL, minCon, 3, 3
Do While Not rsBokad.EOF
If int(manad) = Month(rsBokad("startDatum")) AND iDag = Day(rsBokad("startDatum"))_
AND Left(rsBokad("aktivitet"), 3) = "Trä" then
Response.Write "</FONT></B></TD><TD CLASS=""tdcal"" VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
Response.Write ", kl " & FormatDateTime(rsBokad("startTid"), 4) & " - "
Response.Write FormatDateTime(rsBokad("endTid"), 4) & " , " & rsBokad("lokal")
ElseIf Left(rsBokad("aktivitet"), 2) = "Ma" Then
Response.Write "</FONT></B></TD><TD CLASS=""tdcal"" VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
Response.Write " mot " & rsBokad("Mot")
Response.Write " i" & rsBokad("lokal") & ", kl "
Response.Write FormatDateTime(rsBokad("startTid"), 4)
[B]Else For dTempDate = dStartDate to dEndDate Then[/B]
If int(manad) = Month(dTempDate) AND iDag = Day(dTempDate)
Response.Write "</FONT></B></TD><TD CLASS=""tdcal"" VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
Response.Write " i "
Response.Write rsBokad("lokal")
End if
Next
End if
rsBokad.MoveNext
Loop
rsBokad.Close
Set rsBokad = Nothing
minCon.Close
Set minCon = Nothing[/blue]
If cint(manad) = Month(GeAllhelgon(ar)) AND iDag = Day(GeAllhelgon(ar)) then
Response.Write "</FONT></B></TD><TD CLASS=""tdhelg"" VALIGN=""BOTTOM"">"
Response.Write "Alla Helgons dag"
Får följande fel
Microsoft VBScript compilation error '800a0401'
Expected end of statement
/ovaasp/skrivbordskalender100.asp, line 295
For dTempDate = dStartDate to dEndDate Then
---------------------------------------^
Demed blått skrivna raden är nya, övrigt har och fungerar.
Rad 295 är fetstilad
Hoppas ni kan hjälpa mig att sy ihop det hela
Bort med then.
For ska inte heller vara på samma rad som Else, men det kanske bara blev så när du klippte in koden?
Japp. blev lite fel copy/paste...
men nu får jag fel utskriften
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'rsBokad'/ovaasp/skrivbordskalender100.asp, line 271
rad 271
dStartDate = Cdate(rsBokad("startDatum"))
Du måste lägga definitionerna av dStartDate och dEndDate i loopen, dvs under Do While Not rsBokad.EOF.
och nu får jag
Microsoft VBScript runtime error '800a005e'
Invalid use of Null: 'CDate'/ovaasp/skrivbordskalender100.asp, line 285
rad 285
dEndDate = Cdate(rsBokad("endDatum"))
Vad betyder det när du har NULL i fältet endDatum i tabellen?
Prova dock att lägga de två raderna precis ovanför For dTempDate = dStartDate to dEndDate istället.
Vad betyder det när du har NULL i fältet endDatum i tabellen?
vet inte riktigt vad du menar..
men jag antar att det är när värde saknas?
Använder ju mig av denna fält enbart när detärfrågaom återkommande händelser---
Dessutom fungerade allt som önskevärt när jag bara hade utskrift från databasen?
Fungerar det inte om koden ligger som i http://www.webforum.nu/showthread.php?s=&postid=1045378#post1045378 ?
Edit: då menar jag alltså placeringen av de två rader vi diskuterar nu.
menar du
For dTempDate = dStartDate to dEndDate
If dTempDate = Date then
Response.Write dTempDate & " " & rsBokad("aktivitet") & " i "
Response.Write rsBokad("lokal")
End if
Next
Jag måste ju jämföra
If int(manad) = Month(dTempDate) AND iDag = Day(dTempDate)
för att det skall hamna på rätt rad (rätt tabellcell)
koden ser ut:
Else
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
For dTempDate = dStartDate to dEndDate
If int(manad) = Month(dTempDate) AND iDag = Day(dTempDate) then
Response.Write "</FONT></B></TD><TD CLASS=""tdcal"" VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
Response.Write " i "
Response.Write rsBokad("lokal")
End if
Next
rsBokad.MoveNext
Loop
Jag menar:
Om de två raderna som definierar dStartDate och dEndDate ligger precis efter Else, och precis innan dTempDate-loopen, fungerar det inte då?
Jag skriver tydligen extremt otydligt??
Microsoft VBScript compilation error '800a040e'
'loop' without 'do'
/ovaasp/skrivbordskalender100.asp, line 308
Loop
^
rad 296 - 310
Else
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
For dTempDate = dStartDate to dEndDate
If int(manad) = Month(dTempDate) AND iDag = Day(dTempDate) then
Response.Write "</FONT></B></TD><TD CLASS=""tdcal"" VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
Response.Write " i "
Response.Write rsBokad("lokal")
End if
Next
rsBokad.MoveNext
Loop
rsBokad.Close
rad 308:
Loop
Indentera ordentligt så ser du att du saknar ett End if.
Else
dStartDate = Cdate(rsBokad("startDatum"))
dEndDate = Cdate(rsBokad("endDatum"))
For dTempDate = dStartDate to dEndDate
If int(manad) = Month(dTempDate) AND iDag = Day(dTempDate) then
Response.Write "</FONT></B></TD><TD CLASS=""tdcal"" VALIGN=""BOTTOM"">" & rsBokad("aktivitet")
Response.Write " i "
Response.Write rsBokad("lokal")
End if
Next
[b]End if[/b]
Microsoft VBScript runtime error '800a005e'
Invalid use of Null: 'CDate'/ovaasp/skrivbordskalender100.asp, line 298
rad 298
dEndDate = Cdate(rsBokad("endDatum"))
