Avatar billede susanne_larsen Nybegynder
10. april 2002 - 21:11 Der er 19 kommentarer og
1 løsning

Access - undertrykke valideringsmeddelelse

Har i en tabel - tblInstruktoer, en primørnøgle InstruktoerID. Nøglen har flg. kriterier:

Inputmaske: >LLLLLL
Valideringsregl: Like "??????"

da jeg ønsker at der kun skal kunne tastes store bogstaver i nøglen.

Ønsker at undertrykke Access´ standard-fejlemddelelse hvis bruger f.eks. kun skriver 4 bogstaver i nøglen.

Hvordan - og hvilken kode skal jeg have på min formular kaldet frmInstruktoer for klare denne opgave.

Meddelelsen kunne jo f.eks. være "ID skal være på 6 bogstaver"

Hilsen Susanne
Avatar billede henrik13 Nybegynder
10. april 2002 - 21:23 #1
Gå i Funktioner og i start, Fjern krydset i tillad fejl.
Vh Henrik
Avatar billede terry Ekspert
10. april 2002 - 21:29 #2
Like "??????"

in validation rule for field
Enter 6 char
In Validation text for field
Avatar billede terry Ekspert
10. april 2002 - 21:30 #3
ID skal være på 6 bogstaver

In Validation text for field!
Avatar billede terry Ekspert
10. april 2002 - 21:34 #4
Susanne hav eyou looked at the answer I gave here?
http://www.eksperten.dk/spm/196204
Avatar billede susanne_larsen Nybegynder
10. april 2002 - 22:18 #5
Desværre - troede også den kunne løses ved at bruge denne metode.

Den valideringsregl jeg har angivet på tekstboxen kommer ikke frem overhovedet. Får kun Access standard fejlmeddelelse
Avatar billede mugs Novice
10. april 2002 - 22:29 #6
Længden af den indtastede tekststreng kan du teste ved at indsætte følgende kode i feltets BeforeUpdate event:

If Len(Me.felt1) <> 6 Then
MsgBox "Den indtastede tekst skal være på 6 tegn"
Me.Undo
End If

Du skal naturligvis udskifte feltnavnet (felt1) med dit eget.
Vedr. store bogstaver i valideringsreglen er jeg ikke rigtig klar over, men det har tidligere været rejst. Prøv evt. at søge.
Avatar billede susanne_larsen Nybegynder
10. april 2002 - 22:54 #7
Er desværre ikke nok. Virker kun hvis jeg ikke indtaster noget i feltet overhovedet.

Access vanlige fejlmeddelse kommer frem alligevel.

Har prøvet at tilføje

Response = acDataErrContinue

for at undertrykke den - men duer ikke.
Avatar billede jkrons Professor
11. april 2002 - 00:30 #8
Jeg bruger noget der ligner ovenstående fra mugs, men på LostFocus. Så kontrolleres længden, inden der foretages opdatering. Kun hvis længden er 6, skrives til tabellen, og så er valideringsreglen altid opfyldt, hvorfor meddelelsen er irrelevant og aldrig vises
.
If Len(id) <> 6 0 Then
MsgBox "Et ID skal være mellem 6 langt. Prøv igen", vbInformation
me!id = ""
End If
Avatar billede jkrons Professor
11. april 2002 - 00:32 #9
Prøver lige igen, og så uden fejl

If Len(id) <> 6 Then
MsgBox "Et ID skal være mellem 6 langt. Prøv igen", vbInformation
me!id = ""
End If
Avatar billede terry Ekspert
11. april 2002 - 08:13 #10
Sounds VERY strange that you can NOT use ValidationRule+ValidationText! and I can NOT see why mug's If Len(Me.felt1) <> 6 Then ... deosnt work!

Have you debugged too see what is happening?
Avatar billede susanne_larsen Nybegynder
11. april 2002 - 09:45 #11
desværre duer heller ikke.

Ok tror at mit problem måske skyldes at jeg allerede har noget error-handling på formularen frmInstruktoer. For at håndtere P-nøgle brud har jeg oprettet flg.


Private Sub Form_Error(DataErr As Integer, Response As Integer)

    ' If koden DataErr 3022 er = primær-nøglebrud.
    If DataErr = 3022 Then

        ' Vis custom fejl-meddelelse
        MsgBox "Instruktøren " & Me.Navn.Value & " med tlf. " & Me.Tlf & " er allerede oprettet!", vbOKOnly, "Indberetningsfejl"

        ' Undertrykker Access normale fejl-meddelelse.
        Response = acDataErrContinue

    End If
End Sub
_____________________________________________________

Har forsøgt mig med jkrons forslag


Private Sub InstruktoerID_LostFocus()

    If Len(InstruktoerID) <> 6 Then
    MsgBox "Den indtastede tekst skal være på 6 tegn, prøv igen.", vbInformation
    Me!InstruktoerID = ""
     
    End If
End Sub
_______________________________________

Access er hamrende ligeglad. Får stadig standard-fejlmedd. "Den indtaste værdi passer ikke til inputmasken ">LLLLLL" der er angivet for dette felt" :-(

og den nye custom-fejlmeddelelse kommer slet ikke frem.

Det der undrer mig endnu mere er, at hvis jeg f.eks. undlader at indtaste noget i InstruktoerID overhovedet, så vises den valideringsregl jeg har sat på valideringsregl og valideringsmeddelelse på formularen

Men hælder nu stadig til at jeg skal oprette en kode noget lignende

If DataErr = etEllerAndetTal
MsgBox bla bla

Kan det have noget at sige at jeg på tblInstruktoer har oprettet indeks på felterne Navn og Tlf - for at sikre mig at samme person ikke kan oprettes mere end en gang under forskelligt ID ???

og jep har prøvet at debugge - access overser fuldstændig koden.
Avatar billede terry Ekspert
11. april 2002 - 09:51 #12
Susanne>I will take a look at this too http://www.eksperten.dk/spm/196204
Avatar billede jkrons Professor
11. april 2002 - 10:59 #13
Susanne> Du behøver ikke at undre dig over at det virker, når du ikke indtaster noget. Access kontrollerer inputmasken først, og hvis den ikke er oveholdt, giver den en fejlmeddelelse, derfor når den aldrig frem til valideringsreglen, hvis ikke inputmasken er korrekt. Hvis du ikke indtaster noget, er der ikke noget brud på input masken, og så udføres den egentlige validering.
Avatar billede susanne_larsen Nybegynder
11. april 2002 - 13:08 #14
Terry
ok lige sendt dig en ny version af databasen.

håber virkelig der er en løsning på mine problemer :-)
Avatar billede terry Ekspert
11. april 2002 - 13:13 #15
Normally there is :o)
Avatar billede susanne_larsen Nybegynder
11. april 2002 - 17:30 #16
Terry > I´m impressed :-)

Kender ikke kommandoerne sSQL og CInt - hvad gør de ???

Mht. frmInstruktoer hvorfor er det nødvendigt med koden

If DataErr = 2279 Then
MsgBox bla bla bla.

da Access henter valideringsmeddelelsen fra tblInstruktoer ???
Avatar billede terry Ekspert
11. april 2002 - 18:40 #17
Oh! you can actually delete If DataErr .... this was just something I tried, but now it isnt needed.

sSQL is just a string I use to put the SQL statement in. Dont know if you know anything about SQL but its what is behind all of your queries.

Cint converts to an integer. It maybe isnt needed but I just want to make sure the week is a number.

:o)
Avatar billede susanne_larsen Nybegynder
11. april 2002 - 20:56 #18
SQL cool language :-)

Troede ikke løsningen kunne håndteres på denne måde. Tænkte i helt andre baner, som jeg ikke kunne få til at virke S**

Great job
Avatar billede terry Ekspert
11. april 2002 - 21:13 #19
Thanks Sussane>Yes Access can do many things, always something to learn!

Have a great weekend :o)
mvh
Terry
Avatar billede susanne_larsen Nybegynder
12. april 2002 - 12:53 #20
I lige måde

Susanne
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