Avatar billede stmsoe Nybegynder
02. januar 2013 - 15:30 Der er 6 kommentarer

"Benspænd" for at sikre korrekt dataindtastning

Jeg har hørt det er muligt og tilrådeligt i Access 2003 at indkode "fælder" for at sikre korrekt dataindtastning:

Fx der kommer en meddelelse hvis man i en kolonne svarer "nej" og i en anden kolonne svarer "ja" - fx "nej, der er ikke sygdom" og i en anden kolonne "ja, der er komplikationer til sygdom" - de to udsagn er selvmodsigende da der ikke kan være komplikationer til sygdom hvis der ikke er sygdom.

Jeg ønsker at lave flere af den slags "fælder" gerne på tværs af relaterede tabeller om muligt? Jeg tror ikke løsningen for mig er at gøre felterne afhængige af hinanden så et felt kun kommer op hvis man har svaret "ja" idet jeg har brug for at felterne udfyldes til efterfølgende statistiske beregninger.

Jeg er ny i Access og håber at det ikke er det rene volapyk jeg har spurgt om - jeg har ikke kunnet finde svaret i tidligere spørgsmål.
Avatar billede mugs Novice
02. januar 2013 - 16:30 #1
Du kan lave det dom en simpel Iff Then sætning i stil med dette:

If me.felt1 = "Ja" and me.felt2 = "Nej" then
msgbox "Der er fejl i indtastning"
End If
Avatar billede stmsoe Nybegynder
02. januar 2013 - 16:51 #2
Og dette sætter jeg ind som en valideringsregel i begge de pågældende spørgsmål?

Når jeg prøver at sætte dette ind som valideringsregel i udtryksgeneratoren

If me.Smertfrie perioder = "1" and me.Antal smertefrie perioder = "0" then
msgbox "Der er fejl i indtastning da der er svaret "ja" til smertefrie perioder"
End If

(Idet der ikke kan være 0 smertefrie perioder hvis der har været smertefrie perioder idet 1 = ja)

Så kommer der besked om at det er en ugyldig syntaks?
Avatar billede mugs Novice
02. januar 2013 - 16:59 #3
Du skal programmere det i VBA.
Du bør undgå mellemrum i objektnavne.
Avatar billede stmsoe Nybegynder
03. januar 2013 - 09:14 #4
Ok - mange tak for svaret - points til dig
Avatar billede mugs Novice
03. januar 2013 - 10:24 #5
Tak - Så skal du markere mit svar og derefter trykke på accepter.
09. januar 2013 - 22:26 #6
Jeg plejer at benytte Before_Update event på formularen til at checke at alt er udfyldt korrekt.

Private Sub Form_BeforeUpdate()
  Cancel=Not ValidateForm()

End Sub

Public Function ValidateForm() As Boolean
    Dim strMsg As String
   
    'There must be a title
    If Me.tb_PackName & "" = "" Then
        strMsg = strMsg & vbNewLine & "(*) The name property must be filled in"
    End If
   
    'There must be a date received
    If Me.tb_DateReceived & "" = "" Then
        strMsg = strMsg & vbNewLine & "(*) The Date received must be filled out"
    End If
   
    'The issuer must be selected
    If IsNull(Me.cmb_Issuer) Then
        strMsg = strMsg & vbNewLine & "(*) The issuer must be selected"
    End If
   
    If strMsg & "" <> "" Then
        strMsg = "The record could not be saved for the following reason(s):" & vbNewLine & strMsg & vbNewLine & vbNewLine & _
                "Please correct and try again."
        MsgBox strMsg
        ValidateForm = False
    Else
        ValidateForm = True
    End If

End Function


En fordel ved denne tilgang er at den samler alle fejlene og præsenterer dem på en gang. I mit eksempel checkes der blot at felterne er udfyldt, men det kan jo tilpasses.
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