|
| Validering af input Fra : Ole J. Hansen |
Dato : 02-03-09 17:02 |
|
Hej alle
Jeg har en database, hvor jeg gerne vil validere inputtet, men jeg har
vanskeligt
ved at få det til at fungere, jeg ville gerne skrive ca. sådan:
Private Sub Text1(6)_Change(Index As Integer)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc(" ")
Case Asc("-")
Case Asc(vbBack)
Case Else
KeyAscii = 0
End Select
End Sub
Mit problem er, at mine testfelter på formularen er lavet i et array, og jeg
kan
ikke finde ud af, hvorledes jeg skal skrive den første linie i denne
procedure,
jeg mener ikke, at jeg kommer ind i proceduren her, og min indata bliver
ikke
valideret.
m.v.h.
Ole
| |
Jens Vestergaard (02-03-2009)
| Kommentar Fra : Jens Vestergaard |
Dato : 02-03-09 20:49 |
|
"Ole J. Hansen" <ojh@hansenvæk.mail.dk> skrev den 02 mar 2009 i
news:49ac02f4$0$90270$14726298@news.sunsite.dk:
> Hej alle
>
> Jeg har en database, hvor jeg gerne vil validere inputtet, men jeg har
> vanskeligt
> ved at få det til at fungere, jeg ville gerne skrive ca. sådan:
>
> Private Sub Text1(6)_Change(Index As Integer)
> Select Case KeyAscii
> Case Asc("0") To Asc("9")
> Case Asc(" ")
> Case Asc("-")
> Case Asc(vbBack)
> Case Else
> KeyAscii = 0
> End Select
> End Sub
>
Hvis det skal forstås sådan, at du kun vil validere Text1(6), skal du
droppe "6" definitionen (brug den originale definition) og starte med en
sætnng som f.eks:
If Index <> 6 Then Exit Sub
.... så bliver resten af koden kun afvklet for array index 6
--
mvh
Jens Vestergaard
| |
Ole J. Hansen (03-03-2009)
| Kommentar Fra : Ole J. Hansen |
Dato : 03-03-09 10:38 |
|
Hej Jens
Tak for dit svar, men jeg -fatter- fortsat ikke, det var jo min hensigt,
at der i Text1(6) kun kunne indskrives nummeriske karrakterer og et
par andre, men ikke bogstaver.
Jeg har prøvet det du skrev, men jeg kan skrive alt muligt ind i feltet
jer har ændret min procedure til:
Private Sub Text1_Change(Index As Integer)
If Index <> 6 Then Exit Sub
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc(" ")
Case Asc("-")
Case Asc(vbBack)
Case Else
KeyAscii = 0
End Select
End Sub
Og du har ret, det er kun felt med index 6 jeg vil validere, hvad
gør jeg nu galt ?
m.v.h.
Ole
"Jens Vestergaard" <j@railsoft.dk> skrev i meddelelsen
news:Xns9BC2D3D23F91Fjrailsoftdk@62.243.74.163...
> "Ole J. Hansen" <ojh@hansenvæk.mail.dk> skrev den 02 mar 2009 i
> news:49ac02f4$0$90270$14726298@news.sunsite.dk:
>
>> Hej alle
>>
>> Jeg har en database, hvor jeg gerne vil validere inputtet, men jeg har
>> vanskeligt
>> ved at få det til at fungere, jeg ville gerne skrive ca. sådan:
>>
>> Private Sub Text1(6)_Change(Index As Integer)
>> Select Case KeyAscii
>> Case Asc("0") To Asc("9")
>> Case Asc(" ")
>> Case Asc("-")
>> Case Asc(vbBack)
>> Case Else
>> KeyAscii = 0
>> End Select
>> End Sub
>>
>
> Hvis det skal forstås sådan, at du kun vil validere Text1(6), skal du
> droppe "6" definitionen (brug den originale definition) og starte med en
> sætnng som f.eks:
>
> If Index <> 6 Then Exit Sub
>
> ... så bliver resten af koden kun afvklet for array index 6
>
>
>
> --
> mvh
> Jens Vestergaard
>
| |
Jens Vestergaard (03-03-2009)
| Kommentar Fra : Jens Vestergaard |
Dato : 03-03-09 11:43 |
|
"Ole J. Hansen" <ojh@hansenvæk.mail.dk> skrev den 03 mar 2009 i
news:49acfa90$0$90263$14726298@news.sunsite.dk:
> Hej Jens
> Tak for dit svar, men jeg -fatter- fortsat ikke, det var jo min
> hensigt, at der i Text1(6) kun kunne indskrives nummeriske karrakterer
> og et par andre, men ikke bogstaver.
> Og du har ret, det er kun felt med index 6 jeg vil validere, hvad
> gør jeg nu galt ?
Du har jo ingen kode, der fortæller, hvad du vil udføre, hvis du ikke får
det ønskede input. Og du kigger jo aldrig på, hvad feltet indeholder.
Hvis du vil validere tast for tast, så er eventen KeyDown nok bedre.
Noget i retning af:
Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer,_
Shift As Integer)
If Index <> 6 Then Exit Sub
Select Case KeyCode
Case 40 To 57
MsgBox "Numerisk"
'kode til behandling af tal
Case Else
MsgBox "Ikke numerisk"
'kode til behandling af andre tegn
End Select
End Sub
--
mvh
Jens Vestergaard
| |
Ole J. Hansen (03-03-2009)
| Kommentar Fra : Ole J. Hansen |
Dato : 03-03-09 16:14 |
|
Hej Jens
Tak igen for dit svar, jeg er dybt på r...., jeg har tidligere lavet en
validering på et felt, hvor der kun må indtastes tal, og det virker
fint, jeg har læst og læst og gennemgået min gamle kode, men
jeg kan ikke finde ud af havd der ikke sker.
Det jeg gerne ville have var, at der kun kunne indtastes tal, og
hvis der blev indtastet et bogstav, så skulle det ikke kunne lade
sig gøre.
Det kan lade sig gøre på den gamle database, og jeg har kopieret
og kopieret, men jeg får det ikke til at virke.
m.v.h.
Ole
Jens Vestergaard" <j@railsoft.dk> skrev i meddelelsen
news:Xns9BC37730D807Djrailsoftdk@62.243.74.163...
> "Ole J. Hansen" <ojh@hansenvæk.mail.dk> skrev den 03 mar 2009 i
> news:49acfa90$0$90263$14726298@news.sunsite.dk:
>
>> Hej Jens
>> Tak for dit svar, men jeg -fatter- fortsat ikke, det var jo min
>> hensigt, at der i Text1(6) kun kunne indskrives nummeriske karrakterer
>> og et par andre, men ikke bogstaver.
>
>> Og du har ret, det er kun felt med index 6 jeg vil validere, hvad
>> gør jeg nu galt ?
>
> Du har jo ingen kode, der fortæller, hvad du vil udføre, hvis du ikke får
> det ønskede input. Og du kigger jo aldrig på, hvad feltet indeholder.
>
> Hvis du vil validere tast for tast, så er eventen KeyDown nok bedre.
>
> Noget i retning af:
>
> Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer,_
> Shift As Integer)
> If Index <> 6 Then Exit Sub
>
> Select Case KeyCode
> Case 40 To 57
> MsgBox "Numerisk"
> 'kode til behandling af tal
> Case Else
> MsgBox "Ikke numerisk"
> 'kode til behandling af andre tegn
> End Select
>
> End Sub
>
>
> --
> mvh
> Jens Vestergaard
>
| |
|
|