Avatar billede kamelkalle Nybegynder
30. november 2003 - 18:03 Der er 8 kommentarer

Datovalidering i Access

Hej

Jeg har lavet en simpel database med nogle sportsudøvere (tblDeltagere) som kan tilmelde sig en række konkurrencer (tblDiscipliner). Det er en mange-til-mage relation og jeg har således lavet en ekstre tabel kaldet tblDeltagertilmelding. Her skal man taste nye tilmeldiner ind samt den data man tilmelder sig (=Now()). Hver konkurrence har dog en deadline for tilmelding.
  Jeg vil gerne have en valideringsregel, således at den dato man indtaster skal være mindre end (altså være før) en datoværdi som Access selv skal finde alt afhængig af hvilken konkurrence man tilmelder sig. HVad skal jeg skrive som valideringsregel. Man kan ikke skrive "[tbldiscipliner.deadlinefortilmelding]>[Now()]", men hvad så?
Avatar billede kamelkalle Nybegynder
30. november 2003 - 18:05 #1
Hov, man skal naturligvis ikke selv indtaste datoen, men access skal bare tage den dato for hvilken man indtaster
Avatar billede terry Ekspert
30. november 2003 - 18:10 #2
I this for a web application or Access?
Avatar billede terry Ekspert
30. november 2003 - 18:13 #3
In Access you would do this in the BEFORE INSERT event of the form you use to enter the data through.

Something like:

If Date() > Dlookup("deadlinefortilmelding", "tbldiscipliner", "disciplin = " & Me.disciplin ) Then

msgbox "Too Late"
Cancel = True

end if
Avatar billede kamelkalle Nybegynder
30. november 2003 - 21:08 #4
But can't it be done as a "validation rule". And where do I type the thing you mention?
30. november 2003 - 21:46 #5
Det kan ikke laves som valideringsregel, da valideringsreglerne kun kan håndtere simple funktioner.

Terry's kode skal lægges på formularen (du indtaster vel gennem en formular, ikk'?) JEg vil dog lægge koden et lidt andet sted end Terry.

Jeg foreslår derfor at du, i designvisning, klikker på feltet Diciplin og derefter på den egenskab, som hedder FørOpdatering. Til højre i egenskaben fremkommer en knap med 3 prikker. Når du klikker på denne, kommer en dialogboks frem, hvor du vælger "Kodegenerator".

Herefter skriver du:
Private Sub Disciplin_BeforeUpdate(Cancel as Integer)
If Date() > Dlookup("deadlinefortilmelding", "tbldiscipliner", "disciplin = " & Me.disciplin ) Then
  msgbox "Too Late"
  Me!Disciplin.Undo
  docmd.Cancelevent
endif
End sub

/Thomas

NB: Feltnavne og tabelnavne skal selvfølgelig tilpasses.
Avatar billede terry Ekspert
01. december 2003 - 17:59 #6
If you are having problems with this then you can send me your dB and I will make an example so you can see how it works.
NOSPAM@eksperten@santhell.dkNOSPAM

You need to remove NOSPAM from the email address!
Avatar billede terry Ekspert
04. december 2003 - 19:55 #7
obviously this isnt a problem!
10. maj 2004 - 21:26 #8
kamelkalle->Lukker du ikke dette spm?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester