28. november 2002 - 09:20Der er
11 kommentarer og 1 løsning
betingede kriterier i udtryk
Jeg har brug for et felt hvor der kun må tastet f.eks. a, b, op k hvis et andet felt er lig "Danmark" og ellers kun l, m, op til s hvis det IKKE er "Danmark"
I et stadigt mere komplekst trussel landskab, hvor sofistikerede cyberangreb, ransomware og datalækager udgør en konstant risiko, er IT-sikkerhed for længst rykket direkte ind i bestyrelseslokalet.
Du er nødt til at lægge kode på din formular, da du ikke kan lave denne form for validering på tabel-niveau.
Prøv at lægge denne kode på feltets VedTastetryk-hændelse:
Private Sub Text0_KeyPress(KeyAscii As Integer) If Me![Dit Andet felt] = "Danmark" Then If (KeyAscii >= vbKeyA And KeyAscii <= vbKeyK) Or (KeyAscii >= Asc("a") And KeyAscii <= Asc("k")) Then Else KeyAscii = 0 End If Else If (KeyAscii >= vbKeyL And KeyAscii <= vbKeyS) Or (KeyAscii >= Asc("l") And KeyAscii <= Asc("s")) Then Else KeyAscii = 0 End If End If End Sub
Hej Thomas! Har du et andet bud, jeg har prøvet at kopiere teksten ind og rettet feltet til. Det skal sige at det er en underformular som er knyttet til en formular, men det gør vel ingen forskel.
Der kan være flere ting, som går galt. Prøv derfor at følge denne anvisning:
-Åbn underformularen alene i design -Marker det felt, som skal valideres. -Find egenskaben VedTastetryk og klik på knappen med de 3 prikker til højre (og vælg kodegenerator) -Herefter skal du blot indsætte nedenstående kode mellem de 2 linier:
If Me![Dit Andet felt] = "Danmark" Then If (KeyAscii >= vbKeyA And KeyAscii <= vbKeyK) Or (KeyAscii >= Asc("a") And KeyAscii <= Asc("k")) Then Else KeyAscii = 0 End If Else If (KeyAscii >= vbKeyL And KeyAscii <= vbKeyS) Or (KeyAscii >= Asc("l") And KeyAscii <= Asc("s")) Then Else KeyAscii = 0 End If End If
Udksift [Dit Andet felt] med navnet på feltet hvor der skal stå "Danmark".
Hvis du ikke følger denne rækkefølge, kan Access ikke knytte koden korrekt til hændelsen.
Så skal koden se således ud: If Me.Parent![Dit Andet felt] = "Danmark" Then If (KeyAscii >= vbKeyA And KeyAscii <= vbKeyK) Or (KeyAscii >= Asc("a") And KeyAscii <= Asc("k")) Then Else KeyAscii = 0 End If Else If (KeyAscii >= vbKeyL And KeyAscii <= vbKeyS) Or (KeyAscii >= Asc("l") And KeyAscii <= Asc("s")) Then Else KeyAscii = 0 End If End If
Hvis Land ligger på hovedformularen og dit indtastningsfelt ligger på underformularen, så skal koden bare se således ud:
If Me.Parent!Land = "Danmark" Then If (KeyAscii >= vbKeyA And KeyAscii <= vbKeyK) Or (KeyAscii >= Asc("a") And KeyAscii <= Asc("k")) Then Else KeyAscii = 0 End If Else If (KeyAscii >= vbKeyL And KeyAscii <= vbKeyS) Or (KeyAscii >= Asc("l") And KeyAscii <= Asc("s")) Then Else KeyAscii = 0 End If End If
Tak for det. Det virker. Jeg skulle egentlig have de nordiske lande skrevet på samme sted som Danmark står, jeg har forsøgt med at udvide If Me.Parent!Land = "Danmark" ; "Norge" o.s.v. Then men uden held, kan du stadig hjælp mig?
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.