Eindtijd vorige record gebruiken als startijd

  • Onderwerp starter Onderwerp starter jhdw
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

jhdw

Gebruiker
Lid geworden
15 dec 2012
Berichten
166
Goedemorgen,

Hopelijk heeft iemand een oplossing voor mijn probleem.
In de bijlage heb ik 2 records ingevuld zoals ik het graag zou willen hebben.
De situatie is dat de monteurs niet altijd de juiste starttijd invullen voor de terugreis - hier in het veld Category "Exception 1" genoemd.
Nu wil de gebruiker het zo hebben dat "Start Departure" voor Exception 1 altijd gelijk is aan "End Work" van het laatste record voor "Exception 1". "End Departure" blijft onveranderd en is gelijk aan "End Work".
De query wil ik dan uiteindelijk gebruiken om de definitieve tijden tabel te vullen.

Bekijk bijlage Tijden_helpmij.zip

Alvast bedankt voor de hulp

Groeten Jan
 
Ik zit even naar je tabel te kijken, maar ik snap niet dat dit is wat je wilt: het datumveld laat datum+tijd zien, de starttijd laat datum+tijd zien, de eindtijd laat datum+tijd zien, en ga zo maar door. Een datumveld moet natuurlijk alleen een datum bevatten, en tijden alleen een tijd. Zoals een Amsterdamse profeet ooit zei: "logisch, toch?" En de veldnamen [Start Departure] en [End Departure] vind ik erg onlogisch; een 'departure' is een éénmalige gebeurtenis die geen begin- en eindtijd heeft: de departure is de tijd! Begin en eind van een departure zijn dus altijd hetzelfde.... Op zijn minst zou ik daar andere namen voor bedenken.
En dit:
"End Departure" blijft onveranderd en is gelijk aan "End Work".
Lijkt mij een nutteloos en vooral overbodig veld; als de waarde altijd hetzelfde is als [End Work], dan voegt het dus niets toe, en is dubbelop. Weg ermee :). Op basis van het veld Category wéét je namelijk al dat de [end work] tijd óók de [End Departure] is. Bovendien: datareduntantie in deze vorm laat fouten toe, want je kunt altijd een andere tijd invullen in dat veld, ongeacht wat er in [End work] staat. ('Ja, maar ze kunnen toch Copy-Paste doen?' Het is geen strafwerk, toch?).

Maar het kan uiteraard prima opgelost in een query; ik heb in dit forum al regelmatig een database daarvoor gepost (op basis van Meterstanden). Ik zal de (iets aangepaste) query daarvoor wel even in je database zetten. Maar neem mijn opmerkingen ter harte, zou ik zeggen, en stop op zijn minst met die nutteloze dataredundantie.
 
Goedemorgen Michel,

Bedankt voor de tips.
De gebruiker heeft al heel wat ruzie gemaakt met zijn leverancier over hoe de gegevens worden aangeleverd.
Omdat de monteurs ook 24-uursdiensten draaien splits ik de gegevens om middernacht, dat moet dan op 3 manieren: Travel, Work en Departure (deze naam heb ik niet bedacht!). Ik heb ook al gezien dat start en end meer dan 1 dag verschilden, dan is het wel handig dat je dat gelijk kunt zien
De monteurs gebruiken een app om de gegevens in te leveren, ze kunnen zelf ook niet zien wat ze ingestuurd hebben en dan kan het zijn dat ze bij thuiskomst niet de exacte tijd van de start terugreis invullen. Vandaar dat de gebruiker End Work als Start Departure wil gebruiken.
In de definitieve tabel zijn bij Exception 1 de velden Start Work en End Work leeg, dit wordt dan Start terugreis en End terugreis

Ik ben heel benieuwd naar query.

Alvast bedankt

Groeten Jan
 
Goedenavond,

In de schermafdruk kun je zien wat de bedoeling is, misschien heb ik het in het vorige bericht niet helemaal duidelijk uitgelegd.

Knipsel.JPG

Groeten Jan
 
Hoezo denk je dat? Dat is precies de methodiek die ik beschreven heb in bericht #2. Ik denk dus eerder dat je mij niet begrepen hebt :).
 
Hierbij dus de volgens mij gevraagde query:
Code:
SELECT Tbl_Test.Employee, Tbl_Test.Date, Tbl_Test.[Start Work], Tbl_Test.[End Work], Tbl_Test.Category,
(SELECT TOP 1 [End Work] FROM Tbl_Test AS T1
WHERE (T1.[Date] < Tbl_Test.[Date] AND Tbl_Test.Category="Exception 1" And Tbl_Test.Employee = T1.Employee)
ORDER BY T1.[Start Work] DESC ) AS [Start Departure],
IIf([Start Departure] Is Null,Null,[End Work]) AS [End Departure]FROM Tbl_Test
GROUP BY Tbl_Test.Employee, Tbl_Test.Date, Tbl_Test.[Start Work], Tbl_Test.[End Work], Tbl_Test.Category,
IIf([Start Departure] Is Null,Null,[End Work])
ORDER BY Tbl_Test.Employee, Tbl_Test.Date;
 
Goedemorgen,

Dit is precies wat ik nodig had:thumb:
Vriendelijk bedankt voor de snelle hulp.

Groeten Jan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan