Databereik kopiëren per week, maand of jaar

Status
Niet open voor verdere reacties.

JohanRVT

Gebruiker
Lid geworden
2 mrt 2011
Berichten
555
Beste groep, onze dames zijn een beetje lui en zouden graag een bestaande registratieperiode (in dit geval van dagbezoeken in het Dagopvangcenter) in zijn geheel als basis gebruiken om een identieke periode te registreren in de toekomst. Als je weet dat dezelfde 20 à 30 mensen bijna altijd dezelfde dagen op bezoek komen is dat wel verstaanbaar. Daarom heb ik een klein systeempje ingebouwd die dat per week mogelijk maakt, maar ze zouden het graag per maand hebben. Probleem is dat bij de maandberekening de maandag van de ene maand niet overeenkomt met de datum van de maandag in de andere maand (optellen van eenvoudigweg 30 dagen gaat niet aangezien er maanden zijn met 28,29 30 of 31 dagen).
Ik laat ze dus momenteel de dagen uit een Tbl_DVC selecteren per week (bv week 51 van 2012) en die via een tussentabel Tbl_DVC_huidig aanpassen met nieuwe data (indien er dus een feestdag buiten het weekend valt moet er per registratie een bijkomende kost van 3.47 euro aangerekend worden in die toekomstige periode, valt die feestdag in het weekend dan mag die bijkomende kost niet aangerekend worden aangezien die al verwerkt is in de weekendprijs en die dan bijvoegen in de Tbl_DVC.
Enig idee om dit per maand en eventueel per jaar mogelijk te maken?
 

Bijlagen

Een aantal opmerkingen:
1. Je tabel [Tbl_datums] bevat nogal wat overbodige velden, zoals Dagnummer, weeknummer dag van de week etc. Al die gegevens kun je heel simpel herleiden uit de datum, dus opslaan in de tabel is volkomen overbodig.
2. Je vraagstelling is m.i. niet correct. Je huidige opzet is in beginsel niet verkeerd, omdat planningen (ook bij jullie) op weekbasis worden gemaakt. Je wilt ook een kopie maken op basis van een week, dus van Zondag t/m zaterdag, want dat is de basis voor je hele planning. Wat heb je er aan als je alleen de gegevens kopieert van woensdag t/m zaterdag als een maand op een woensdag begint? Je wilt de gegevens voor die eerste week toch ook kopiëren voor de Zondag t/m Dinsdag? En als de maand op Woensdag eindigt, heb je in die laatste week geen gegevens voor Donderdag t/m Zaterdag. In mijn ogen is dat behoorlijk onzinnig.
Wat mensen dus eigenlijk willen als ze een maand vooruit willen plannen/kopiëren, is 4 weken vooruit plannen. En als ze een jaar vooruit willen, of een kwartaal, willen ze 52 weken of 13 weken. Ergo: je hoeft dus alleen je weekprocedure aan te passen, zodat hij niet 7 dagen doet, maar een veelvoud daarvan. En dat bepaal je door de mensen een keuze te laten maken. Op basis van die keuze (Week, Maand, Kwartaal, Jaar) kopieer je dan een veelvoud van 7 dagen. Hoef je ook (bijna) niks aan je procedure te veranderen :)
3) Je code bevat een vreemde Update query, waarin je parameters definieert, die je vervolgens van je formulier afhaalt. Dat is een behoorlijke omweg, die veel beter en sneller kan:
Code:
        strSQL = "INSERT INTO Tbl_DVC_huidig ( Jaar, Week ) " & vbCrLf & _
        "SELECT *, Year([datum]) AS Jaar, CInt(Format([datum],'ww',2,2)) AS Week FROM Tbl_DVC " & vbCrLf & _
        "WHERE ((Year([datum])=" & Me.KzlJaarVan & ") AND (CInt(Format([datum],'ww',2,2)) = " & Me.KzlWeekVan & "))"
        CurrentDb.Execute strSQL, dbFailOnError
 
Ja die Tbl_datum staat vol met dinges en probeersels die in feite niet gebruikt worden (buiten die kolom feestdagen) maar dat is zo voor die ganse database.
Ik probeer het eens uit zoals je stelt en kom hier wel op terug mocht het niet lukken.
Alvast bedankt Michel
 
Ik probeerde een en ander uit maar per maand geraak ik er nog niet uit. Enig idee?
 

Bijlagen

Ik zal er vanavond eens naar kijken. In beginsel is het een kwestie van een extra lus inbouwen, die op basis van de duur wordt ingesteld. Je begint dus met een Recordset te definiëren voor de datums die gekopieerd moeten worden. Daarna komt dan die lus, die elke volgende beurt het aantal dagen (7) vermenijgvuldigt met het aantal keer dat de lus is doorlopen. De eerste keer is dat 1, dus 1 week. Vervolgens krijg je de lus 2*7, dus datums + 14, daarna 3*7, etc.
 
Deze week was de deadline voor de nieuwsbrief, en dan wordt de tijd krap. Ik had er al wel naar gekeken, en heel lastig is het allemaal niet. Kwestie van de juiste lus maken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan