webForumDet fria alternativet

kalender som visar matcher, tuneringar och träningar

ASP

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 →
Medlem sedan sep. 2004201 inlägg
#21

här kommer databasen

Medlem sedan juni 200032 967 inlägg
#22

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
Medlem sedan sep. 2004201 inlägg
#23

@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

Medlem sedan juni 200032 967 inlägg
#24

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
Medlem sedan sep. 2004201 inlägg
#25

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]
Medlem sedan sep. 2004201 inlägg
#26

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

Medlem sedan juni 200032 967 inlägg
#27

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?

Medlem sedan sep. 2004201 inlägg
#28

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"))
Medlem sedan juni 200032 967 inlägg
#29

Du måste lägga definitionerna av dStartDate och dEndDate i loopen, dvs under Do While Not rsBokad.EOF.

Medlem sedan sep. 2004201 inlägg
#30

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"))
Medlem sedan juni 200032 967 inlägg
#31

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.

Medlem sedan sep. 2004201 inlägg
#32

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?

Medlem sedan juni 200032 967 inlägg
#33

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.

Medlem sedan sep. 2004201 inlägg
#34

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)

Medlem sedan sep. 2004201 inlägg
#35

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
Medlem sedan juni 200032 967 inlägg
#36

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??

Medlem sedan juni 200032 967 inlägg
#37

Ja, så menar jag.

På vilket sätt funkar inte det då?

Medlem sedan sep. 2004201 inlägg
#38

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
Medlem sedan juni 200032 967 inlägg
#39

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]
Medlem sedan sep. 2004201 inlägg
#40

Microsoft VBScript runtime error '800a005e'
Invalid use of Null: 'CDate'

/ovaasp/skrivbordskalender100.asp, line 298

rad 298

dEndDate = Cdate(rsBokad("endDatum"))
305 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
167 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)