Automatische verandering datums

Status
Niet open voor verdere reacties.

Jintra

Gebruiker
Lid geworden
17 mrt 2016
Berichten
31
Goedemiddag,

Ik heb denk ik een redelijk uitgebreide vraag en ik weet ook niet of het allemaal mogelijk is maar ik doe maar een poging.
Laat ik bij het begin beginnen, bij deze alvast een in een eerdere vraag gebruikt voorbeeld bestandje.Bekijk bijlage Voorbeeld bestand1.zip
Bij het formulier onderdelen moet het keuringsinterval, laatste keuring en volgende keuring worden ingevuld. Mijn eerste vraag is: Kan je het veld volgende keuring automatisch in laten vullen wanneer je het keuringsinterval en laatste keuring hebt ingevoerd? Als het keuringsinterval bijvoorbeeld 1 jaar is en de laatste keuring 23-03-2016, dat hij automatisch als volgende keuring invoert 23-03-2017.

Dan mijn tweede vraag. Als je naar het formulier keuring gaat moet je inspectiedatum invoeren en soort keuring. Bij soort keuring zou je moeten kunnen kiezen tussen bijvoorbeeld gekeurd, reparatie, onderhoud, afgekeurd. Wat ik wou proberen is (als het mogelijk is) dat als je bij soort keuring invoert gekeurd en de inspectiedatum invoert dat hij voor dat artikel automatisch in onderdelen de laatste keuring veranderd in de datum van die laatste inspectie.

Ik hoop dat iemand me op weg kan helpen met de relaties die ik daarvoor moet maken en hoe ik dit überhaupt voor elkaar krijg.

Alvast bedankt!
 
Waarom vul je de volgende keuringsdatum in? Dat is een berekend veld, dus dat hoef je niet op te slaan. Je kunt die datum uiteraard wel laten zien op het formulier, op basis van de frequentie. Met een functie kun je daar verder wel op doorrekenen. In je formulier heb ik een keuzelijst gemaakt met deze waarden:
Code:
1;Jaarlijks;2;Kwartaal;3;Maandelijks;4;Wekelijks;5;Dagelijks
Met een Select Case kun je dan de volgende datums berekenen:
Code:
Private Sub Laatste_keuring_Click()
    Select Case Me.Keuringsinterval.Value
        Case 1
            Me.Volgende_keuring = DateAdd("yyyy", [Interval], CDate(Me.Laatste_keuring))
        Case 2
            Me.Volgende_keuring = DateAdd("q", [Interval], CDate(Me.Laatste_keuring))
        Case 3
            Me.Volgende_keuring = DateAdd("m", [Interval], CDate(Me.Laatste_keuring))
        Case 4
            Me.Volgende_keuring = DateAdd("d", [Interval] * 7, CDate(Me.Laatste_keuring))
        Case 5
            Me.Volgende_keuring = DateAdd("d", [Interval], CDate(Me.Laatste_keuring))
    End Select
End Sub
De tweede vraag snap ik niet helemaal...
 
Het eerste probleem is opgelost alleen wat als ik bijvoorbeeld 2 jaarlijks of 3 jaarlijks een keuring moet doen?

Mijn tweede vraag is als volgt. Ik voer onderdelen in met een laatste keuring en volgende keuring. Als er dan een keuring wordt gedaan wordt die ingevoerd in het andere formulier keuring. Als in dat formulier gekozen wordt bij soort keuring voor keuring in het keuzemenu, dan wil ik dat in onderdelen de laatste keuring veranderd naar de datum dat die keuring is gedaan. Dit zodat je niet telkens als een keuring is gedaan handmatig bij onderdelen de laatste keuring moet wijzigen, maar dat dit automatisch gaat als je een keuring invoert.

Had je de wijzigingen in het bestandje gemaakt trouwens? Ben namelijk benieuwd hoe het eruit ziet nu.
 
Ik heb er daarom een veld bijgezet voor de intervallen. Je hebt dus een Soort (jaar, maand etc) en een aantal. Dat laatste veld gebruik je in de formules.
 
Heb je dit in het voorbeeld aangepast? Zo ja zou je die kunnen uploaden, dan kan ik even kijken hoe je dat hebt gedaan
 
Geen probleem :). Stoei maar wat met de parameters, dan zie je wel wat er gebeurt.
 

Bijlagen

Dankjewel octa weer precies de oplossing die ik zocht!
Maar mijn tweede vraag begrijp je niet helemaal dus?
Je voert de datum in van laatste keuring in het onderdelen formulier, maar als er dan daadwerkelijk weer een keuring plaatsvind, dan klopt die datum van laatste keuring niet meer want je hebt zojuist een keuring gedaan.
Nu kan je dit natuurlijk handmatig aanpassen maar het is nog mooier als, wanneer er een keuring wordt uitgevoerd en je die invoert, dat de datum van de laatste keuring automatisch ook veranderd naar de in het keuringen formulier ingevoerde inspectiedatum. Is dat ook mogelijk?

Zo ja, bij het invoeren van een keuring heb ik nu ook een keuzemenu met 1;gekeurd 2;afgekeurd 3;reparatie 4;wijziging. Bekijk bijlage Voorbeeld bestand1.rar

Als het bovenstaande mogelijk is dan moet het vast ook kunnen dat de datum van laatste keuring in onderdelen alleen wijzigt als er aan een voorwaarde wordt voldaan, namelijk dat [soort keuring]=gekeurd.

Ik hoop dat je hier wat mee kan.
 
... maar het is nog mooier als, wanneer er een keuring wordt uitgevoerd en je die invoert, dat de datum van de laatste keuring automatisch ook veranderd naar de in het keuringen formulier ingevoerde inspectiedatum.
Kijk, en daar raak je mij dus kwijt. Elke keuring zou namelijk een eigen record moeten zijn, en dan gebruik je natuurlijk de functie Date() als Standaardwaarde om automatisch de huidige datum in te voegen. Maar ik krijg sterk de indruk dat jij steeds alles in één record bijhoud en bijwerkt. En dat is dus fout. Althans: in mijn boek :).
 
Klopt dat is ook fout, maar ik denk dat je me verkeerd begrijpt want ik heb ook voor elke keuring een apart record. Alleen als je een nieuwe keuring invoert moet je een artikelnummer opgeven waarvoor je de keuring doet en hij voert automatisch de datum van vandaag in bij inspectiedatum. Ik hoop dat je het tot zover volgt. Dan sla je het record op en komt hij als nieuw record erin te staan.

Ik heb bijvoorbeeld de volgende gegevens ingevoerd in het formulier keuring: Een keuring op 24-03-2016 (inspectiedatum) voor artikel VM-0001(artikelnummer). Voor dit artikel heb ik eerder de gegevens ingevoerd in het formulier onderdelen waaronder het veld laatste keuring. Dit veld klopt nadat de keuring is gedaan niet meer, want als ik daar bijvoorbeeld heb ingevuld laatste keuring was op 24-12-2015 klopt dit niet meer na de keuring die ik heb gedaan en zal het veld laatste keuring 24-03-2016 moeten worden.

De vraag was dus of ik genoodzaakt ben telkens als er een keuring plaats vindt, de laatste keuring datum in het formulier onderdelen handmatig te veranderen of dat je dit kan automatiseren.
 
En ik blijf het maar niet snappen...waarom voer je de laatste datum in? Dat hoor je nergens in te vullen want dat is een berekend gegeven.
 
Bedoel je dat het automatisch de datum van vandaag moet zijn? Want nu als je het interval invoert en de laatste keuring dan berekend hij volgende keuring
 
En dat wil je toch ook weten? D volgend datum bepaalt wat je in je formulier filtert. De vorige datum kan nauwelijks interessant zijn, maar die haal je gewoon op uit je tabel. Dat is namelijk de datum van invoer van het laatste record. Ga je niet extra opslaan...
 
Wat er mis gaat is dat je meerdere keren de laatste keuringsdatum wilt gebruiken/invullen. De laatste datum zou je maar een keer in moeten vullen. Op je formulier (of rapport) zou je deze datum dan kunnen weergeven door een query te maken die de laatste datum weergeeft van je artikel met bij behordende delen.
Dus eigenlijk is je veld. LaatsteKeuring een raar veld. Dit zou Keuringsdatum moeten zijn. Daarnaast maak je via een query een overzicht met wat de laatste datum is per item.

als je toch per item de laatste datum wilt invullen (omdat alle items eigenlijk die dag gekeurd zijn) zou je een bijwerkquery kunnen maken. Je filtert dan alle records die horen bij het item waarbij je de laatste keuring hebt uitgevoerd en veranderd dan het veld LaatsteKeuring in de gewenste datum.
 
Bedankt voor de reacties allebei, ik snap jullie punt.
Misschien handig om inderdaad laatste keuring te veranderen in keuringsdatum en een query te maken, zodat die de laatste datum weergeeft van een artikel en dat er de mogelijkheid is dat ik deze datum zelf kan invullen/wijzigen. En dat in de query automatisch de records worden gefilterd die horen bij het ingevoerde artikelnummer.

Ik ga er even mee stoeien en hoop dat ik eruit kom.
Laat het jullie wel horen!
 
Laatst bewerkt:
Ik mag het dan nog steeds niet snappen, maar jij volgens mij ook niet:
... zodat die de laatste datum weergeeft van een artikel en dat er de mogelijkheid is dat ik deze datum zelf kan invullen/wijzigen.
Zodra je gaat keuren, maar je daar een apart record voor. Dat krijgt een datum (doorgaans de huidige datum, dus dat is een standaardwaarde). In dat record vul je dan in wat voor soort keuring, etc.
Op basis van dat ingevulde record weet je de volgende keuring: dat is namelijk bepaald door wat je bij het artikel hebt ingevuld bij [Frequentie] en Interval. Is dat Maandelijks en de waarde 3, dan is de volgende keuring over 3 maanden. Doe je vervolgens over 3 maanden een nieuwe keuring (omdat dat er in de query uit kwam rollen) dan kun je met DMAX of DLAST simpel op het formulier laten zien wanneer de laatste keuring was. Want die waarde (uit dat record) zoek je met die functies op. Nergens hoef je m.i. ergens de laatste keuringsdatum in te vullen...
 
dan kun je met DMAX of DLAST simpel op het formulier laten zien wanneer de laatste keuring was.
Zo'n functie was ik ongeveer wel naar op zoek. Als je de laatste keuringsdatum wil laten zien hoe doe je dat dan? Ik snap wel hoe de expressie opgebouwd dient te worden, maar ik weet niet hoe die de laatste keuring weergeeft van het artikel waarvoor je de keuring doet, dus op basis van het artikelnummer die je hebt ingevuld.
 
D-functies hebben ook een criterium dat je dan toevoegt. Iets als:
Code:
DMax("[veldnaam]";"[tabelnaam]";"[IDveld]=" & [IDveld])
In dit geval is het IDveld dan je datumveld vermoed ik.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan