Casella Combinata a Cascata, i dati spariscono

Anonimo
2013-11-05T20:03:27+00:00

Buonasera a tutti!

ho un problema con access 2007: ho creato una maschera continua di inserimento dati, dove due valori vengono scelti mediante caselle combinate (combobox); il problema è che la cmbProdotti dipende dalla scelta fatta nella cmbCategoria, ossia i valori della cmbProdotti cambiano se si cambia il valore nella cmbCategoria.

L’aggiornamento della cmbProdotti si da con l’evento AfterUpdate sulla cmbCategoria (ho anche provato con OnGotFocus sulla cmbProdotti); il problema è che essendo una maschera continua quando si vanno ad inserire i dati nel record successivo, cambiando il valore nella cmbCategoria si azzera il contenuto della cmbProdotti del record precedente. 

Il motivo penso che sia dovuto al fatto che eseguendo un requery lo fa non solo sulla casella combinata del record corrente, ma nell'intera maschera (essendo continua).

E' solo un 'difetto' visivo, in quanto nella tabella dati i valori vengono registrati correttamente, però volevo sapere se c'era qualche soluzione per mantenere fissi, una volta scelti, i valori nelle caselle combinate dei record precedenti, così da non complicare la vita a chi andrà ad utilizzare il database. 

Grazie in anticipo!

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-11-06T16:15:43+00:00

Purtroppo non posso utilizzare i dati del campo IDProdotti perché sono incomprensibili è la idea e fare una maschera facile da usare.

Se ti viene qualcosa in mente ti sarei molto grato

Ciao,

un workaround in questa situazione è una casella di testo posizionato soppra la parte testuale della casella combinata che mostra il testo tramite un'espressione come:

=DLookUp("DescrizioneProdotto";"tblProdotti";"IdProdotto=" & IdProdotto)

Nel codice "Su Invio" della casella di testo scrivi:

Me!cmbProdotto.SetFocus

Se ci sono molti record, un rete ecc. questo metodo potrebb'essere troppo lento. Puoi provarlo.

La risposta è stata utile?

0 commenti Nessun commento

15 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-11-05T20:57:53+00:00

    Ciao Sandro

    La maschera ha come Origine Record una query chiamata qryArticolo dove sono tutti i dati della tblArticolo e alcuni altri dati calcolati.

    Le caselle combinate cmbCategoria e cmbProdotto della frmArticolo sono associati ai valori della qryArticolo IDCategoria e IDProdotto

    Non riesco a seguirte come si potrebbe fare senza codice a far "capire" alla cmbProdotto che deve far vedere solo ed esclusivamente gli opzione della Categoria prescelta in precedenza.

    Ho fatto una prova veloce ma mi fa vedere tutte le opzioni della tblProdotto....e sono tante

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-11-05T20:43:37+00:00

    Ciao Mimmo!

    Grazie della tempestiva risposta.

    Ho fatto una piccola modifica e sembra funzionare....

    La tblProdotto è composta da due campi: IDProdotto e DescrizioneProdotto dove IDProdotto è una chiave primaria in formato Testo è logicamente è la colonna associata.

    La cmbProdotto nella maschera aveva in Formato/Larghezza Colonna 0cm;3cm; ho modificato il dato a 1cm;3cm e non sparisce più!!?

    Mi sapresti dire il perchè?

    Grazie e cordiali saluti

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-11-05T20:31:44+00:00

    ciao LuisTorres69,

    provo a risponderti...

    Se il recordSource della tuaForm è una tabella e dopo aggiornamento hai inserito qualcosa del tipo:

    me.TuaControlloDaAggiornare=me.tuaCombo.column(1)

    il risultato è quello che testimoni.

    Se invece imposti una query che estragga tutti i campi compresi quelli che necessiti aggiornare dopo la modifica di TuaControlloDaAggiornare non è necessaria una riga di codice, i records si aggiornano ma in corrispondenza del record interessato alla modifica.

    Chiaramente tutti i controlli della tua Form devono essere associati.

    Prova è più difficile a dirsi che a farsi.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-11-05T20:18:48+00:00

    Ciao Luis,

    purtroppo il comportamento è normale e tu l'hai descritto correttamente. Se lavori su maschera continua l'inserimento come la modifica sarebbe opportuno farla su nuova maschera su singolo record.

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento