RECUPERARE UN VALORE IN UN CAMPO DI UNA MASCHERA

di il
8 risposte

RECUPERARE UN VALORE IN UN CAMPO DI UNA MASCHERA

Buongiorno a tutti,
ho una maschera con i seguenti campi che sono nella relativa tabella:
CODICE
SERIE
Il campo SERIE corrisponde sempre ai primi 2 caratteri del campo codice quindi se codice p XPJJDHH, la serie è XP.
Vorrei che dopo aver compilato il campo CODICE, riempia da solo il campo SERIE
Ho provato af utilizzare svariati comandi ma senza risultati.
Qual'è quello corretto?+
Grazie
Mirco

8 Risposte

  • Re: RECUPERARE UN VALORE IN UN CAMPO DI UNA MASCHERA

    Nella tabella stessa non lo puoi fare. In tabella si possono inserire soltanto dati digitati dall'utente, tutto ciò che può essere calcolato va inserito in una apposita query.
    Per venire incontro al tuo problema, dovresti
    1) eliminare il campo SERIE dalla tabella
    2) crea una query dove importi la tabella
    3) trascini il campo CODICE nella griglia struttura
    4) nella successiva colonna della griglia, a Campo, digita
    SERIE: Left([CODICE];2)
    dove Left ecc... è la funzione che restituisce il valore da te atteso, mentre SERIE è l'intestazione colonna.
  • Re: RECUPERARE UN VALORE IN UN CAMPO DI UNA MASCHERA

    Ti ringrazio per la risposta.
    Mi sono spiegato male. Il campo calcolato (valore predefinito) cioè SERIA è nella maschera di inserimento, che ovviamente poi è un campo di una tabella. In realta' io ho creato una maschera di inserimento dati in una tabella; nel campo SERIE della maschera in proprieta'/valore predefinito, ho provato ad inserire =Left([CODICE];2) ma non succede nulla. Io faccio "nuovo record" , vado ad inserire il CODICE e mi aspetto che, posizionato sul campo SERIE scriva i primi 2 caratteri del campo CODICE, comunque modificabili in quanto è un valore proposto. Sembra una banalita' ma non riesco a venirne fuori.
    Grazie, ciao
    Mirco
  • Re: RECUPERARE UN VALORE IN UN CAMPO DI UNA MASCHERA

    Buona giornata MIRCO;
    su [Serie] non imposterei alcun valore predefinito, mentre proverei ad inserire un evento "Dopo aggiornamento" su [Codice]; del tipo:
    
    Private Sub Codice_AfterUpdate()
    [Serie] = Left([Codice], 2)
    End Sub
    
    Mi permetto di farTi osservare che, in Access 2000, la funzione Left prevede, come separatore, la virgola e non il punto e virgola.

    A disposizione.

    Buona giornata e buon lavoro.
  • Re: RECUPERARE UN VALORE IN UN CAMPO DI UNA MASCHERA

    Forse ho trovato un ottimo raggiro del problema. E tanto lo possiamo fare, fin tanto che lavoriamo su campi di maschere (qui qualcosa si può fare). Ti premetto che io preferisco usare istruzioni macro, un utente più esperto ti consiglierebbe la stessa cosa con un piccolo codice in Visual Basic. Ecco, GiuseppeMN mi ha anticipato sui tempi proprio mentre scrivevo. Se in VBA si usa la virgola per la funzione Left, nelle proprietà macro si usa il punto-virgola.

    1) Crea una nuova macro, cioè vai a sinistra dove c'è la lista degli oggetti Tabelle, Query, Maschere.....e clicca su Macro, poi su Nuovo
    2) Nel primo rigo Azione, digita ImpostaValore e sotto scrivi così:
    Elemento: [Maschere]![nometabella].[SERIE]
    Espressione: Left([Maschere]![nometabella].[CODICE];2)
    (ovviamente al posto di "nometabella" devi scrivere il nome della tua tabella, tutto il resto è corretto come lo leggi)
    3) Salva con nome la macro, diciamo pure "SeriePredef"
    4) Apri la maschera in Visualizzazione struttura, clicca dentro il campo CODICE e vedi dentro le sue Proprietà, scegli la scheda Evento, scegli "Dopo aggiornamento" e dentro scrivici "SeriePredef" (senza le virgolette)
    (N.B.: io ho scelto l'evento Dopo aggiornamento perchè mi sembrava il più corrispondente alla tua richiesta, se hai altre esigenze, potresti giocare con altre proprietà)
    5) Salva la maschera.

    Facendo delle prove, ho potuto realmente constatare che, dopo aver digitato un testo in CODICE, passando al campo successivo, automaticamente mi visualizza i primi due caratteri come volevi tu.
  • Re: RECUPERARE UN VALORE IN UN CAMPO DI UNA MASCHERA

    Grazie a tutti. Ho copiato le 3 righe di VBA e ho risolto. Un consiglio. Per imparare un po di VBA cosa mi consigliereste? Grazie ancora. Ciao Mirco
  • Re: RECUPERARE UN VALORE IN UN CAMPO DI UNA MASCHERA

    Leggi il primo argomento di questo forum. Lo trovi sempre in testa a tutti i post, in qualsiasi periodo dell'anno.
  • Re: RECUPERARE UN VALORE IN UN CAMPO DI UNA MASCHERA

    Hai ragione
    Grazie ancora
    Ciao
  • Re: RECUPERARE UN VALORE IN UN CAMPO DI UNA MASCHERA

    Se il campo è una PARTE di un'altro che inserisci Manualmente, la risposta è che quel campo NON DEVE ESSERE SALVATO nella tabella.

    La gestione di quel tipo è inutile, sbagliata e viola le regole NORMALI di struttura di un DB.

    Il fatto che non sia salvato in Tabella non significa che non sia importante, significa solo che lo puoi ricavare in altro modo senza occupare spazio in memoria inutilmente.

    Ad esempio quel dato deve essere ricavato mediante una Query con campo CALCOLATO.
    Chiaramente nella maschera avrai il CONTROLLO non editabile, e dovrai ricordarti di aggiornare l'origine records della maschera in modo opportuno.
Devi accedere o registrarti per scrivere nel forum
8 risposte