Access: een aantal vragen

Status
Niet open voor verdere reacties.

maurane

Nieuwe gebruiker
Lid geworden
10 mrt 2004
Berichten
1
Hey

Hoe maak je in access en niet in visual basic een aftrekking van twee datums zodat je een leeftijd bekomt (met een query of zo).
Bv 2004-1978. en ik bedoel het zo niet, wel 14-05-2004 - 18/06/1926 bijvoorbeeld. Ik heb al geprobeerd met integers en zo maar toch blijft er een syntaxisfout. Dus als er een manier bestaat om dit via een query te doen en niet via visual basic, please let me know.

Ten tweede hoe maak je een melding dat een jaar verstreken is automatisch na een jaar? bv 12/05/2004 + 1 jaar en dan verwittigen?

Ten derde hoe kun je records die absoluut niet meer mogen gewijzigd worden beveiligen terwijl je met de andere nog kunt voortwerken?

Mercikes

Mau
 
Rekenen met jaartallen: kijk eens naar de datepart functie. Deze kun je in query's gebruiken om je doel te berijken.

Melding geven: Maak een tabel waarin je de melddatum zet. Bij het opstarten van de applicatie vergelijk je de melddatum met de systeemdatum. Gelijk, dan melding genereren.

Records beveiligen: Dit kan niet eenvoudig met Access. Het heet record level security. Het kan alleen op query niveau. Maak een query met de records die gewijzigd mogen worden en stel in dat de query uitgevoerd moet worden met Owner permission. Ontneem de schrijf etc. rechten van de normale gebruikers en je hebt je doel bereikt. Je moet hiervoor dus wel User Level Security inschakelen.


Grtz,
 
Daarvoor moet je niet de DatePart functie, maar de DateDiff functie voor gebruiken.
Daarmee kun je het verschil tussen twee datums berekenen in alle mogelijke vormen.
Zoek hem even op in de Access help, dan krijg je een goed overzicht van de vele mogelijkheden.

Ook je tweede vraag kun je oplossen door de DateDiff functie te gebruiken. Gewoon door je tabel heen lopen en m.b.v. datediff controleren of je een signaal af moet geven.

Je derde vraag is iets minder makkelijk, dat kun je namelijk niet.
De enige methode die kan werken is in je tabel een veld opnemen waarin je aangeeft dat het record geblokkeerd is.
Deze records moet je dan in je selecties niet meer meenemen.
 
Laatst bewerkt:
Hallo iedereen,

@ Bartuls, Voor het tweede geval zou ik DateAdd gebruiken. Daat kan je alle kanten mee uit. een vb.

DateAdd("m";12;[Begindatum])
Je krijgt dan exact de datum 12 maanden later. dus: 12/03/2004 wordt dan 12/03/2005.

Voor de twee andere vragen, die zijn correct beantwoord dacht ik.

Rudi
 
@ vanZwam

Er wordt bij de tweede vraag gevraagd om te bepalen of er een jaar verstreken is.
Als je dateadd gebruikt dan moet je eerst met dateadd een nieuwe datum berekenen en die vervolgens vergelijken met de datum in de tabel.
Met datediff kun je dat in één bewerking doen. Dat is veel efficienter. Vandaar dat ik daar datediff adviseer.
 
@femda-punt-com

Die methode gaat voorbij aan het feit dat er schrikkeljaren bestaan.
Verder houd die methode geen rekening met het feit dat een computer landinstellingen kent. In Amerika begint de eerste week van het jaar op een andere dag als in Nederland bijvoorbeeld.
Als je die method gebruikt ben je dus niet op iedere dag van het jaar zeker dat je het juiste antwoord krijgt.
Daar om moet je die methode NOOIT GEBRUIKEN!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan