Avatar billede per2edb Praktikant
29. maj 2015 - 14:39 Der er 14 kommentarer og
2 løsninger

Valideringsregel / Valideringsmeddelse i et feld på en form

På en form har jeg i et feld lagt følgende:

Valideringsregel  >#01-01-2010#

Valideringsmeddelse  "Skal være en dato på formen dd-mm-åååå"

Det virker ikke - kan i hjælpe
Jeg "hænger" hele tiden inde i feltet og kan ikke komme ud

Jeg vil helst have Valideringsmeddelse lagt i VBA koder så jeg kan redigere
Kan det lægges i en function - og hvordan?
Avatar billede mugs Novice
29. maj 2015 - 14:55 #1
n u ikke lave en msgbox i stil med dette:

If me.feltnavn <#01-01-2010 then
msgbox "din tekst"
end if
Avatar billede MSchlamovitz Mester
29. maj 2015 - 15:31 #2
i forlængelse af Mugs:
Læg Mugs kode i AfterUpdate / Efter opdatering i "feltnavn"
og skriv sådan her:
  If me.feltnavn <#01-01-2010# then
      Msgbox "din tekst"
  End If
Og et godt råd i øvrigt: Hold dig langt væk fra at lægge feltegenskaber, standardværdier, valideringsregler, formater, inputmasker m.m. i tabeldesign. Læg det i formular og rapportdesignet. Eneste undtagelser: standardværdi: 0 i talfelter og standardværdi: Date() i dato-felter, hvis du vil registrere datoen for oprettelse på en post.
Avatar billede per2edb Praktikant
29. maj 2015 - 17:02 #3
Jeg er enig i at lægge det i  AfterUpdate.
Årsagen til jeg gik videre med spørgsmålet var at der ikke testes for det SKAL være en dato.
<#01-01-2010# virker kun for f.eks 01-01- 2008 men ikke
xxxx eller 1234

Jeg skal have noget mere eller andet end <#01-01-2010#
Avatar billede mugs Novice
29. maj 2015 - 17:36 #4
Private Sub Kommandoknap2_Click()
If Me.datofelt < #1/1/2010# Then
If MsgBox("Validerer dato, dato er mindre end 01-01-2010", vbOKCancel) = vbCancel Then
Me.datofelt = Null
End If
Else
Exit Sub
End If
End Sub
Avatar billede per2edb Praktikant
29. maj 2015 - 17:52 #5
Hej
Desværre er det ikke ok
Jeg har et feld på kort datoformat
F.eks 123 eller abc bliver ikke "fanget"
Avatar billede mugs Novice
29. maj 2015 - 18:17 #6
Koden er afprøvet og fungerer i en testdb.

123 og abc er ikke gyldige datoer. Er feltet af typen "Daro - klookkeslæt"?
Avatar billede per2edb Praktikant
29. maj 2015 - 18:34 #7
Jeg tror der er misforståelser så jeg prøver igen

På en FORM har jeg et inputfeld der IKKE er databundet
Inputtet SKAL være en dato på format dd-mm-åååå
Jeg skal senere i programmet indsætte datoen i en tabel

Jeg skal altså frafiltrere fejlinput som f.eks 123 eller abc og kun
acceptere datoer større end 01-01-2010
Avatar billede mugs Novice
29. maj 2015 - 18:52 #8
inputfeld: det objekt kender jeg ikke. Er der tale om et ubundet tekstfelt eller en inputbox?

Uanset hvad, skal du sørge for at formatet er dato.

Hvis der er en tekstbox med datoformat, vil du få en systemmeddelelse, hvis du indtaster abc
Avatar billede per2edb Praktikant
29. maj 2015 - 19:06 #9
Det er et ganske almindelig ubundet tekstfeld
(Det vil jeg ikke lave om af mange årsager)
Avatar billede mugs Novice
29. maj 2015 - 19:21 #10
Et tekstfelt tillader jo alle indtastninger (karakterer), så du er nødt til at gøre noget for at opfange fejl. Hvad er formatet i feltet?
Avatar billede per2edb Praktikant
29. maj 2015 - 19:41 #11
Jeg ved det - det er netop det der gør det problematisk :-)
Det er et tekstfeld uden formatering og som jeg skriver er det af mange årsager
ikke muligt at formatere det her.

Det kan være vi helt skal glemme tekstfeldet og fange fejlen i afterupdate med vba koder der frafiltrerer og kun accepterer datoer på formen dd-mm-åååå

If Me.datofelt < #1/1/2010# Then  ....  er ok, men det er ikke nok
Rene tal og bogstaver skal også væk
Avatar billede mugs Novice
30. maj 2015 - 12:30 #12
Når jeg læser din sidste kommentar, kan jeg godt se, at jeg har været lidt på afveje. Jeg tror ikke det er så indviklet endda. Jeg har nulstillet hjernen og kommet frem til denne kode, prøv at arbejde lidt videre og vend så tilbage:

Private Sub Kommandoknap5_Click()
If IsDate(Me.Tekst3) Then
MsgBox " dato"
Else
MsgBox " ikke gyldig dato"
End If
End Sub
Avatar billede per2edb Praktikant
30. maj 2015 - 15:14 #13
Nu er jeg på sporet af problemerne.

Også IsDate har jeg prøvet før.
Her kan jeg få dit "dato men ikke "ikke gyldig dato"
"ikke gyldig dato" overroeles af systemets:
" Den indtastede værdi passer ikke ......"
Herfra kan jeg ikke manurerer

Nu kan jeg se jeg før ikke har svaret korrekt
Jeg har godt nok et feld combobox der ikke er databundet men alligevel er det da jeg bruger:  .RowSource = SQL  altså alligevel databunden

Kan systemets meddeelse slås fra?
Avatar billede mugs Novice
30. maj 2015 - 17:34 #14
Prøv med.

docmd.setwarnings = false

efterfulgt af en true, når advarslerne skal slåes til igen. Husk altid at tilkoble advarslerne igen, ellers forbliver de frakoblede i hele applikationen
Avatar billede terry Ekspert
01. juni 2015 - 13:03 #15
Just to make something clear.
If you are expecting a date in format dd-mm-yyyy then you risk trying to insert the wrong date into the table.

Dates have to be in either mm-dd-yyyy pr yyyy-mm-dd format


In example:
You enter into your text field 01-06-2015 and you believe this is 1st june 2015. Well actually it will end up in the dB as 6th January 2015.
Avatar billede per2edb Praktikant
02. juni 2015 - 11:28 #16
Tak for hjælpe
Vil i lave det så i kan få poit
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

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