Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Access] VBA functie op datum

Pagina: 1
Acties:

  • maomanna
  • Registratie: Februari 2006
  • Laatst online: 21-11 13:42
Beste tweakers,

Inmiddels heb ik wel wat ervaring van MS Access, maar dat blijft bij de "normale" zaken. Van VBA geen idee.

Momenteel ben ik bezig om een database te maken ter controle of een personeelsdossier compleet is.
De basisfuncties werken prima. Maar is nog wat statisch en geeft een beperking.

Ik heb een aantal tabellen te weten:
- Werknemers (alle werknemers)
- Eisenlijst (Documenten die in het dossier zitten)
- tblVerplicht (tabel met functies en bijhorende documenten die in het dossier moeten zitten) (Booleans)

Met een code die ik gekregen heb, werkt het prima en krijg ik inzicht in hoeveel dossiers gecontroleerd zijn, en welke documenten per werknemer ontbreken.

Wat ik nu wil is, dat als de directie besluit dat vanaf bijv 1 september 2014 voor nieuwe medewerkers een document verplicht is, zonder terugwerkende kracht.
Dit document kan ik niet toevoegen aan de tblVerplicht.

Ik weet niet of het mogelijk is om een nieuwe tabel tblAanvullend te maken, waar in staat dat:
- functie X
- ingangsdatum
- einddatum
- document (boolean)

Bij de query moet hij in Werknemers kijken of de datum indienst >= als ingangsdatum in tblAanvullend daar het aanvullend document meeneemt in de algemene vergelijking.

Een voorbeeldje heb ik toegevoegd in deze *snip*

Heeft iemand een idee/aanwijzing hoe ik dit het beste kan aanpakken?

[ Voor 1% gewijzigd door RobIII op 01-07-2014 11:21 ]

https://pvoutput.org/intraday.jsp?id=102416&sid=90116


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kan iemand even...?
Post a.u.b. relevante code (tussen code tags) en alle andere (relevante(!)) informatie gewoon in je topic. Als je een rar/zip/whatever post en iemand stuit over 2 jaar op dit topic die mogelijk ook geholpen is met een eventuele oplossing die jij hier vindt ontbreekt de helft omdat de rar/zip/whatevs niet (meer) online staat o.i.d. Niet heel erg handig en frustrerend voor die toekomstige (be)zoeker :Y)

Als je nu nog even je topic aanvult met de ontbrekende informatie én met wat je zelf al hebt bedacht/geprobeerd (zie onze Quickstart) dan komt 't helemaal goed ;)

[ Voor 28% gewijzigd door RobIII op 01-07-2014 11:25 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • maomanna
  • Registratie: Februari 2006
  • Laatst online: 21-11 13:42
*Aanvulling nav MOD*

De huidige code die de vergelijking maakt is:
code:
1
2
3
Public Function Compleetdeel1(lijstChecklist As Boolean, vpChecklist As Boolean, lijstScreening As Boolean, vpScreening As Boolean, lijstBig As Boolean, vpBig As Boolean, lijstHerBig As Boolean, vpHerBig As Boolean, lijstSRC As Boolean, vpSRC As Boolean, lijstHerSRC As Boolean, vpHerSRC As Boolean, lijstVOG As Boolean, vpVOG As Boolean) As Boolean
    Compleetdeel1 = (Not vpChecklist Or lijstChecklist) And (Not vpScreening Or lijstScreening) And (Not vpBig Or lijstBig) And (Not vpSRC Or lijstSRC) And (Not vpVOG Or lijstVOG)
End Function


Deze functie staat vervolgens in een Query die de resultaten uitspuugt.

Wat ik verder zelf al heb gedaan is het nadenken over.

Andere opties zijn:
- Een nieuwe database per wijziging
- Een nieuwe tabel en query per wijziging

Verder is mijn vraag geen MueR in "Devschuur® Beleid" maar eerder sparren en meedenken over een oplossing.

https://pvoutput.org/intraday.jsp?id=102416&sid=90116


  • Xanland
  • Registratie: Oktober 2007
  • Laatst online: 21-11 17:59
Hoe ik het zo bekijk zijn je "Andere opties" die je beschrijf in je post hierboven niet echt opties. Bij een goed genormaliseerde database zou je dat niet nodig hebben en daarna zou je het nog steeds niet willen.

Wat je in je eerste post zegt over tblAanvullend (waarom die vreemde prefix...?) is naar mijn inziens wel het meest logisch. Die tabel zou je dan moeten joinen vanuit je select-query.

RobIII: Ik probeer als ik wil stoppen met mijn auto ook altijd de sigarettenaansteker, de airco, 3 radioknoppen en de binnenverlichting en dan de rem :P


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-11 18:33
Probeer je databasemodel zo te (ver)bouwen dat je per soort document een record er bij krijgt en niet een kolom, wat je eigenlijk met je eigen voorstel doet; wat dat betreft lijkt die tblVerplicht een redelijke fuckup.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • maomanna
  • Registratie: Februari 2006
  • Laatst online: 21-11 13:42
Xanland schreef op donderdag 03 juli 2014 @ 23:04:
Hoe ik het zo bekijk zijn je "Andere opties" die je beschrijf in je post hierboven niet echt opties. Bij een goed genormaliseerde database zou je dat niet nodig hebben en daarna zou je het nog steeds niet willen.

Wat je in je eerste post zegt over tblAanvullend (waarom die vreemde prefix...?) is naar mijn inziens wel het meest logisch. Die tabel zou je dan moeten joinen vanuit je select-query.
Die prefix komt vanuit de opbouw. Elke tabel begint met tbl en de query's zijn mer Q, formulieren met frm en Rapporten met r.

Voor aanvullende documenten bij een functie, klopt het wat je zegt.
Alleen moeten die mee met de vergelijking, dus als de datum in dienst is na een bepaalde datum, dat hij dan wel meegenomen moet worden.

Na zoeken op internet zou in gedachte een IIF-code het moeten doen, maar dat schijnt niet te werken.
farlane schreef op donderdag 03 juli 2014 @ 23:36:
Probeer je databasemodel zo te (ver)bouwen dat je per soort document een record er bij krijgt en niet een kolom, wat je eigenlijk met je eigen voorstel doet; wat dat betreft lijkt die tblVerplicht een redelijke fuckup.
Als ik het goed begrijp, zou de informatie iets moeten zijn als:

NaamOntbrekende stukken
Pietdocument2, document3
Klaasdocument1, document2


Wat ik nu heb, is:

Ontbrekend
NaamDocument 1Document 2Document 3
PietXX
KlaasXX

Het is inderdaad dat die tblVerplicht behoorlijk statisch is. Indien iets met terugwerkende kracht is, is het geen probleem. Dan kan ik daar vinkjes aan/uit zetten en de vergelijking gebeurd zoals is gebouwd.

[ Voor 8% gewijzigd door maomanna op 04-07-2014 10:04 ]

https://pvoutput.org/intraday.jsp?id=102416&sid=90116


  • maomanna
  • Registratie: Februari 2006
  • Laatst online: 21-11 13:42
Naar aanleiding van het bovenstaande heb ik nu een aantal testtabellen gemaakt.

1. Tabel tblEisnaam (lijst met documenten)
EisnaamIDEisnaam
1ID bewijs
2Diploma


2. Tabel tblFunctie (Functies)
iFunctieIDFunctiecodeFunctienaam
11001Poetser


3. Tabel tblFunctieEis (vereiste documenten per functie)
iFunctieEisIDiFunctieIDiEisnaamIDdatumStartdatumEind
11101-01-2015
212


4. Tabel Werknemer (tabel met werknemers)
iWerknemerIDpersnummerachternaamiFunctieIDindienst
12009Testpersoon101-01-2014


5. Tabel tblRegistratieEis (Wat er aanwezig is in dossier)
iRegistratieIDiWerknemerIDiEisnaamID
112


In tussen tijd heb ik wel nagedacht over het hele verhaal, maar heb eigenlijk geen idee waar ik nu naar moet zoeken om de vergelijking te maken.
Uiteindelijk wil ik hier een Query van, waar uit komt dat voor Werknemer met ID 1 in dit voorbeeld document 4 ontbreekt.
van VBA heb ik geen kaas gegeten, maar vermoed dat het wel die kant op moet gaan. als ik weet welke kant ik op moet zoeken, kan ik hier verder naar zoeken.

Het hoeft niet geprogrammeerd te worden, dat vraag ik niet, alleen meedenken hoe ik dit het beste kan regelen/maken.

https://pvoutput.org/intraday.jsp?id=102416&sid=90116


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-11 18:33
- Schrijf een query die voor de functie van de werknemer de vereiste documenten ophaalt
- Schrijf een query die voor de werknemer de aanwezige documenten ophaalt
- Combineer deze tot een query die voor de werknemer de documenten ophaalt die *niet* aanwezig zijn.

Uiteindelijk zul je hiervoor weinig VBA nodig hebben denk ik, het design is iig heel wat beter georganiseerd.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • maomanna
  • Registratie: Februari 2006
  • Laatst online: 21-11 13:42
en hoe ga ik dat dan doen met de datumvoorwaarde? die meenemen bij de eerste query?

https://pvoutput.org/intraday.jsp?id=102416&sid=90116


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-11 18:33
maomanna schreef op maandag 11 augustus 2014 @ 14:47:
en hoe ga ik dat dan doen met de datumvoorwaarde? die meenemen bij de eerste query?
Ja. Misschien dat de "aanwezige documenten" ook een geldigheidsdatum/termijn nodig hebben?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • maomanna
  • Registratie: Februari 2006
  • Laatst online: 21-11 13:42
Nee daar hoef ik gelukkig niet op te letten.

Het gaat mij erom dat ik documenten "aan" en "uit" kan zetten.
Als een iemand besluit dat vanaf datum X document Y verplicht is, en niet daarvoor, moet ik dat wel kunnen toepassen.

Ik ga eens puzzelen met die queries. Thanks alvast!

https://pvoutput.org/intraday.jsp?id=102416&sid=90116


  • maomanna
  • Registratie: Februari 2006
  • Laatst online: 21-11 13:42
farlane schreef op maandag 11 augustus 2014 @ 14:41:
- Schrijf een query die voor de functie van de werknemer de vereiste documenten ophaalt
- Schrijf een query die voor de werknemer de aanwezige documenten ophaalt
Deze twee waren niet zo moeilijk.

- Combineer deze tot een query die voor de werknemer de documenten ophaalt die *niet* aanwezig zijn.
Is een stuk lastiger daar de output niet het gewenste effect heeft.
De output moet komen obv functie. Echter spuugt hij allerlei willekeurige regels uit, ongeacht welke join ik gebruik.

https://pvoutput.org/intraday.jsp?id=102416&sid=90116


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Post dan de query die je hebt eens... :? Hoe moeten wij je helpen als je die informatie niet post? We hebben toch geen glazen bol?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • maomanna
  • Registratie: Februari 2006
  • Laatst online: 21-11 13:42
excuses

SQL:
1
2
3
4
5
6
SELECT QRegistratieEisId.ID, QRegistratieEisId.Personeelsnummer, QRegistratieEisId.Achternaam, 
   QRegistratieEisId.Voorvoegsel, QRegistratieEisId.Voorletters, QRegistratieEisId.[Org code], 
   QRegistratieEisId.iBigfunctieID, QRegistratieEisId.Indienst, QRegistratieEisId.iEisnaamId
FROM QFunctieEis
INNER JOIN QRegistratieEisId ON QFunctieEis.iFunctieId = QRegistratieEisId.iBigfunctieID
WHERE ( (QRegistratieEisId.iEisnaamId)= Not[QFunctieEis]![iEisnaamId]);

[ Voor 1% gewijzigd door RobIII op 02-09-2014 14:22 . Reden: Code voorzien van syntax highlighting ([code=sql]) en code leesbaar gemaakt (indenting) ]

https://pvoutput.org/intraday.jsp?id=102416&sid=90116

Pagina: 1