[RISOLTO]Evento KeyDown su casella di testo non recupera il testo

di il
11 risposte

[RISOLTO]Evento KeyDown su casella di testo non recupera il testo

Salve,
ho diverse caselle di testo in una maschera di ricerca e vorrei fare in modo che quando si preme Enter venga letto il contenuto della casella di testo e poi eseguite altre operazioni. Ho messo sull'evento KeyDown una condizione sul tipo di tasto premuto, utilizzando il keycode; se si verifica va avanti. Fino a qui tutto ok, però appena provo a leggere la proprietà .Text della casella di testo in questione Access mi dice che non può fare riferimento ad una proprietà per un oggetto che non ha lo stato attivo (vedere immagine sotto):

eventokeydown.jpg
eventokeydown.jpg

Ovviamente la casella di testo ha del testo dentro (ho messo 15 come esempio):

eventokeydown2.jpg
eventokeydown2.jpg

Ho provato ad utilizzare la proprietà .Value ma ovviamente restituisce valore nullo.
Avete qualche idea su come posso recuperare il contenuto della casella di testo? Grazie.

11 Risposte

  • Re: [RISOLTO]Evento KeyDown su casella di testo non recupera il testo

    Prova a stampare in FINESTRA IMMEDIATA con Debug.Print il nome del controllo attivo prima...
    Es.:
    
    Dim strValoreCampo As String
    Debug.print Screen.ActiveControl.Name
    If KeyCode
    ...
    Se il valore restituito non è [f_txtCod] devi capire come fa a spostarsi il FOCUS, cosa peraltro impossibile, salvo che non vada al Controllo successivo ma dovrebbe essere solo DOPO il KeyUP...
  • Re: [RISOLTO]Evento KeyDown su casella di testo non recupera il testo

    Alex, è veramente strano. Il controllo attivo è sempre la casella di testo, però allo stesso tempo non riesce a recuperare la proprietà.Text perché non è attivo.

    eventokeydown3.jpg
    eventokeydown3.jpg

  • Re: [RISOLTO]Evento KeyDown su casella di testo non recupera il testo

    Credo che ci sia qualcosa nel database che crea l'errore. Ho provato a crearne uno nuovo, ho fatto una maschera e c'ho messo una casella di testo. Sugli eventi KeyDown e KeyUp ho messo il classico debug.print e stavolta non da errore ad accedere alla proprietà .Text quando premo invio.
    Tra l'altro ho scoperto che con il KeyDown non ha ancora aggiornato il contenuto, mentre con il KeyUp si. Quando si immette un carattere, la casella di testo lo memorizza nel campo .Text temporalmente tra l'evento KeyDown è quello KeyUp.
  • Re: [RISOLTO]Evento KeyDown su casella di testo non recupera il testo

    Prova ad usare KeyPress.
  • Re: [RISOLTO]Evento KeyDown su casella di testo non recupera il testo

    Prova ad usare KeyPress.
    Anche sotto l'evento KeyPress solito problema. Sono sempre più convinto che ci sia qualcosa nel DB, il problema è capire cosa. A riprova ho preso vecchi DB e inserito il codice sotto KeyDown e funziona. Solito PC, solito software, quindi l'unica cosa che cambia è solo il database, ma vacci te a capire cosa gli prende.

    Update: ho provato su una maschera diversa dello stesso database e funziona, quindi il problema è ristretto a quella maschera in particolare.
  • Re: [RISOLTO]Evento KeyDown su casella di testo non recupera il testo

    J1mmy ha scritto:


    ...
    Update: ho provato su una maschera diversa dello stesso database e funziona, quindi il problema è ristretto a quella maschera in particolare.
    Cosa c'è nella proprietà "Anteprima Tasti"? (è l'ultima voce della scheda eventi nelle proprietà della maschera)
  • Re: [RISOLTO]Evento KeyDown su casella di testo non recupera il testo

    Philcattivocarattere ha scritto:


    Cosa c'è nella proprietà "Anteprima Tasti"? (è l'ultima voce della scheda eventi nelle proprietà della maschera)
    È impostata a No l'anteprima tasti.
  • Re: [RISOLTO]Evento KeyDown su casella di testo non recupera il testo

    Anche nelle maschere dove funziona...?

    https://docs.microsoft.com/en-us/office/vba/api/access.form.keypreview
  • Re: [RISOLTO]Evento KeyDown su casella di testo non recupera il testo

    @Alex ha scritto:


    Anche nelle maschere dove funziona...?
    Si, avevo subito provato, ed anche nelle maschere dove funziona l'anteprima è impostata a NO. Stessi settaggi, però in quella maschera non ne vuole sapere di recuperarmi il testo della casella.
  • Re: [RISOLTO]Evento KeyDown su casella di testo non recupera il testo

    Alla fine mi sono inventato questo workaround, che forse non è il massimo, ma almeno così riesco a tamponare il problema e ad andare avanti.
    Ho usato l'evento _LostFocus per avere a quel punto disponibile il contenuto della casella di testo tramite la proprietà .Value sfruttando il fatto che quando premo INVIO mi sposto alla cella successiva.

    Avevo addirittura provato anche ad aprirlo su un altro PC, con un altro Access installato, a compattare e ripristinare il DB, ma alla fine sempre la stessa sinfonia. Boh, è veramente strano.
  • Re: [RISOLTO]Evento KeyDown su casella di testo non recupera il testo

    Alla fine ho trovato perché non funzionava. Ho impostato "Consenti aggiunte" su Si e adesso mi fa accedere alla proprietà .Text.
    Non capisco il motivo, ma sono arrivato a scoprirlo confrontando tutte le proprietà tra questa maschera, dove dava errore, ed altre dove funzionava. Alla fine quando ho abilitato le aggiunte ha funzionato. Giusto per curiosità, qualcuno ha idea del perché ? Grazie
Devi accedere o registrarti per scrivere nel forum
11 risposte