Urenverantwoording

Status
Niet open voor verdere reacties.

Dencar77

Gebruiker
Lid geworden
15 mrt 2013
Berichten
131
Goedenavond eenieder,

ik stoei in mijn applicatie met een urenverantwoording waarbij ik twee tabellen niet met elkaar kan samenvoegen.
In heb voor de urenverantwoording twee verschillende tabellen gemaakt, tblTijd (daar verantwoorden het personeel op welke dag ze hoeveel uur gewerkt hebben aan een dossier) en tblGeplandeUren (hier verantwoorden de afdelingshoofden per week hoeveel uren ze aan een dossier mogen werken). Deze tabellen zie je terug wanneer je aan een dossier werkt (randinfo: de afdelingshoofden krijgen de tabblad "Planningsuren" wel en het personeel niet in de verzonden Front-Ends).

Ik heb voor eenieder, dus de gewerkte uren en geplande uren, een eigen rapport gemaakt. Mooier is natuurlijk wanneer ik 1 rapport heb (zie rapportvoorbeeld die als bijlage mee is gestuurd) waar ik alle gegevens op heb staan. Ik wil dus bij het rapport "Urenverantwoording Medewerkers" graag toegevoegd hebben het veld "WeeGeplandeUren" uit tblGeplandeUren.
Hiermee kan ik dan op 1 regel het contracturen laten zien, daarnaast de geplande uren, dan de gewerkte uren.

Middels een selectie in een formulier kies je een begin en een einddatum. Deze selectie is in de query verwerkt. Vervolgens opent het rapport zich op je gewenste datum.

Hoe krijg ik het voor elkaar om de geplande uren ook te tonen op het rapport?

ps: ik hoop dat ik geen wirwar praat, maar na een uurtje of drie stoeien en internet raadplegen, wordt ik een beetje kierewiet. Excuses.

http://www.mijnbestand.nl/Bestand-8R84TK7VRNJ8.accdb
urenverantwoording.jpg
 
Persoonlijk vind ik het een hopeloze constructie waarbij je het jezelf nodeloos ingewikkeld maakt door identieke gegevens in 2 tabellen onder te brengen. Ik vind dat urenregistratie makkelijk in één tabel kan, waarbij je simpel kunt aangeven of bepaalde uren planning zijn of gewerkt. En dan is je hele vraag ook gelijk opgelost. Want niet meer nodig :) Het aantal uren dat iemand aan een dossier mag werken (of: hoeveel uren alle medewerkers samen aan een project mogen werken) is een gegeVen dat specifiek bij een dossier hoort,en niet in een Urentabel. Wil je het specificeren per medewerker (lijkt logisch als er verschillende tarieven gehanteerd worden) dan maak je een koppeltabel Medewerker_Dossier waarin je dat per persoon vastlegt. Gaat het om een totaalveld, dan kun je dat in de tabel Dossiers opnemen. In de urenverantwoording zie je dan wat de begroting is, hoeveel er echt is gewerkt door de medewerkers en wat het saldo is.
 
Het verdient inderdaad geen schoonheidsprijs, mee eens. Echter het probleem zit er in dat een coordinator de geplande uren invult en de reguliere medewerker deze tabblad niet ziet. Daarom heb ik besloten om dit gescheiden te houden met tabellen, voor de gewerkte uren en de ander voor de geplande uren. Zo zit een medewerker niet in de geplande uren te rommelen en een coordinator niet in gewerkte uren. Maar ik denk dat jij het anders bedoelt met dat het makkelijk in één tabel kan. Als je al begint met hopeloze constructie en nodeloos ingewikkeld, dan ben ik al verkocht en ben dan benieuwd hoe jij dit in 1 tabel zet, en dan lettend op dat een medewerker niet aan de geplande uren kan rommelen en v.v. .


Ik had al een koppeltabel getracht te maken, maar daar behoor je toch twee sleutelvelden te maken? Mij lukt dit niet.
 
Echter het probleem zit er in dat een coordinator de geplande uren invult en de reguliere medewerker deze tabblad niet ziet.
Dat maakt toch niet uit? Je gaat de functionaliteit van de db toch niet opofferen omdat je (nu even) niet in staat bent om de juiste gegevens bij de juiste personen op het bordje te schuiven? Het is een behoorlijk ingrijpende concessie die je hebt gedaan, die nogal wat consequenties heeft. Terwijl de technische oplossing van je vraag (coördinator ziet geplande uren, medewerker ziet gewerkte uren) heel simpel is te bouwen.
De oplossing is dus simpel: je formulier aanpassen zodat het tabblad met <Geplande uren> (=tblUren gefilterd op Gepland) alleen zichtbaar is voor de coördinatoren, en de medewerker ziet het tabblad <Gewerkte uren> met (=tblUren gefilterd op Gewerkt). Eén tabel, iedereen ziet wat-ie moet zien.
 
Mij brein werkt op dit moment niet optimaal ivm een flinke griep :confused: en flinke hoofdpijn.
Maar als ik dus begrijp kan ik het beste 1 tabel maken. En in die tabel maak ik een veld voor gewerkte uren en een veld voor geplande uren?

Nadeel trouwens, had ik eerder moeten aangeven, dat de geplande uren op basis is van een week en de gewerkte uren kan verschillend zijn, de ene week werk je meerdere uren op meerdere dagen en een andere week werk je bv maar 1 dag aan een dossier.

Ik zie niet even voor mn ogen hoe dit werkt mbt de filtering in de tabbladen.

Het zou ideaal zijn inderdaad als alles in 1 tabel kan.
 
Ik zou, zeker met de aanvullende informatie, dan geen aparte velden maken. Zelf zou ik de gewerkte tijd vastleggen met een begin- en eindtijd, want dan heb je veel meer informatie tot je beschikking en je hoeft het aantal uren niet uit te rekenen. De planning zou je in een los veld kunnen opslaan, maar dat haalt het systeem onderuit lijkt mij. Ik zou daar met dagdelen werken, dus als iemand een hele dag aan een dossier werkt, is dat van 8-5, een halve dag kun je dan in ochtend en middag verdelen etc. Het invoeren van de planning kun je met knoppen doen i.c.m. een keuzelijst of zo. Maar ik zou absoluut alle entiteiten op dezelfde manier behandelen, want je wordt er anders helemaal gestoord van. Stel dat je ooit besluit om ook een planning in uren vast te leggen; dan heb je nu alvast de basis om dat simpel om te zetten.
 
Dagdelen is geen optie. Graag wil ik per weekbasis de urenverantwoording zien en een kleine berekening op het rapport (dit is geen probleem als ik de vaste waarden heb :), maar die heb ik nu nog niet).
Iemand heeft een contract van bv 38, dan kan deze dus max voor die tijd in die week werken. Deze werknemer krijgt van de werkgever 2 dossiers in handen geduwd en per dossier krijgt hij een xbedrag aan uren, bv dossier Riooloverstroming 12 uur en voor dossier Wensput krijgt hij 20 uur. (hier moet dus een veld voor zijn om die twee verschillende uren te registreren). Dat is dus 38 - 12 - 20 = 6 uur waar hij in die week geen werkzaamheden verricht voor een dossier.

Maar per dossier werkt hij niet aan die hoeveelheid ingeplande uren, bv voor dossier Riooloverstroming werkt hij 10 uur en voor dossier Wensput 16 uur ( hier moeten dus per dossier de uren voor verwerkt kunnen worden. Dit geschied dus op dagelijkse basis). Dat houdt in dat hij voor Riooloverstroming 2 uur te weinig heeft gewerkt en voor Wensput 4 uur te weinig.
Dat resulteert weer in 10 uur niet aan dossier gewerkt.

Bovenstaande resultaat wil ik dus in een overzicht verwerkt hebben. En inderdaad, op de huidige wijze is het alsof ik in een open zee zwem, wachtend nu op een reddingsboei die me toegeworpen wordt :)

Ik heb net een tabel aangemaakt, tblUrenverantwoording. Daar heb ik de navolgende velden aangemaakt.
- UreID
- UreomnID
- UreGewerkteTijd
- UreDatum
- UreMedewerker
- UreGeplandeTijd

Op zich kan een coordinator elke maandag een aantal uren per onderzoek en per medewerker geven zo. De coordinator krijgt een gefilterde rooster obv geplandetijd en de medewerker krijgt deze gefilterd obv gewerktetijd. Kan zoiets werken?
 
Planningsuren lijken mij op deze wijze bij Dossiers te horen als subtabel. Het gegeven heeft in beginsel dan weinig met uitgevoerde uren te maken, dus dat zou ik er ook niet bij halen. Een koppeltabel Dossier_Medewerker met daarin dan je urenplanning in totaal aantal uren per week. Kun je inderdaad wel ingeven als weeknummer + DossierID + MedewerkerID + geplande uren. In de tabel waarin je de werkelijke uren schrijft leg je ook DossierID + MedewerkerID vast + begintijd-eindtijd. Hoe nauwkeurig je dat wilt hebben, mag je uiteraard zelf bepalen. Tijd schrijven is niet de meest geliefde bezigheid van een medewerker. Je rapport telt dan de uren op (groeperen op Dossier + weeknr) en dat vergelijk je dan met het totaal dat je hebt ingevoerd in Dossier_Medewerker. Nog steeds vrij simpel te maken ;)
 
Ik heb het formulier waarin de tijden gemaakt zijn (frmTijd) gesleept in het dossierformulier (frmOnderzoekNieuw). Dan heb ik het frmOnderzoekNieuw als hoofdveld gekoppeld en frmTijd als subveld gekoppeld (bedoel je dat met koppeltabel dossier_medewerker?).

Je slaat de spijker op de kop idd dat men niet heilig omgaat met de uren verantwoorden. Vandaar mijn idee om de uren simpelweg met een getalletje op te lossen. Even een natte vinger in de lucht en tadaa, men heeft die dag 3 uren gewerkt aan 1 dossier. Dat is in principe ook prima, lettende op dat het niet nauwkeurig hoeft te zijn. Ik heb zo'n idee dat men de eindtijd zal vergeten in vullen en dus later dit moeten aanpassen. Kan het ook gigantisch mis hebben :)

Heb je het nu over 1 tabel of 2 tabellen?

Was het maak vrij simpel :eek:
 
2 Tabellen, maar ik zou de 'vinger in de lucht' techniek toch vervangen door een enigszins nauwkeuriger systeem. Het is ook een kwestie van opvoeden, want medewerkers bij bedrijven waar tijdschrijven wél is ingeburgerd doen het wél goed. Het is gewoon onderdeel van de werktaak, en kost (als je het goed en makkelijk kan doen) nauwelijks tijd.
 
Laatst bewerkt:
Nee, ik loop echt te kl** even op dit moment.
Ik heb twee tabellen weer, de een waar de gewerkte tijden in verwerkt worden (gewijzigd is dat ik niet 1 numeriek veld gebruik voor de uren in te verwerken, maar twee datum/tijd velden dd-mm-yyyy hh:nn) en de ander de geplande tijd (geen datum/tijd veld, maar 1 numeriek veld met weeknr's (verkregen uit een query 1t/m 53)).

Heb je enig voorbeeldje hoe ik het moet aanpakken?
 
Dencar77

Je kunt beide query's samenvoegen door middel van een Union All statement in SQL.
Hierbij een voorbeeld:

Code:
SELECT 
  A.omnID AS omnID, 
  A.omnDossiernaam AS Dossiernaam, 
  C.Medewerker AS Medewerker, 
  C.medContracturen AS ContrUren, 
  B.timID as TimID, 
  B.timomnID as TimOmnID, 
  B.timDatum AS Datum, 
  B.timTijd AS Gewerkt,
  0 as Gepland, 
  D.timWeek as Week, 
  DatePart("yyyy",[B.timDatum],2) AS Jaar
FROM tblOnderzoekNieuw A, tblTijd B, qryMedewerker_Verlengd C, qryTijd D
WHERE B.timMedewerker = C.medID AND A.omnID = B.timomnID AND
  B.timID = D.timID AND 
  B.timDatum Between [Formulieren]![frmRapportUrenverantwoordingMed]![txtStartdatumUrenMed] And   [Formulieren]![frmRapportUrenverantwoordingMed]![txtEinddatumUrenMed];

Union all

SELECT 
  A.omnID, 
  A.omnDossiernaam, 
  C.Medewerker, 
  C.medContracturen, 
  B.WeeID, 
  B.WeeomnID, 
  B.WeeWeek,
  0, 
  B.WeeGeplandeUren, 
  DatePart("ww",[B.WeeWeek],2) ,
  DatePart("yyyy",[B.WeeWeek],2) 
FROM tblOnderzoekNieuw A, tblGeplandeUren B, qryMedewerker_Verlengd C
WHERE A.omnID = B.WeeomnID AND B.WeeMedewerker = C.medID AND
  B.WeeWeek Between [Formulieren]![frmRapportGeplandeUrenMed]![txtStartdatumUrenMed] And 
[Formulieren]![frmRapportGeplandeUrenMed]![txtEinddatumUrenMed];

Veel Succes.
 
Bedankt Elsendoorn, helaas heb ik weer het weekend de tijd om dit op te pakken. Er liggen nu 3 dikke studieboeken voor me wat ik in 3 maanden tijd moet kennen en examen in moet doen :).
Al beginnen mijn vingers wel te jeuken om dit meteen te testen :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan