Validatieregel & Query probleem

Status
Niet open voor verdere reacties.

maximem

Gebruiker
Lid geworden
15 aug 2009
Berichten
10
Goeieavond beste vrienden,

Ik heb volgende week een proefexaam en het zou leuk zijn moesten jullie me eventjes kunnen helpen... Het gaat over het volgende:

1. Ik zou graag willen bij validatieregel (validationrule) dat de einddatum groter of gelijk aan de begindatum is. Nou krijg ik telkens een syntax error van SQL... erg vervelend... En ik zou ook graag willen weten hoe ik ervoor kan zorgen dat het bv verplicht is van tussen de einddatum en begindatum minstens 5 dagen tussen te laten...

Zie bijlage voor prtsc

2. Een query probleem die ik niet kan oplossen. Stel nu dat je klanten hebt van een taxibedrijf. Je hebt voornaam, achternaam, adres & postcode. Je wil alle klanten laten tonen buiten die klanten met postcode 2800 or 3000 (ja sorry ben Vlaming, zijn andere postcodes dan bij jullie...) Ik dacht dan dat je bij criterium: Not "2800" or "3000" zou zetten (leek me logisch, maar op die manier doe ie het dus niet :mad:)

Erg vervelend lijkt mij...

Ik bedank al diegene die me wille helpen al op voorhand.

Mvg,

Max
 

Bijlagen

  • probleem validatieregel.jpg
    probleem validatieregel.jpg
    100,1 KB · Weergaven: 30
De foutmelding die je op tabelniveau krijgt zegt eigenlijk al wat er aan de hand is: je kunt geen check maken op meerdere kolommen, of eigenlijk: velden.
De reden daarvoor is wel logisch: op het moment dat je een einddatum invult, zit je in de bewerkingsmodus van het record. Access heeft het record dus niet opgeslagen, weet dus niet wat er in de andere velden staat, en kan ze ook niet valideren.
De enige manier om dat te omzeilen, is om de check op een formulier in te bouwen. Een formulier heeft van dit probleem minder last, omdat je a.hw. een laag tussen de gegevens en het record legt, zodat je tussentijdse controles kunt maken. Hierbij kun je dus ook relatief simpel controleren of er voldoende dagen tussen begin- en einddatum zitten.
een voorbeeldje:

Als je een formulier hebt gemaakt met de velden txtBeginDatum en txtEinddatum, kun je de volgende check zetten op het veld txtEinddatum:

Code:
Private Sub txtEindDatum_AfterUpdate()

If Me.Tot < Me.Van + 5 Then
    MsgBox "Kijk nog eens naar de datums...." & vbCrLf _
        & "Er moeten minstens 5 dagen tussen zitten.", vbOKOnly
    Me.txtEindDatum.Value = ""
End If

End Sub

Het tweede probleem is volgens mij het gebruik van een verkeerd woordje:

[Postcode] <> 2800 AND [Postcode] <>3000

Michel
 
merci, maar van die formulier is maar vaag hoor... omdat dit bij het deel hoort van tabellen en niet bij formulieren... dus het moet op 1 of andere manier opgelost worden vanuit tabel...

en over het tweede deel heb ik het over bij criteria (van u query ...)
 
Voor het 2e deel -> de query is als volgt:

Code:
SELECT Adressen.Id, Adressen.Voornaam, Adressen.Achternaam, Adressen.Adres, Adressen.Postcode
FROM Adressen
WHERE (((Adressen.Postcode) Not Like "3000*" And (Adressen.Postcode) Not Like "2800*"));

Waarbij tabel Adressen en velden in dit voorbeeld fictief zijn. Ik weet niet hoe je velden en de tabel heet.

Ik neem aan dat je postcodes voluit schrijft, bijvoorbeeld: 3000TT -> Daarom 3000*
 
Ik snap dat je de validatie op tabelniveau probeert te doen, maar ik probeerde je dus uit te leggen dat dat absoluut niet kan. En wat niet kan, kan niet....

De enige manier waarop je kunt checken of een einddatum later is dan een begindatum, is een formulier maken op basis van je tabel, en daar dus de checks op zetten die ik als voorbeeld heb gepost.
Als je daar niet uitkomt, dan raad ik je aan om een voorbeeldje van de database te posten, waarbij je alle gevoelige informatie er uiteraard uithaalt. Waarschijnlijk moet je de database ook nog Comprimeren en Herstellen, en eventueel zippen om hem klein genoeg te houden.
Eventueel kan ik wel een voorbeeldje posten waarin mijn verhaal wordt gedemonstreerd.
Nogmaals: je kunt de controle niet in de tabel uitvoeren...

Michel
 
Kijk, zelf op de webstie http://office.microsoft.com/nl-nl/access/HA100963121043.aspx zegt men dat dit mogelijk is (zie bijlage)

en op het examen die ik gehad heb (waar ik jammer genoeg onvoldoende voor had) zou het echt wel mogelijk moeten zijn om dit vanuit validatiergel te moeten kunnen doen...

groetjes,

max
 

Bijlagen

  • validatieregel_microsoftonline.JPG
    validatieregel_microsoftonline.JPG
    37,3 KB · Weergaven: 30
Ivm het 2e deel van de query ... is het helemaal niet zo gecompliceerd als die formule hoor... nujah :s

groetjes
 
Een validatie op tabelniveau moet je zetten bij de tabeleigenschappen. Dus niet bij de eigenschappen van een veld, zoals je nu doet.
De validatie wordt pas uitgevoerd op het moment dat het betreffende record wordt opgeslagen, en dus niet meteen na invoeren een veld.
 

Bijlagen

  • Validatie.JPG
    Validatie.JPG
    35,1 KB · Weergaven: 28
THX HARRY, nu nog probleem kunne oplossen als men vraagt...

Maak een lijst van alle klanten (voornaam, naam, adres & postcode), waarbij de klanten met postcode 3000 & 2800 niet mogen voorkomen...

Hoe vul je dat in bij criteria dan... ik weet wel hoe je doet dat je enkel 3000 & 2800 moet laten zien, maar nie hoe je alles moet laten zien buiten 3000 & 2800

bedankt hé harry
 
Oh, ik dacht dat, dat probleem als was opgelost, met de bijdragen van andere forummers

De syntax van het criterium hangt af van veldtype van Postcode. In België zou dat ook numeriek kunnen zijn i.p.v. tekst
Vul op de plaats waar je nu Not "2800" or "3000" hebt staan in:
Postcode is tekst: <>"2800" and <>"3000"
of
Postcode is numeriek: <>2800 and <>3000
 
raar die doe da dus nie bij mij.... die geeft dan nog altijd die postcodes...
 
Laatst bewerkt:
Waar zet je het criterium dan?
 
Ik heb maar ff een voorbeeld gemaakt... :rolleyes:

Als je volledige postcode (bijv: 3000TT) gebruikt, dan criterium:
Not Like "3000*" And Not Like "2800*"

Als je onvolledige postcode (bijv: 3000) gebruikt, dan criterium:
<>2800 And <>3000 (postcode is numeriek veld)

Zie voorbeeld, hier staan 2 verschillende tabellen en 2 bijbehorende queries.
1: Volledige postcodes en Not Like criterium.
2: Onvolledige postcodes en <> criterium.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan