Si può forzare l'aggiornamento di una casella combinata ?

di il
4 risposte

Si può forzare l'aggiornamento di una casella combinata ?

Salve, 

ho il seguente problema che non riesco a capire: 

dentro una casella combinata che prende dati da query ogni volta diverse, mi trovo i dati del record precedente, come se avesse bisogno di un aggiornamento da forzare in qualche modo. Spiego meglio:

Il gestionale aziendale mi fornisce il portafoglio ordini clienti solo tramite esportazione in un foglio excel.

Da Access faccio riferimento a questo foglio come tabella collegata. Tramite una query (qryCommesse) faccio una scrematura dei dati e tengo solo quelli di interesse. Dentro questo foglio ci sono tutti i prodotti ordinati dai clienti, ad ogni prodotto è associato un numero di commessa generato dal gestionale, quindi (nel migliore dei casi) una commessa, un prodotto. Se però un prodotto è il risultato dell'assemblaggio di n sottoprodotti, nel foglio ho n righe tutte con lo stesso numero di commessa.

Ora, ho una maschera in cui ho una casella combinata per la selezione della commessa, il contenuto di “origine riga” nelle proprietà della casella combinata fa riferimento alla qryCommesse come segue:

SELECT qryCommesse.[N# Ordine], qryCommesse.Esercizio, qryCommesse.[Descr# Cliente], qryCommesse.[Codice Articolo], 
qryCommesse.[Descr# Articolo], qryCommesse.[Data Evasione] FROM qryCommesse WHERE (((qryCommesse.[Qta Evasa])=0)) 
ORDER BY qryCommesse.Esercizio, qryCommesse.[N# Ordine]; 

Una volta selezionata la commessa, prima di uscire si crea e si lancia una query qryRigheCommessa che isola le n righe che compongono la commessa selezionata.

Una seconda casella combinata fa riferimento al contenuto di questa query con la seguente “origine riga”:

SELECT qryRigheCommessa.[Codice Articolo], qryRigheCommessa.[Descr# Articolo] FROM qryRigheCommessa 
ORDER BY qryRigheCommessa.[Codice Articolo]; 

Fino a qui funziona tutto, le query sono popolate e i dati sono quelli che mi aspetto.

Quello che non va e che vedo facendo le prove è che mentre la prima casella combinata funziona sempre correttamente, con la seconda funziona tutto al primo inserimento di dati, mentre al secondo inserimento, cliccando la casella combinata cboRigheCommessa, trovo le righe che vedevo nella commessa precedente. Se seleziono la commessa, salvo il record, chiudo la maschera e ci rientro, in cboRigheCommessa trovo i dati giusti.

Sembra quindi che ci sia bisogno di una inizializzazione della casella combinata per farle vedere i dati aggiornati.

E' una cosa normale, va fatto qualcosa di cui non sono a conoscenza per avere l'aggiornamento del contenuto della casella combinata ?

Grazie

Ste

4 Risposte

  • Re: Si può forzare l'aggiornamento di una casella combinata ?

    Si capisce poco, ma mi aspetto che i dati della 2° Query, ovvero le RigheCommessa, siano in relazione lato Molti con le commesse, quinsi se non vincoli quella query ad un Criterio di Commessa dipendente dalla selezione della 1° Combo… quello che dici è ovvio, per come ho compreso.

  • Re: Si può forzare l'aggiornamento di una casella combinata ?

    06/12/2022 - StackPtr ha scritto:


    Quello che non va e che vedo facendo le prove è che mentre la prima casella combinata funziona sempre correttamente, con la seconda funziona tutto al primo inserimento di dati, mentre al secondo inserimento, cliccando la casella combinata cboRigheCommessa, trovo le righe che vedevo nella commessa precedente. Se seleziono la commessa, salvo il record, chiudo la maschera e ci rientro, in cboRigheCommessa trovo i dati giusti.

    Se non aggiorni la seconda query è normale. Access come fa a sapere che hai cambiato i dati nella prima combo, se non glielo dici? 
    Sull'evento click o setfocus della seconda combo devi fare ogni volta il requery.

  • Re: Si può forzare l'aggiornamento di una casella combinata ?

    Grazie a entrambi, spiego in dettaglio come è strutturata la cosa:

    APro la maschera, vedo i dati eventualmente già inseriti e li posso scorrere con i pulsanti di navigazione soliti posti in basso nella finestra.

    Ho un pulsante “Aggiungi” che, tramite la creazione guidata di access, è associata ad una macro che aggiunge il record nella tabella di riferimento. C'è anche una chiamata ad una funzione che azzera il contenuto delle caselle combinate. Il cursore viene posizionato nella combo di selezione della commessa.

    Selezionata la commessa nella prima combo, c'è una sub “AfterUpdate” che copia dalla query delle commesse un paio di dati relativi alla commessa e genera ed esegue la seconda query qryRigheCommessa. Con esegue intendo che c'è un comando 

        DoCmd.OpenQuery (strNomeQuery)
        DoCmd.Close acQuery, strNomeQuery

    quindi la apro e la richiudo immediatamente. Se non la richiudo vedo che i dati sono aggiornati correttamente. Per questo non capisco perchè la combo non vede l'aggiornamento. Uscendo dalla maschera e rientrando non aggiorno la query qryRigheCommessa e la seconda combo vede correttamente i dati aggiornati.

    06/12/2022 - @Alex ha scritto:


    Si capisce poco, ma mi aspetto che i dati della 2° Query, ovvero le RigheCommessa, siano in relazione lato Molti con le commesse, quinsi se non vincoli quella query ad un Criterio di Commessa dipendente dalla selezione della 1° Combo… quello che dici è ovvio, per come ho compreso.

    Nope, nessuna relazione fra le query, genero quello che mi serve dinamicamente e poi con il vba vado a prendermi i dati che cerco. Fino a ora ha funzionato, solo che adesso per la prima volta sto usando delle combo in “cascata”.

    Grazie per l'aiuto

    Ste

  • Re: Si può forzare l'aggiornamento di una casella combinata ?

    Risolto, ho aggiunto l'istruzione 

        DoCmd.OpenQuery (strNomeQuery)
        DoCmd.Close acQuery, strNomeQuery
        DoCmd.Requery "cboRigheCommessa"	<--- questa

    dopo le istruzioni di aggiornamento della query nella sub cboCommesse_AfterUpdate di selezione della commessa.

    Grazie mille

    Ste

Devi accedere o registrarti per scrivere nel forum
4 risposte