Casella combinata non aggiorna il valore

di il
6 risposte

Casella combinata non aggiorna il valore

Buongiorno,
in una maschera una casella combinata mi cerca un valore in una query sottostante in base ad un campo data che vado a modificare.
in base alla data immessa la query sceglie il rekord avente i range di data coerenti e restituisce il valore desiderato.
il problema che non risolvo è che per aggiornare il valore ottenuto devo aprire la casella combinata e cliccare sopra il rekord (che è giusto ed è l'unico presente) e in questo modo la maschera risulta aggiornata.
non funziona il comando aggiorna maschera
non funziona il comando requery
sul campo data ho l'evento after update;
 Private Sub da_AfterUpdate()
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
DoCmd.Requery "az_flag_da"
End Sub
dove az_flag_da è il nome della casella di controllo

come avete capito non ho solide basi di programmazione quindi mi scuso se quanto sopra è una castroneria.
uso access in azienda per uscire dalla logica predominante di usare excel anche per uso database.
grazie in anticipo in ogni caso

6 Risposte

  • Re: Casella combinata non aggiorna il valore

    marcobenedetti ha scritto:


    In una maschera una casella combinata mi cerca un valore in una query sottostante in base ad un campo data che vado a modificare.
    Almeno per me, se non dici i nomi propri di maschera, casella combinata, query, nome campo data e anche altri eventuali campi/colonne che formano la casella combinata non ci capisco nulla.

    Il campo data sta nella maschera o nella casella combinata? Di conseguenza non ho capito anche tutto il discorso del range.
    Insomma rispiega tutto usando sempre i nomi propri di tutto.
  • Re: Casella combinata non aggiorna il valore

    Intanto grazie della disponibilità e scusa per la poca chiarezza.
    nome maschera: principale
    nome campo della maschera "principale" contenente il campo data : da
    nome casella combinata: az_flag_da
    la casella combinata ha come origine riga una query su tabella "dbo_azienda" nel cui tracciato rekord c'è il codice azienda nome campo: id_azienda che per la stessa azienda varia di anno in anno quindi es. per il id_azienda 31 abbiamo campo inizio_esercizio 01/01/2017 e campo fine_esercizio 31/12/2017 per id_azienda 32 inizio 01/01/2018 fine 31/12/18 e così via.
    I campi della query inizio e fine esercizio hanno criteri di confronto
    <=[Maschere]![principale]![da]
    adeguati a estrarre l'id_azienda corretto.
    in base al valore immesso nel campo "da" con l'evento after update la query confronta la data immessa con i campi data inizio e fine e restituisce il id_azienda relativo.
    quando però modifico il valore del campo "da" nella visualizzazione della casella combinata rimane il valore precedente: se però clicco sopra il menu a tendina il valore è aggiornato e giusto e selezionandolo col mouse diviene visibile nella maschera.
    non trovo un modo per far si che il valore, che è stato estratto correttamente dalla query venga visualizzato nella maschera senza dover selezionarlo manualmente dal menù a tendina.
    spero di essere stato sufficientemente chiaro.
    grazie in anticipo in ogni caso
  • Re: Casella combinata non aggiorna il valore

    Secondo me, finchè tu sei dentro [da] e scrivi, non stai aggiornando ancora nulla. È appena esci da [da] che la casella combinata az_flag_da si aggiorna. Prova ad esempio a cliccare a vuoto dentro la maschera o su un altro controllo. Giusto?
    Se sì, o ti accontenti di questo status di cose, oppure dovresti cambiare l'Evento...io in questi piccoli particolari mi perdo sempre un po'...prova a cambiare con l'evento "Prima di aggiornare".
  • Re: Casella combinata non aggiorna il valore

    Purtroppo è una strada senza uscita.
    l'unico modo in cui riesco ad aggiornare è andando a cliccare sul menù tendina.
    intanto provo un modo diverso modo per ottenere quello che mi serve.
    se nel frattempo ti viene in mente qualcosa d'altro ringrazio in anticipo.
  • Re: Casella combinata non aggiorna il valore

    Francamente non ho capito il tuo "marchingegno". Sei sicuro di aver progettato sta cosa in maniera "ortodossa/standard"?
    Per capirci meglio occorrerebbe una descrizione totale di:
    - nomi propri di tabelle e campi
    - relazioni
    - nomi propri di maschere
    - cosa devi fare veramente
  • Re: Casella combinata non aggiorna il valore

    Devi impostare come Origine riga del controllo az_flag_da semplicemente la tabella dbo_azienda quindi modificare l'evento del controllo da nel seguente modo:
    
    Private Sub da_AfterUpdate()
    	Me.az_flag_da=Dlookup("id_azienda","dbo_azienda","inizio <= #" & Format(Me.da,"mm/dd/yyyy") & "# AND fine >= #" & Format(Me.da,"mm/dd/yyyy") & "#")
    End Sub
    
    in questo modo sarà come se avessi selezionato manualmente nel controllo az_flag_da l'Azienda che soddisfa la condiziene relativa alla data.
Devi accedere o registrarti per scrivere nel forum
6 risposte