Funzioni manipolazioni stringhe non funzionanti in maschera access

di il
11 risposte

Funzioni manipolazioni stringhe non funzionanti in maschera access

Buongiorno a tutti,
innanzitutto complimenti per questo forum.
Ho un problema che avrei intenzione di sottoporvi. Sto preparando un database per motivi di ufficio. ho preparato una maschera, che tra le varie caselle di testo, presenta una casella nella quale l'utente deve inserire un cognome.

Ora, io vorrei implementare un controllo che impedisca all'utente di inserire stringhe di testo che non siano attinenti ad un cognome (ad esempio, è ammesso il cognome Rossi, ma non stringhe del tipo 44rossi, ropssi_99 ecc).

per questo motivo, ho creato del codice visual basic che si innesca dopo l'aggiornamento della casella di testo (quindi, quando viene invocata la funzione Private Sub cognome_AfterUpdate() ). Fin qui tutto ok, solo che, quando inserisco nel codice le funzioni di manipolazione delle stringhe, la sub anche se viene chiamata correttamente, improvvisamente cessa di funzionare quando vengono eseguite le funzioni di manipolazione delle stringhe. Me ne rendo conto perché ho inserito nel codice varie msgbox, che man mano che vengono eseguite, mi fanno capire che l'esecuzione è arrivata ad un certo punto del listato.

In particolare le funzioni che sto utilizzando sono:
1) Instr ( [start], string_being_searched, string2, [compare] ) per verificare se in string_being_searched sia contenuta string2, in modalità di comparazione VbCompare.Text
2)charArray() che prende una stringa e la trasforma in un array di caratteri.

premesso che non ci sono errori sintattici, in quanto al Runtime non viene segnalato alcunché, volevo chiedere voi cosa ne pensaste circa questo funzionamento. in parole povere, la mia domanda è: per utilizzare in access tutte le funzionalità e le funzioni predefinite di visual basic, è necessario effettuare qualche operazione preliminare (tipo settaggi), oppure tutto dovrebbe funzionare naturalmente in maniera predefinita?

confido nel vostro aiuto
saluti
racullone

11 Risposte

  • Re: Funzioni manipolazioni stringhe non funzionanti in maschera access

    Potrebbe essere ti manchino dei Riferimenti nelle LIBRERIE...?
    lo vedi dai Riferimenti e troverai un MANCA:(nomeLib)

    Oppure anche che tu non abbia definito la dichiarazione delle Variabili Obbligatoria...?
    Option Explicit(è un'opzione dell'editor VBA)
  • Re: Funzioni manipolazioni stringhe non funzionanti in maschera access

    Ho cercato nelle librerie. quelle che non sono spuntate non credo debba metterci la spunta, perché dai nomi credo non facciano a caso mio.
    per quanto riguarda l'option explicit, è vero che non sono esperto, ma in una mia precedente esperienza di programmazione in vba in ambiente Excel è un comando che non ho mai utilizzato. credi sia il caso di utilizzarlo adesso?
    e dove lo inserisco? in cima al listato?
  • Re: Funzioni manipolazioni stringhe non funzionanti in maschera access

    Va bene, visto che nessuno legge riformulo la domanda in maniera più semplice.
    immaginate di avere una casella di testo in una maschera, e volete fare in modo che la stringa che inserite non contenga determinati caratteri.
    voi come fareste?
    ho provato ad usare il generatore di espressioni: immaginiamo non voglio che la stringa inserita contenga il carattere 1, nel generatore di espressioni ho scritto:
    =InStr(0;[nome_maschera]![cognome].[Text];"1";[vbTextCompare])>0 
    cioè se viene trovato 1 nella stringa, il valore tornato dalla funzione dovrebbe essere >0.
    però quando rivisualizzo la maschera in modalità layout mi compare nella casella di testo l'espressione #nome?
    aiutatemi, non ci sto capendo un accidenti...
  • Re: Funzioni manipolazioni stringhe non funzionanti in maschera access

    racullone148 ha scritto:


    immaginate di avere una casella di testo in una maschera, e volete fare in modo che la stringa che inserite non contenga determinati caratteri.
    Fra le varie soluzioni è possibile:

    - escludere un insieme dei caratteri che vengono digitati impiegando l'evento KEYPRESS
    http://www.databasedev.co.uk/validate-text-string.htm
    http://mikevba.altervista.org/macro/mikevba072.ht

    - un input controllato da un formato
    https://support.office.com/it-it/article/Controllare-i-formati-di-immissione-dei-dati-con-maschere-di-input-e125997a-7791-49e5-8672-4a47832de8da

    - controllare i dati inseriti
    http://ennius.altervista.org/vba/vba77.ph
  • Re: Funzioni manipolazioni stringhe non funzionanti in maschera access

    racullone148 ha scritto:


    Va bene, visto che nessuno legge riformulo la domanda in maniera più semplice.
    immaginate di avere una casella di testo in una maschera, e volete fare in modo che la stringa che inserite non contenga determinati caratteri.
    voi come fareste?
    ho provato ad usare il generatore di espressioni: immaginiamo non voglio che la stringa inserita contenga il carattere 1, nel generatore di espressioni ho scritto:
    =InStr(0;[nome_maschera]![cognome].[Text];"1";[vbTextCompare])>0 
    cioè se viene trovato 1 nella stringa, il valore tornato dalla funzione dovrebbe essere >0.
    però quando rivisualizzo la maschera in modalità layout mi compare nella casella di testo l'espressione #nome?
    aiutatemi, non ci sto capendo un accidenti...
    Togli il riferimento alla proprietà TEXT che hai messo nella formula non va bene.
    Se vai nelle impostazioni Vba trovi un flag pe rendere obbligatoria la dichiarazioni delle variabili... USA ASSOLUTAMENTE questa impostazione soprattutto se non sei esperto.
  • Re: Funzioni manipolazioni stringhe non funzionanti in maschera access

    Ragà ho risolto,
    mi permetto di postare qui la soluzione che ho riadattato dal sito che mi ha suggerito willy55 http://www.databasedev.co.uk/validate-text-string.htm
    
    Private Sub cognome_KeyPress(KeyAscii As Integer)
    Select Case KeyAscii
            ' 65 To 90 and 97 To 122: 'ci sono tutte le lettere, sia maiuscole che minuscole
            ' 8 Backspace, 9 Tab Key, 32 Space Key
        Case 65 To 90, 97 To 122, 8, 9, 32
        Case Else
            'Setting KeyAscii to zero cancels the key input
            KeyAscii = 0
            MsgBox ("ERRORE! Sono consentiti solo caratteri alfabetici")
        End Select
    End Sub
    
    Mi rimane però ancora un dubbio. Alex, ho provato a rimuovere l'attributo .Text dalla funzione inStr di cui oggi pomeriggio, ma il risultato è lo stesso, ossia quando passo alla visualizzazione layout della maschera, mi esce sempre la scritta #nome?
    Mi sapresti spiegare il perchè? in effetti non è la prima volta che la vedo, ma non riesco a capire di cosa si tratti (data anche la mia inesperienza )
    Inoltre, Alex
    Se vai nelle impostazioni Vba trovi un flag pe rendere obbligatoria la dichiarazioni delle variabili... USA ASSOLUTAMENTE questa impostazione soprattutto se non sei esperto
    ti riferisci alla direttiva
     Option Explicit 
    ?
  • Re: Funzioni manipolazioni stringhe non funzionanti in maschera access

    Buongiorno a tutti, provo ad uppare
  • Re: Funzioni manipolazioni stringhe non funzionanti in maschera access

    Cosa UPPI...?
    Mi pareva avessi avuto tutte le risposte... compresa quella relativa alla dichiarazione Esplicita delle Variabili...
  • Re: Funzioni manipolazioni stringhe non funzionanti in maschera access

    Mi rimane però ancora un dubbio. Alex, ho provato a rimuovere l'attributo .Text dalla funzione inStr di cui oggi pomeriggio, ma il risultato è lo stesso, ossia quando passo alla visualizzazione layout della maschera, mi esce sempre la scritta #nome?
    Mi sapresti spiegare il perchè? in effetti non è la prima volta che la vedo, ma non riesco a capire di cosa si tratti (data anche la mia inesperienza )
    Inoltre, Alex
    Se vai nelle impostazioni Vba trovi un flag pe rendere obbligatoria la dichiarazioni delle variabili... USA ASSOLUTAMENTE questa impostazione soprattutto se non sei esperto
    ti riferisci alla direttiva
    
     Option Explicit 
    ?
    queste due domande.
    grazie in anticipo
  • Re: Funzioni manipolazioni stringhe non funzionanti in maschera access

    Non si usa la modalità LAYOUT ma la visualizzazione normale in quanto in LAYOUT non vengono eseguiti eventi, calcoli o altro è solo LAYOUT come dice la parola.
    Per valutare se una Funzione è corretta, puoi usare la Finestra Immediata del VBA, strumento molto importante che si attiva con [CTRL+G] e da li con
    
    ?INSTR(.....)
    Ottieni il risultato o l'anomalia.

    Per la 2° si quello.
  • Re: Funzioni manipolazioni stringhe non funzionanti in maschera access

    Ti ringrazio,
    a presto
Devi accedere o registrarti per scrivere nel forum
11 risposte