validatie cel 2009<>2010

Status
Niet open voor verdere reacties.

Jan de Ruyter

Verenigingslid
Lid geworden
22 okt 2000
Berichten
152
Ik ben bezig om een invoer cel in een access database te controleren op de juiste invoer, in het bestaande programma werkte de validatie in 2009 goed maar deze wil in 2010 niet meer goed werken.

De regel die in de cel staat =Left([week];2) Between Right(Year(Date());1) And Right(Year(Date());1)+1

Nu heb ik al zeer veel mogelijkheden getest, ik ging ervan uit dat de controle van Year aangepast moest worden naar =Left([week];2) Between Right(Year(Date());2) And Right(Year(Date());2)+1
Dit geeft niet het gewenste resultaat, om eerlijk te zijn begrijp ik de regel ook niet goed.
Heb ook geprobeerd om groter dan en kleiner dan te gebruiken maar dat werkte ook niet goed.

De bedoeling is dat er in een cel de volgende mogelijkheden moet kunnen worden getypt
1001 t/m 1052 waarbij 10 (jaartal) en 52 (weekgetal) zijn, tevens is het toegestaan om in deze cel 10a t/m 10z in te voeren. waarbij 10 (jaartal) en a t/m z een speciale code is, om aan tegeven dat er in die week iets speciaals gebeurt.
[week] is de cel waar de validatie voor moet werken, deze cel is tekst zonder opmaak.

Zou iemand mij kunnen helpen, met het volgende
1. Uitleg over de validate regel die altijd goed heeft gewerkt.
2. Een juiste validatie regel die bovenstaande controleerd.

Alvast bedankt voor de moeite
 
Er vindt wellicht geen automatische casting meer plaats: de left() en right() functies geven een string terug, daar probeer je dan één bij op te tellen. Normaliter zal VBA dan een cast doen naar een integer en dan is er geen probleem. Wat de regel doet is als volgt; ervan uitgaande dat week 1030 bevat:
Left([week];2) -> 10
Year(Date()) -> 2010
Right(Year(Date());2) -> 10
Right(Year(Date());2)+1 ->11, maar dit zou dus ook 101 kunnen zijn!

Je zou dus eens kunnen proberen om deze validatie toe te passen
=cint(Left([week];2)) Between cint(Right(Year(Date());2)) And cint(Right(Year(Date());2))+1
 
Er vindt wellicht geen automatische casting meer plaats: de left() en right() functies geven een string terug, daar probeer je dan één bij op te tellen. Normaliter zal VBA dan een cast doen naar een integer en dan is er geen probleem. Wat de regel doet is als volgt; ervan uitgaande dat week 1030 bevat:
Left([week];2) -> 10
Year(Date()) -> 2010
Right(Year(Date());2) -> 10
Right(Year(Date());2)+1 ->11, maar dit zou dus ook 101 kunnen zijn!

Je zou dus eens kunnen proberen om deze validatie toe te passen
=cint(Left([week];2)) Between cint(Right(Year(Date());2)) And cint(Right(Year(Date());2))+1

ga dit morgen ochtend even proberen, alvast bedankt voor het antwoord
 
ga dit morgen ochtend even proberen, alvast bedankt voor het antwoord

Helaas werkt deze oplossing niet, Ik heb nu de volgende regel ingevoerd die wel werkt maar ik vraag me af of dit niet makkelijker en beter kan, misschien wil je nog even kijken.

Like "10??" Or Like "10a" Or Like "10b" Or Like "10c" Or Like "10d" Or Like "10e" Or Like "10f" Or Like "10g" Or Like "10h" Or Like "10i" Or Like "10j" Or Like "10k" Or Like "10l" Or Like "10m" Or Like "10n"

Alvast bedankt
 
Like "10??" is gelijk aan al die andere like's na de or's
Maar uhm, wellicht zou je iets kunnen doen als:
Code:
Left([week];2) = right(year(date())
Helaas geef je niet precies aan wat er fout gaat. Krijg je een foutmelding, of worden de invoer onterecht als valid beschouwd? Of juist andersom?
 
Like "10??" is gelijk aan al die andere like's na de or's
Maar uhm, wellicht zou je iets kunnen doen als:
Code:
Left([week];2) = right(year(date())
Helaas geef je niet precies aan wat er fout gaat. Krijg je een foutmelding, of worden de invoer onterecht als valid beschouwd? Of juist andersom?


allereerst mij excusses over het late tijdstip van deze reactie.

De validatie die goed zou moeten zijn zijn de code 10A, 10B, 10C,10D,10E,10F,10G,10H, etc. en de codes 1001,1002 t/m 1052 dus zowel een invoer van drie waardes als van 4 waardes maar dan wel binnen een range.
De voorgestelde code werkt niet hij geeft aan dat er een ([of | mist.

Als ik alleen 10?? zou doen kan ik geen drie waardes kwijt de validatie verwacht dan een vierde.

Er komt dus niet echt een foutcode maar je kan dan een verkeerde waarde invullen of de juiste niet kwijt, momenteel werkt het dus wel met de zeer lange validatieregel.

Alvast bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan