Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 12 van 12

Onderwerp: Invoermasker (alfa)nummeriek maar géén spatie?

  1. #1
    Senior Member
    Geregistreerd
    23 februari 2007
    Locatie
    Nijmegen
    Vraag is opgelost

    Invoermasker (alfa)nummeriek maar géén spatie?

    Hallo,
    Ik wil een invoemasker gebruiken op een tekstveld waarin alleen alfanummerieke en nummerieke karakters mogen worden gebruikt.
    Echter, wanneer ik aaaaaaaa als invoermasker gebruik mogen er óók spaties worden gebruikt.
    Dat wil ik eigenlijk liever niet!
    Het veld mag helemaal gevuld zijn met cijfers en letters maar zonder (lees)tekens, en dus ookm spaties.
    Kan dat?

  2. #2
    Senior Member xps351's avatar
    Geregistreerd
    22 juni 2022
    Locatie
    Schiedam
    Groeten,

    Peter

  3. #3
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Heb je de link zelf wel gelezen?

    A De gebruiker moet een letter of een cijfer invoeren.
    a De gebruiker kan een letter of een cijfer invoeren.

    Er wordt dus niet over spaties gerept. Zelf vang ik het af met VBA.
    Laatst aangepast door OctaFish : 31 januari 2023 om 15:02
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  4. #4
    Senior Member xps351's avatar
    Geregistreerd
    22 juni 2022
    Locatie
    Schiedam
    Het blijft een kwestie van interpretatie. Ik heb moet gelezen als "spatie niet toegestaan (want geen letter of cijfer)".

    VBA is uiteraard ook een oplossing.
    Groeten,

    Peter

  5. #5
    Senior Member
    Geregistreerd
    23 februari 2007
    Locatie
    Nijmegen
    Peter had wel gelijk: bij gebruik van AAAA kun je geen spaties invoeren en bij aaaa wél.
    Echter ben je bij gebruik van AAAA verplicht om 4 karakters te gebruiken, bij aaaa gewoon maximaal 4.
    Ik moet wel de vrijheid van stringkeuze houden.
    Dus ben ik inderdaad maar even gaan scripten maar kom er toch niet helemaal uit.
    Ik heb een scriptje gemaakt om een ingevoerde string te bekijken en ongewenste karakters te verwijderen.
    Echter: script werkt niet (MSGBOX geeft gewoon de invoer met "verboden" tekens: Wat doe ik nu fout?
    Code:
    Private Sub INVOERveld_AfterUpdate()
        Dim DelChar As String
        Dim Str As String
        Dim I As Integer
        DelChar = "-_., "
        For I = 1 To Len(INVOERveld)
            Str = Replace$(INVOERveld, Mid$(xChars, I, 1), "")
        Next
        MsgBox Str
        RemoveSpecial = Str
    End Sub

  6. #6
    Senior Member xps351's avatar
    Geregistreerd
    22 juni 2022
    Locatie
    Schiedam
    Ik zie niet dat je iets doet met DelChar in de loop.

    Misschien ook maar Option Explicit gebruiken, zodat je geen ongedefinieerde variabelen kunt gebruiken?
    Groeten,

    Peter

  7. #7
    Senior Member
    Geregistreerd
    23 februari 2007
    Locatie
    Nijmegen
    Nee,
    Ik heb het gevonden,
    Moet zijn:

    Code:
    Private Sub INVOERveld_AfterUpdate()
        Dim DelChar As String
        Dim Str As String
        Dim I As Integer
        DelChar = "-_. ,"
        For I = 1 To Len(INVOERveld)
            INVOERveld = Replace$(INVOERveld, Mid$(DelChar, I, 1), "")
        Next
        MsgBox INVOERveld
        RemoveSpecial = INVOERveld
    End Sub
    Zo werkt hij wel (ik had verkeerde variabele gebruikt...)
    Heren: Bedankt weer!
    Laatst aangepast door jbusser : 31 januari 2023 om 10:39

  8. #8
    Senior Member
    Geregistreerd
    15 mei 2006
    jbusser,

    Denk niet dat u hiermee alle ongewenste tekens mee weg haalt.
    b.v. (&*%$#!?){}[]
    probeer deze code maar eens:


    Code:
    Option Compare Database
    Option Explicit
    Dim Q As Integer
    
    Private Sub Form_Open(Cancel As Integer)
    DoCmd.Maximize
    End Sub
    
    Private Sub Getal_Change()
    Dim X As Integer
    Me.Refresh
    X = Nz(Len(Me.Getal), 0)
        If Q = 2 Then
            Me.Getal = Mid$(Me.Getal, 1, Len(Me.Getal) - 1)
           Q = 0
           GoTo uit
        End If
        If X > 0 Then
            Select Case Asc(Right(Me.Getal, 1))
                   Case 48 To 57
                        GoTo uit
                   Case 64 To 91
                        GoTo uit
                   Case 97 To 122
                        GoTo uit
                   Case Else
                   Me.Getal = Mid$(Me.Getal, 1, Len(Me.Getal) - 1)
            End Select
        End If
    uit:
    Me!Getal.SelStart = Me!Getal.SelLength
    End Sub
    
    Private Sub Getal_KeyDown(KeyCode As Integer, Shift As Integer)
    Q = Shift
    End Sub
    Groetjes,

  9. #9
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Ik doe het anders (zal niet zeggen slimmer )
    Code:
    Private Sub Postcode_Change()
        With Me.Postcode
            If Right(.Text, 1) = " " Then
                .Text = Trim(.Text)
            End If
        End With
    End Sub
    Ik vang de ellende dus al af vóórdat de gebruiker het veld verlaat. En deze techniek kun je uiteraard ook gebruiken om andere voorwaarden af te dwingen, bijvoorbeeld als de eerste vier tekens een getal moeten zijn, en de volgende twee een letter. (Inderdaad, een postcode. En die kan uiteraard ook met een invoermasker).
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  10. #10
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Nog een variant gebaseerd op de oplossing van pletter (dus alleen Letters en Cijfers toestaan, verder niks)
    Code:
    Private Sub Postcode_Change()
       On Error GoTo Hell
        With Me.Postcode
            If Right(.Text, 1) = " " Then
                .Text = Trim(.Text)
            ElseIf (Asc(Right(.Text, 1)) >= 48 And Asc(Right(.Text, 1)) <= 57) _
                Or (Asc(Right(.Text, 1)) >= 65 And Asc(Right(.Text, 1)) <= 92) _
                Or (Asc(Right(.Text, 1)) >= 97 And Asc(Right(.Text, 1)) <= 122) Then
            Else
                .Text = Left(.Text, Len(.Text) - 1)
            End If
        End With
    Hell:
    End Sub
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

  11. #11
    Senior Member
    Geregistreerd
    23 februari 2007
    Locatie
    Nijmegen
    Oplossingen genoeg dus.
    De oplossing die ik hierboven schetste is voor mij wel ideaal, eigenlijk.
    Ik bedacht mij later dat ik mogelijk in sommige gevallen wél (back-)slashes moet toestaan.
    in het script kan ik de te verwijderen karakters, toegewezen aan de variabele DelChar nu heel specifiek aanpassen.
    Wellicht dat ik die waarde in instellingen gewoon aanpasbaar maak.

  12. #12
    Tera Honourable Senior Member
    Verenigingslid
    OctaFish's avatar
    Geregistreerd
    6 februari 2009
    Locatie
    Rotterdam
    Kan in mijn code ook, kwestie van de ASCII code toevoegen . en die van pletter. Persoonlijk hou ik niet zo van een AfterUpdate. Geef mij maar voorkomen, dat is (bijna altijd) beter dan genezen .
    Gebruik de QUOTE knop alleen als je iets wit citeren.
    Op deze pagina kun je zien hoe je met TAGS werkt.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren