ACCESS VBA of expressie Pipe (|) en split hoe te gebruiken?

Status
Niet open voor verdere reacties.

fde

Gebruiker
Lid geworden
31 aug 2017
Berichten
110
Ik heb een enkelvoudig formulier: frm_uitvoerder_kwartaalcijfers waar enkel niet-onafhankelijke tekst velden op staan om snel het benodigd cijfermateriaal weer te geven.

Momenteel gebruik ik hiervoor de volgende code:
Veld uren:
Code:
=DSum("[UITVOERDER_UREN]";"[tbl_uitvoerder_uurregistratie]";"[UITVOERDER_DATUM] between #2018/01/01# and #2018/03/31# AND [ID_UITVOERDER]= " & [txtIDUitvoerder])
txtIDUitvoerder wordt geselecteerd door een keuzelijst met invoervak (cboSelecteerUitvoerder)

Het probleem is dan dat ik met bovenstaande code alle verschillende uur-types (16 soorten) optel en dat is niet de bedoeling.


Ik heb in de record bron van de form twee kolommen samengevoegd: [UITVOERDER_UREN]&"|"&[UUR_TYPE.

Hoe ik deze nu moet splitsen om het juiste uur-type en het gepresteerde uur in de juiste tekstvelden te krijgen in combinatie met bovenstaande code?
Heb van alles uitgeprobeerd en uitgezocht maar helaas.

Kan iemand mij hiermee op weg helpen aub.
 
Laatst bewerkt:
Waarom heb je dat gedaan? In de recordbron van het formulier kun je de velden toch ook los opnemen? En spreek je jezelf niet tegen?
Ik heb een enkelvoudig formulier: frm_uitvoerder_kwartaalcijfers waar enkel niet-onafhankelijke tekst velden op staan
Een niet-afhankelijk formulier heeft geen recordbron. Ook niet nodig :).
 
De recordbron heb ik verwijderd. Daar had je gelijk in. Eigenlijk was het meer uit gewoonte dat ik het deed.

De query waar de samengevoegde kolommen in staan noemt: qry_uitvoerder_uurregistratie.
Ik wist niet of het nodig was maar ik heb dit met een update-query opgeladen naar de tbl_uitvoerder_uurregistratie: naam veld COMBI
 
Laatst bewerkt:
Maar wat is nu precies je vraag? Want die snap ik nog steeds niet. Je hebt dus een aantal tekstvakken op je formulier, en ik vermoed dat een van die tekstvakken de formule heeft uit bericht #1. Die overigens erg statisch is, die formule, maar dit terzijde. En je hebt dus een query waarin je twee velden samenvoegt in een veld. Daar gaat het dus qua begrip al mis, want ik zie daar de noodzaak niet van. Zeker niet als je die query gebruikt voor een keuzelijst, want dan kun je de velden makkelijk los gebruiken, en ook weer opvragen met cboKeuzelijst.Column(#). Dus een samengevoegd veld weer splitsen is daar helemaal niet nodig.
 
Eigenlijk wil ik volgende code toepassen. Maar meerdere argumenten tegelijkertijd werkt niet (geeft foutmelding).

Code:
=DSum("[UITVOERDER_UREN]";"[tbl_uitvoerder_uurregistratie]";"[UITVOERDER_DATUM] between #2018/01/01# and #2018/03/31# [COLOR="#FF0000"]AND [UREN_TYPE]="NU"[/COLOR] AND [ID_UITVOERDER]= " & [txtIDUitvoerder])

Misschien bestaat er een eenvoudig idee/oplossing ?
 
Er zit sowieso een foutje in je formule. Die zou er zo uit moeten zien, als je tenminste een tekstveld gebruikt.
PHP:
=DSum("[UITVOERDER_UREN]";"[tbl_uitvoerder_uurregistratie]";"
[UITVOERDER_DATUM] between #2018/01/01# and #2018/03/31# 
AND [UREN_TYPE]=""NU"" AND [ID_UITVOERDER]= " & [txtIDUitvoerder])
 
Ja, ik gebruik inderdaad een tekstveld.

Jammer genoeg geeft jouw code #Fout (staat te knipperen in m'n tekstveld).
't Zal me dunkt weeral geen simpele oplossing worden.
 
Vast wel, maar dan er wel een voorbeeldje van het formulier bij :)
 
Om een of andere duistere reden werkt het nu wel? Ik zal waarschijnlijk iets niet goed gedaan hebben.
Code:
=DSum("[UITVOERDER_UREN]";"[tbl_uitvoerder_uurregistratie]";"[UITVOERDER_DATUM]between #2018/01/01# and #2018/03/31# AND [UUR_TYPE]=""NU"" AND [ID_UITVOERDER]= " & [txtIDUitvoerder])

Ik heb een poging gedaan om het iets dynamischer te maken.
Code:
=DSum("[UITVOERDER_UREN]";"[tbl_uitvoerder_uurregistratie]";"year([UITVOERDER_DATUM])= [cboSelecteerJaar]  AND [UUR_TYPE]=""NU"" AND [ID_UITVOERDER]= " & [txtIDUitvoerder])
Deze formule geeft dan de som weer van het ganse jaar.

Hoe kan ik het beste de formule uitbreiden zodat de optelsom niet het ganse jaar weergeeft maar per kwartaal.
 
Laatst bewerkt:
Dan moet je in de keuzelijst uiteraard de kwartalen hebben staan en niet de jaartallen. Dat kwartaal gebruik je dan in je DSUM.
 
Zowel het jaartal als het kwartaal heb ik nodig.
Er zijn 4 kolommen op men form [JAAR] en Q1 t.e.m. Q4, doch de historiek gaat terug tot 2015.
Dus als ik een jaar selecteer zouden alle berekende cijfers moeten veranderen afhankelijk wat de desbetreffende uitvoerder in die geselecteerde periode/jaar heeft gemaakt.

Ik veronderstel dat ik dan 4 kolommen moet toevoegen aan m'n keuzelijst per kwartaal.
Maar hier houdt mijn Access kennis op: heb wel opgezocht en uit geprobeerd maar helaas.
Ik krijg die kwartalen niet netjes
 
Je zou ook een keuzelijst kunnen maken waarin je jaar en kwartaal combineert, dan ben je in één keer klaar. Die keuzelijst krijgt dan bijvoorbeeld deze opmaak: Expr: Format([aanmelddatum];"yyyyq").
En je DSUM wordt dan zoiets:
Code:
=DSum("[UITVOERDER_UREN]";"[tbl_uitvoerder_uurregistratie]";"Format([UITVOERDER_DATUM],"yyyyq")= " & [cboSelecteerJaar] & " AND [UUR_TYPE]=""NU"" AND [ID_UITVOERDER]= " & [txtIDUitvoerder])
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan