Generera nytt ÅR (53 veckor 2009)

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Malmö
  • 2009-10-08 08:40

I mitt bokningsprogram kan jag generera Nytt År och får då fram ett veckoschema från måndag till söndag samt visas respektive veckonummer.

I mitt program avslutas år 2009 den 27/12 vecka 52.

Vid generering av år 2010 händer följande:
Året börjar på måndagen den 28/12 och blir helt rätt enligt föregående år. Problemet är dock att programmet skriver att första veckan är vecka 1 då det i verkligheten skall vara vecka 53 eftersom år 2009 innefattar 53 veckor.

Är detta en bugg i Fmp eller...

Det kan du kolla lätt: Gör en ny databas med två fält. Ett datumfält som vi kallar för datumet och ett beräkningsfält med funktionen WeekOfYear ( Datumet ).

Den funktionen skall enligt hjälpen: "Returnerar antalet veckor efter 1 januari under året för datum."

Prova sedan att göra en ny post och kolla med olika datum vilken vecka du får. Vanligen behöver du "klicka utanför" för att lämna/verkställa posten och få datumet beräknat.

Om denna nya databas gör rätt är det förmodligen fel i manuset du kör för att skapa ett nytt år.

Det finns även en lite mera avancerad funktion för att beräkna vecka. Som heter WeekOfYearFiscal som enligt hjälpen skall "Returnerar ett tal mellan 1 och 53 som motsvarar veckan som innehåller datum, med utgångspunkt i parametern startdag."

WeekOfYearFiscal ( datum ; startdag )

Där startdag är 1-7 och där är 1=söndag, 2=måndag. I USA är veckans första dag nämligen söndag.

Så prova med:

WeekOfYearFiscal ( Datumet ; 2 )

Då bör den räkna rätt.

Det står lite mera i hjälpen, speciellt att denna funktion kollar vilken vecka som innehåller minst fyra dagar ur en vecka. Så den kan med ett datum som är på andra sidan året, faktiskt returnera vecka 53 istället för vecka 1.

Senast redigerat 2009-10-08 10:40
  • Medlem
  • Malmö
  • 2009-10-08 15:51

Jag ska försöka göra som du nämner här ovan. Jag bifogar dock det befintliga manuset och kan kanske få ett svar på om detta kan kompletteras för att bli rätt.

• Visa alla
• Gå till post/sökpost/sida {Sista}
• Tilldela fält {TIDBOK::gRäknare;""}
• Loop
• Exit Loop if {GetAsNumber(TIDBOK::gRäknare) = 52}
• Ny post/sökpost
• Tilldela fält {TIDBOK::gRäknare); TIDBOK::gRäknare+1}
• End Loop
• If {WeekOfYearFiscal(GetAsDate(Year(TIDBOK::gStartDatum) & *-12-31") ; 2) = 53}
• Ny post/sökpost
• End If
#--Söker ut de 52 nya posterna (tomt i År) --
• Utför sökning {Spara}

Det fattas någon eller några rader va? Dels står det ju inte med när gStartDatum tilldelas, inte heller när fältet som kanske heter vecka får sitt värde.

Ovanstående manus tar bara och skapar 52 tomma poster och avslutar med att lägga till en post om ett villkor är uppfyllt. Villkoret är att om året i fältet gStartDatum kompletteras med -12-31 och det skulle vara lika med vecka 53, så skapas en post till. Villkoret lägger bara till en vecka till de 52 redan skapade om det är så att sista dagen på året inte är i vecka 52 utan i 53.

Så var den skriver att veckan är 52 eller 53 (det problem du upplever) står alltså inte i manuset ovan.

Hur gick det med detta?

  • Medlem
  • Malmö
  • 2009-10-15 09:18

Hej igen!
Har pillat lite med manusen men jag är tyvärr för lite påläst för att klara detta. Jag vet inte om jag vågar be om ett förslag?

/Kenn

Menar du ett prisförslag?

1
Bevaka tråden