26. marts 2015 - 11:46Der er
11 kommentarer og 1 løsning
Fraværskalender, gode ideér
Jeg håber der er nogen der kan komme med en del gode ideér til hvordan denne opgave kunne/skal løses.
Vi er et firma med ca. 50 medarbejdere med 8 afdelinger. I øjeblikket har vi et Excelark som er vores fraværskalender for et helt ferieår ad gangen. Dvs. der er 365 kolonner (365 dage), så man kan notere for hver dag og for hver person (rækker) hvad det er for et fravær man har. Det kan være ferie, omsorgsdag, kursus, orlov, afspadsering/Flex og barsel.
Det jeg har lavet er nøjagtig det samme i html. Den looper igennem 365 dage (for at vise en kalender), hvor den for hver dag kigger ned i databasen om der er helligdag eller om der skulle være et fravær for en medarbejder.
Nu er det jo en del forespørgsler den skal laves ned i databasen og det gør at det tager lidt tid at kommer igennem alle medarbejdere.
Og det er så her jeg har behov for nogle ideér til hvordan det her kan gøres meget hurtigere. Kan der optimeres på databasen (ms sql)? Kan der optimeres i den måde jeg henter data på? Kan der optimeres i den måde jeg laver min kalender i html?
Ved godt jeg ikke viser noget kode, men det er mere hvordan man kunne gribe opgaven an, så det tog kortest muligt tid at vise en fraværskalender for et ferieår - 1. maj til 30. april.
helligdage beregner du - ingen opslag der. Så har du en tabel i koden med dem. ét sql-kald med på navn og fravær - sorteret på navn og dato - og læg udtrækket i en tabel loop gennem medarbejdertabellen og hold oppe mod helligdags-tabellen, og udskriv fraværsdatoer. jeg har haft noget asp-kode, der beregner alle helligdage i et år - kan nok findes et sted igen...
Hvis du har aspkode til helligdage, så er jeg meget interesseret. Det kunne selvfølgelig spare for en del forespørgsler, for ikke at sige mange tusind forespørgsler.
asp-kode til kalenderside er her https://www.dropbox.com/s/zn8usbchj9gbl25/kalender.asp?dl=0 umiddelbart viser den en måned ad gangen - men med lidt omskrivning kan den lave alle helligdage i en tabel. Den har sågar MorsDag og Adventsdage med (lavet til en blomsterforretning oprindeligt).
Så har jeg fået din Helligdage function lagt ind i mit script og det gør selvfølgelig en forskel...kanon og takker, men den skal jo hen og lave 365 dage x 50 brugere = 18250 opslag for at hente alt fravær til min html tabel. Det tager ca. 2½ minut! Kan man lave noget ala 1. den trækker data ud fra database og lægger udtrækket i et array som det første. Det tager jo ikke mange sekunder. 2. herefter laves et For t=1 to antaldage (365) så kalender laves, når kalender generes og medarbejderID og dato findes i array skal der indsættes fravær
Kan man lave sådan noget? Eller har du en anden ide?
fravær hentes - skiftekode strSQL = "select * from fravaer ORDER BY navne ASC, datoer ASC" rst.Open strSQL, con, adOpenForwardOnly, adLockReadOnly if rst.eof then rst.close response.write "Intet fravær i året" else arr=rst.getrows() rst.close antal=ubound(arr,2) for i = 0 to antal ' her løber du igennem arr. Når der skiftes navn på person, så nyt ' underloop med fravær for den nye (dvs ny linje i udskrift). ' dage, der ikke er i arr skal også udskrives, men de er jo alm arbejdstid. ' arr(0,i) er første felt i tabeludtrækket, arr(1,i) andet felt osv... next end if
så ligger alle data i et array, så behandlingen må være hurtig.
Super, takker. Nu har jeg ikke arbejdet så meget med array. Håber du vil hjælpe. Det som er vigtigt at få ned i et array er: medarbejderID fraværID startdato på fravær slutdato på fravær godkendt
Kan godt se du har skrevet noget kode, men er lidt i tvivl om hvordan det lige skal stykkes sammen :)
Når array er laves skal kalender laves, der skal loopes fra 1 til 365, og hver dato skal tjekkes op imod startdato/slutdato, medarbejderID og godkendt. Passer den med den dato og medarbejderID den er kommet til skal fraværID puttes i kalender.
Jeg ville så nok danne en års-skabelon linje med alle dage og helligdage. Ud fra en kopi af denne ville jeg så markere en medarbejders fravær, og printe den. Så ny kopi, og næste medarbejder. Tror det er hurtigst på den måde. Evt først pr medarbejder omregne start/slut fravær til dagnumre i året, da overflytning til skabelon så er hurtigere.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.