ACCESS VBA of Expressie: Totalen berekenen per kwartaal via keuzelijst.

Status
Niet open voor verdere reacties.
Nog een opmerking (was ik vergeten te melden): de tabel [tbl_medewerker] is een gekoppelde tabel, en die zit er dus niet bij. Ik maak de procedure zonder die gegevens. Maar die kan je er zelf wel bij maken denk ik.
 
Worp nr 3: :) Bekijk bijlage test_uren_uitvoerder_v3.zip

1. (meer een opmerking overigens) Je hebt de tekstvelden niet hernoemd naar [Uren1], [Uren2] etc. Dat is wel nodig. I.c.m. dat, moet je de tag ook nog aanpassen: i.p.v. "UITVOERDER_UREN" moet je de categorie er bij zetten, bijvoorbeeld zo: "UITVOERDER_UREN|NU". In combinatie met de standaardnamen, kun je dan veel makkelijker de categorie en inhoud plaatsen.

In deze velden zijn alle benamingen aangepast zoals gevraagd. Ik zal het foutief geïnterpreteerd hebben met je vorig schrijven.
Ook alle tags zijn aangepast met .....|type_uur.

Je hebt een blok "Ingave / Opvolging speciale prestaties". Die zijn niet gekoppeld aan een veld. Worden die wel ingevuld, en moeten die dus ook worden meegenomen in de procedure? Lijkt mij eerlijk gezegd van wel.

Deze was ik inderdaad vergeten te doen en is bij deze rechtgezet.

Hier alvast de kruistabelquery waarmee je een (totaal) overzicht kan maken.

Heb deze uitgevoerd en werkt doch één opmerking: de ID-UITVOERDER wordt niet weergegeven. Het totaal van de uitvoerder wel.

Nog een stukje code, dat ik nu in je db zet. Je hebt een knop btnAnnuleren in je db gezet om de tekstvakken leeg te maken. Daarvoor gebruik je een code die, als je hem zou printen, gerust gebruikt kan worden om een kamer te behangen zo lang. Door de tekstvakken een uniforme naam te geven, zoals ik had aanbevolen, kan je die hele procedure terugbrengen tot:

Inderdaad het is zoals je schreef. Dus ik heb het behangpapier er maar allemaal afgetrokken en vervangen door een pittoresk schilderijtje :).
Ik ben tot [Uren133] uitgekomen.


Nog een opmerking (was ik vergeten te melden): de tabel [tbl_medewerker] is een gekoppelde tabel,

In V3 zit geïmporteerde tabel i.p.v. de gekoppelde tabel.
 
Laatst bewerkt:
Hier zit alvast een werkend voorbeeldje op basis van de eerste 4 dagen van de lijst. De rest kun je er zelf denk ik wel bij bedenken. Ik heb nog niet gekeken naar je nieuwe versie; als die veel verschilt zal ik die verschillen wel proberen te verwerken.
 

Bijlagen

  • test_uren_uitvoerder_v3.zip
    117,1 KB · Weergaven: 31
Ik werk jou versie van form verder af en importeer deze in mijn database. Blijkbaar ik er in geslaagd txt-benamingen foutief te benamen.
Ik heb verticaal gewerkt in plaats van horizontaal . Dit heb ik gemerkt toen ik de VBA van cmdOpslaan bekeek.

Zodra alles bewerkt stuur ik je een nieuwe versie door.
 
Ik heb de tags weer veranderd, want de ‘dubbele’ zijn niet nodig , bedacht ik me later. Alles moet toch in hetzelfde veld worden weggezet, alleen de categorie wijzigt. Ik heb daar ook de sleutel en het koppelveld van veranderd, omdat dat voor mij makkelijker en sneller was. Het maakt ook niet zoveel uit wat je opslaat in dat veld.
 
Nog een vraagje. Ik vermoed dat er een foutje in je formule zit of ben ik verkeerd?
Code:
Case 1 To 19
                    iDag = 1
                Case 20 To [COLOR="#FF0000"]28[/COLOR]
                    iDag = 2
                Case [COLOR="#FF0000"]29[/COLOR] To 57
                    iDag = 3
                Case 58 To 76
                    iDag = 4
                Case 77 To 95
                    iDag = 5
                Case 96 To [COLOR="#FF0000"]124[/COLOR]
                    iDag = 6
                Case Else
                    iDag = 7

Volgens m'n overzichtlijst zou het zo moeten zijn. Bekijk bijlage txt_uren_overzicht.pdf
Code:
Case 1 To 19
                    iDag = 1
                Case 20 To [COLOR="#0000FF"]38[/COLOR]
                    iDag = 2
                Case 39[COLOR="#0000FF"][/COLOR] To 57
                    iDag = 3
                Case 58 To 76
                    iDag = 4
                Case 77 To 95
                    iDag = 5
                Case 96 To [COLOR="#0000FF"]114[/COLOR]
                    iDag = 6
                Case Else
                    iDag = 7
 
Laatst bewerkt:
Kon je wel eens gelijk in hebben. Het is een tijd geleden dat ik op school de tafel van 19 moest opdreunen voor de klas :). Die hogere varianten heb ik sowieso niet getest.
 
Worp nr 4 Bekijk bijlage test_uren_uitvoerder_v4.zip

De form werkt dat is het belangrijkste. Doch het volgende heb ik geconstateerd.
De dag-invoer blijft staan na opslaan wat verwarrend is. Dus na het opslaan (jouw vba) heb ik tevens jouw formule bijgezet om alle uur-velden blanco te maken.
Als alle dag-uur-velden blanco zijn dan verdwijnen alle dag-totalen (blauwe velden), alhoewel deze met Nz-formules is aangemaakt. Dus ook het week-totaal geeft dan een foutmelding.
Als ik dan een nieuwe week selecteer voor een nieuwe input geeft het dag-totaal een #Fout! melding, dus ook het week totaal en kan ik niet opslaan.
In de meeste gevallen wordt de vba-editor geopend met foutmelding.
Telkens de form afsluiten en opnieuw starten brengt soelaas maar dit kan de bedoeling toch niet zijn.

Ik heb her en der al aan het zoeken geweest voor een oplossing en uit geprobeerd maar helaas.

Heb jij hier een oplossing voor aub ?
 
De totaalberekeningen maken gebruik van niet-gebonden tekstvakken. Die zijn leeg (“”) of hebben een nulwaarde (Null). Velden met de laatste ‘inhoud’ kun je blijven optellen, velden met “‘ niet. Dus je zult je formules moeten aanpassen die de fout genereren. Zodat ze geen lege velden meer proberen op te tellen.
Sowieso heeft het opslaan van optellingen geen zin, die totalen maak je met een query.
 
De form werkt dat is het belangrijkste. Doch het volgende heb ik geconstateerd.
De dag-invoer blijft staan na opslaan wat verwarrend is.

Ik heb dit tijdelijk opgelost dat de form uitvoerder_uurregistratie na elke week-input afsluit.
Misschien wat meer werk, hopelijk vindt ik her of der daar wel een oplossing voor.


Kunnen we nu beginnen met het terug ophalen van gekozen historiek en deze in de form plaatsen volgens juiste tekst-veld?
Ik zou helemaal niet weten hoe hier aan te beginnen.
 
Laatst bewerkt:
Je kunt de velden gewoon leegmaken hoor met een loopje. Hoef je het formulier niet voor te sluiten. Het zijn tenslotte niet-gebonden tekstvakken, dus tenzij je ze leeg maakt, blijven ze hun waarde houden.
 
Kan je me helpen met een functie dat bepaald hoeveel elk uur-type kost.
Zulk een functie zal me veel tijd en energie bij aanmaak van forms met berekeningen en rapporten. (Van functies heb ik totaal geen kaas gegeten).

Elk uur-type dat gefactureerd kan worden is afhankelijk van de id-uitvoerder: zijnde de uitvoerder zijn basistarief en de uitvoerder zijn basistarief+ %-toeslagen volgens uur-type.
Elk uur-type dat niet gefactureerd kan worden maar wel centen kost aan de firma: zijnde uitvoerder zijn maandelijkse loonkost minus het aantal uren per maand.

Ik heb dit weergegeven in een Excel om het te verduidelijken. Bekijk bijlage access_urrtypes_vs_waarde.xlsx
(gele velden kunnen gefactureerd worden , de oranje velden zijn niet factureerbaar en de blauwe velden kosten de firma niets).

In elke tabel: tbl_werf_uitvoerder_loon en tbl_uitvoerder_uurregistratie is de ID van de uitvoerder vermeld. [ID_UITVOERDER]
 
Een functie lijkt mij niet zo,handig; ik zou dat veld gewoon in de tabel opnemen. Dan kun je er gelijk mee werken en rekenen.
 
Nog een laatste vraag, dan kan ik dit draadje afsluiten.

Je sprakt eerder over het terug oproepen van gegevens.
Je bent goed bezig! . Ik zal de db zo bekijken, en de code voor je er bij zetten. Als alles gedaan is zoals je zegt, is dat een simpele routine. Ook het ‘teruglezen’ is dan simpel, want dan gebruik je eigenlijk de omgekeerde weg.
.

Kan je me hiermee helpen aub.
 
Laatst bewerkt:
Beste Michel,
Heb je voor deze routine al tijd gehad aub.
Met dank.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan