Bijwerken velden met dezelfde naam voor alle gerelateerd recods

Status
Niet open voor verdere reacties.

PeterSawasdee

Gebruiker
Lid geworden
18 dec 2012
Berichten
6
Hallo, Ik ben een beginner op het gebied van VBA. Tot op heden heb ik mijn databases middels macro's kunnen laten doen wat ik wil dat ze doen.
Nu wil ik de stap naar VBA maken maar heb ik gelijk het volgende probleem waarvoor ik hulp zoek.

Ik wil een overzicht maken van de capaciteit per werknemer (max 10 voorlopig) zodat ik snel kan zien bij welke persoon ik nieuwe projecten kan onderbrengen.
Dit dient te worden geïntegreerd in een bestaande Access 2007 database. Hiertoe heb ik 3 tabellen aangemaakt en in relatie gebrachten een query hierop gemaakt.
De belangrijke velden waar het om draait zijn:
DagID (Aut), CapaciteitID (Num), MaandID (Num), WerknemerID (Num) en Dag01 (Num) t/m Dag31 (Num)

Het formulier waarin ik per maand de beschikbare capaciteit per werknemer kan selecteren werkt d.m.v. selectievakjes (aan/uit) en laat de waardes zien: 0 of -1 (false of true)
Ik wil in dit formulier de kleuren Groen voor TRUE en Rood voor FALSE invoeren

In VBA kom ik niet verder dan kleuren invoeren maar dan wijzigt het veld voor alle werknemers Neem ik een andere insteek dan blijft de record pointer op het eerste record staan.
Kan iemand mij een tip geven of VBA hiervoor een oplossing heeft of dat dit via macro's moet worden gemaakt.
Ik kom er niet uit.
 
Als ik dit lees, denk ik dat je eerst terug naar de tekentafel moet, want er mankeert wel wat aan je tabel. Zodra je voor een planningschema 31 aparte identieke velden nodig hebt, is je database belabberd genormaliseerd. Dus dat zou ik eerst oplossen. Hoe dan wel? Met een aparte tabel waarin je de werkdagen opslaat, met de werknemerID erbij. Je kunt dan met een query prima zien wie wanneer werkt. Met je huidige opzet kun je iemand 31 dagen laten werken in februari, om maar eens één mankementje te noemen...
 
Hallo Octafish,

Bedoel je 1 tabel met max 365 werkdagen?
Of velden met de naam maandag01 t/m vrijdag01 t/m het eind van een jaar?

Alvast bedankt voor je reactie. Ja ik snap je opmerking mbt februari, aangezien ik de enige ben die hiermee sturing geeft dacht ik dat het wel kon maar inderdaad mooier beter is om dit te ondervangen.
 
Hallo Octafish,

Nog even ter aanvulling. mijn formulier werkt wel alleen het toevoegen van kleuren mbv VBA dat werkt nog niet goed.
Het formulier lat wel per maand de veld waardes 0 voor FALSE en -1 voor TRUE zien maar ik wil een tijdlijn in kleur zodat in in 1 overzicht per maand zie wanneer werknemers binnen zijn.
Als dit werkt kan ik het koppelen aan een logistiek-/inkoopjaarplan om te zien aan welke werknemer nieuwe projecten kunnen worden toegewezen.
 
Hallo Octafish,
Alle medewerkers zijn standaard aanwezig, zo heb ik de tabellen ook ingericht. Mijn idee is om daana met selectievakjes deze aan te passen op het moment dat personenn niet aanwezig zijn. Dit werkt nu. Voor de daginstelling heb ik de volgende routine ingevoerd:
Basis instelling:
if maandID=1 then
dag30.visible=true (veldnaam)
dag31.visible-true (veldnaam)
dag030.visible=true (selectievakje)
dag031.visible=true (selectievakje)
end if
en dit voor alle maanden op deze wijze. (erg veel sub routines)

Voor het instellen mbv de kleur van het veld de volgende routines:
if dag01=0 then
dag01.backcolor-vbred
dag01.forecolor=vbred
else
dag01.backcolor=vbgreen
dag01.forecolor-vbgreen
end if

Ook dit voor alle dagen.
Voor het instellen van de waarde vmbt het selectievakje de volgende routines:
private Sub Dag001_AfterUpdate()
Select case Dag01
Case "-1"
Dag01.backcolor-vbgreen
Dag01.forecolor=vbgreen
case "0"
Dag01.backcolor-vbred
Dag01.forecolor=vbred
end select
end sub

Ook dit voor alle dagen echter de record blijft steken op record 01. (ook dit zijn erg veel routines).

Kun je mij adviseren hoe deze routines kunnen worden beperkt tot een substantieel kleiner (slimmer) aantal?
Ik had een voorbeeld database gemaakt zodat je het werkend kunt zien echter na zippen blijft deze te groot >100KB om hier te posten.
Zou erg blij zijn met geboden hulp.
 
Zoals ik al aangaf: niet op deze manier werken. Maak een aparte tabel waarin je vastlegt wanneer iemand werkt.vrij is etc. Bij elke mutatie maak je een nieuw record aan.
M.b.v. een tabel met (werk)dagen) maak je dan een overzicht van de dagen dat iemand aanwezig is of niet.
Dit (wat je nu doet) is een heilloze weg wat mij betreft. Ik zou daar althans als ik jou was zo geen tijd in steken. Eerst de structuur goed maken, en dan gaan automatiseren!
 
Nee, dat is niet wat ik bedoel. Als je al naar de code kijkt die je nodig hebt.... Ik zit meer in constructies te denken als in bijgaand voorbeeld. Hierbij vul je alleen de projectdagen in (in het voorbeeld zijn dat vakantiedagen) en kun je in een query de overige dagen laten zien. Die query zit er nog niet bij, maar kun je vast zelf wel maken.
Belangrijkste is dat je zo snel mogelijk van je huidige structuur afstapt, want dat is een hele korte doodlopende straat....
 

Bijlagen

Hallo Octafish, dank je voor het voorstel wat je hebt gedaan. Hier ga ik mee verder om te kijken of ikm eea kan combineren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan