webForumDet fria alternativet

villkor

ASPur ASP

30 svar · 785 visningar · startad av plelkes · sida 2 av 2

Frågan, av plelkes

Nu när jag har lyckats få ”ordning” på de svenska helgdagarna, tänkte jag vidareutveckla min almanacka. Det jag tänkte är att då en röd dag inträffar skall detta stå i min almanacka. På min almanacka- sida har jag dels en textruta för året och en dropdown-lista för val av månad. Om jag nu tex har nedanstående möjligheter: Tex: Om månad = 1 OCH dag = 1 skriv nyårsdagen Om månad = 1 OCH dag = 6 s

Läs frågan i sin helhet →
Medlem sedan mars 20015 287 inlägg
#21

Ingen fara.

Din är ide är kanon, det är bara det att det är ungefär precis vad jag håller på att försöka få plelkes till också.
Precis som i ditt script så har han några lösa funktioner som hittar någon speciell helg, samt en del andra "givna" helger, julafton mfl.

Jag tycker alltså också att han bör samla alltihop i en funktion som förslagsvis returnerar vilken helg det är. :)

Medlem sedan mars 2002823 inlägg
#22

nicclas: som solbulle skrev så har jag redan en funktion som beräknar officiella svenska helgdagar...
solbulle:
låter intressant med din idée om funktion, men jag tycker att det verkar vara himla komplicerat. Men på min nybörjarnivå, så tycker jag att det är svårt att få ihop funktioner...

Och se´n var det ju med

Man får väl komma på ett vettigt sätt att skicka in datumet dock

Men jag provar gärna att ge mig på funktionskonstruktion.. Naturligtvis bara om du/ni är beredda att så pedagogiskt som möjligt vägleda och lära mig

Medlem sedan mars 2002823 inlägg
#23

Funktionerna får vänta ett tag till.
För tillfället har jag fullt upp med if-then- else...

If intLastDayIndex =< 34 then
	loopslut = 34
	Else
	loopslut = 41
End If

For i = 0 to loopslut
If i mod 7 = 0 Then Response.Write "<TR>" 

If aKalender(i) < 1 Then
	Response.Write "<TD BGCOLOR=""#000000"">"
	Response.Write " _" & "</TD>"
Else

	If cint(manad) = Month(GeAllhelgon(ar)) AND aKalender(i) = Day(GeAllhelgon(ar)) then
		Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#FF0000"" SIZE=""2"">"
		Response.Write aKalender(i) & "</FONT>" 
		Response.Write "<P ALIGN=""CENTER""><FONT COLOR=""#FF0000"" SIZE=""2"">Alla helgonsdag</FONT></P>"
		Response.Write "</CENTER></TD>"
	End If
		If int(manad) = Month(NewYearday(ar)) AND aKalender(i) = Day(NewYearday(ar)) then
			Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#FF0000"" SIZE=""2"">"
			Response.Write aKalender(i) & "</FONT>" 
			Response.Write "<P ALIGN=""CENTER""><FONT COLOR=""#FF0000"" SIZE=""2""> Nyårsdagen</FONT></P>"
			Response.Write "</CENTER></TD>"
	End If
		If int(manad) = Month(trettondag(ar)) AND aKalender(i) = Day(trettondag(ar)) then
			Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#FF0000"" SIZE=""2"">"
			Response.Write aKalender(i) & "</FONT>" 
			Response.Write "<P ALIGN=""CENTER""><FONT COLOR=""#FF0000"" SIZE=""2""> Trettondagen</FONT></P>"
			Response.Write "</CENTER></TD>"
Else
	Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
	Response.Write aKalender(i)
	Response.Write "</FONT></CENTER></TD>"

End If
End IF
Next

If i mod 6 = 0 And i <> 0 Then 
	Response.Write "</TR>"
End If

I ovanstående koden har jag tex misslyckats...
Som ni ser det här om ni kollar på november och januari..
I nedanstående kod:

If intLastDayIndex =< 34 then
	loopslut = 34
	Else
	loopslut = 41
End If

For i = 0 to loopslut
If i mod 7 = 0 Then Response.Write "<TR>" 

If aKalender(i) < 1 Then
	Response.Write "<TD BGCOLOR=""#000000"">"
	Response.Write " _" & "</TD>"
Else

If cint(manad) = Month(GeAllhelgon(ar)) AND aKalender(i) = Day(GeAllhelgon(ar)) then
	Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#FF0000"" SIZE=""2"">"
	Response.Write aKalender(i) & "</FONT>" 
	Response.Write "<P ALIGN=""CENTER""><FONT COLOR=""#FF0000"" SIZE=""2"">Alla helgonsdag</FONT></P>"
	Response.Write "</CENTER></TD>"
Else
	Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
	Response.Write aKalender(i)
	Response.Write "</FONT></CENTER></TD>"

End If
End IF
Next

If i mod 6 = 0 And i <> 0 Then 
	Response.Write "</TR>"
End If

fungerar det som ni kan se för januari men inte för november

Snälla hjälp mig så att jag kan förstå hur if-then-else skall konstrueras!

Medlem sedan mars 20015 287 inlägg
#24

Det du gör nu blir svårare...
Du måste köra med Elseif där.
Sen som du ser så blir det en attans upprepning av kod.

Medlem sedan mars 20015 287 inlägg
#25
If aKalender(i) < 1 Then
	Response.Write "<TD BGCOLOR=""#000000"">"
	Response.Write " _" & "</TD>"
Else

	If cint(manad) = Month(GeAllhelgon(ar)) AND aKalender(i) = Day(GeAllhelgon(ar)) then
		Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#FF0000"" SIZE=""2"">"
		Response.Write aKalender(i) & "</FONT>" 
		Response.Write "<P ALIGN=""CENTER""><FONT COLOR=""#FF0000"" SIZE=""2"">Alla helgonsdag</FONT></P>"
		Response.Write "</CENTER></TD>"

	ElseIf int(manad) = Month(NewYearday(ar)) AND aKalender(i) = Day(NewYearday(ar)) then
		Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#FF0000"" SIZE=""2"">"
		Response.Write aKalender(i) & "</FONT>" 
		Response.Write "<P ALIGN=""CENTER""><FONT COLOR=""#FF0000"" SIZE=""2""> Nyårsdagen</FONT></P>"
		Response.Write "</CENTER></TD>"

	ElseIf  int(manad) = Month(trettondag(ar)) AND aKalender(i) = Day(trettondag(ar)) then
		Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#FF0000"" SIZE=""2"">"
		Response.Write aKalender(i) & "</FONT>" 
		Response.Write "<P ALIGN=""CENTER""><FONT COLOR=""#FF0000"" SIZE=""2""> Trettondagen</FONT></P>"
		Response.Write "</CENTER></TD>"
	
	Else
		Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
		Response.Write aKalender(i)
		Response.Write "</FONT></CENTER></TD>"
	End If

End If
Next

Fast inte är det vackert inte.

Medlem sedan mars 2002823 inlägg
#26

Sen som du ser så blir det en attans upprepning av kod.

tur att man kan göra en Marjasin (dvs klippa - klistra)

Fast inte är det vackert inte.

Men förlorar jag ngt i effektivitet ????

Jag fattar fortfarande inte hur jag skulle få till med funktion*snyft*

Kan ng ge ett fungerande exempel med de tre helgdagarna - tack

Medlem sedan mars 2002823 inlägg
#27

tilläg:
varför ElseIF ?
PS. : ditt förslag funkar naturligtvis!

Medlem sedan mars 2002823 inlägg
#28

Jag har funderat mycket kring funktionsfrågan. Men jag får inte till det hela.
Fick ju följande föörslag från solbulle:

function helg(datum)

If datum = GeAllhelgon(datum) then
helg = "Allhelgona"
Elseif datum = GeJulafton(datum) then
helg = "Julafton"
Else
helg = "vardag" ' eller helt tomt iofs.
End iF

End function

Men varje helgdag består ju av datum/funktion själva..
Typ allhelgona

function GeAllhelgon(ar)
dteDate = ar & "-10" & "-31"
dteDate = CDate(dteDate)
intWeekday = WeekDay(dteDate, vbSunday)
newdate = dateAdd("d", 7-intWeekDay, dteDate)
GeAllhelgon = newdate
end function

Och nyårsdagen

function NewYearday(ar)
  dteDate = ar & "-01" & "-01"
  NewYearday = CDate(dteDate)
End function
Medlem sedan mars 20015 287 inlägg
#29

Upprepandet av kod.

Onödigt, tar väl kanske inte så mycket kraft, men blir ju som du märker jobbigt att ändra i o lätt att det blir fel. Som nu.
Har du en funktion, kanske du tex även kan använda dig av den på andra sidor osv.

Jag försöker alltid att göra allting så skalbart som möjligt, smaksak iofs.

Angående mitt förslag med funktion, det som den gör är ju att "samla ihop" dina funktioner i ett block.
Så syftet med det är egentligen bara att optimera koden.

Varför ElseIf?

Jo, för att annars blir det ju som så att inget skrivs ut om inte något villkor uppfylls.

Medlem sedan mars 2002823 inlägg
#30

Så då har "den fula koden" inget effekt på hur bra sidan laddas eller andra funktioner?
För i så fall väljer jag nog hellre klippa -klistra metoden

Medlem sedan mars 2002823 inlägg
#31

fast klart - jag tar gärna emot hjälp och förslag på hur jag kan "sy ihop" allt till en funktion :birp

141 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)