Al lancio di query d'aggiornamento Access dice:" Per l'operazione è necessaria una query aggiornabile"

di il
4 risposte

Al lancio di query d'aggiornamento Access dice:" Per l'operazione è necessaria una query aggiornabile"

Buonasera, vi pongo subito il mio quesito.
ho creato una query di selezione (Query1) che richiama i dati da una tabella (Tabella1) e grazie al "raggruppamento" per ID mi dà dei totali (somma) sui dati di una colonna della tabella stessa (Colonna5). E fin qui tutto bene! La query mi restituisce le somme dei valori della Colonna5 per ID.

Adesso vorrei che la tabella (Tabella1) fosse "aggiornata" con una "query di aggiornamento" che, richiamando la query precedente, riporti in una certa colonna (Colonna6) della Tabella1 e per ogni ID il totale appena calcolato. Preparo la query ma al momento di farla partire appare il seguente messaggio: "Per l'operazione è necessaria una query aggiornabile".

Io ho risolto il problema creando altre 3 query a seguire:
Query2 - Query di creazione tabella che crea una tabella (TabellaA) a partire dai dati della Query1
Query3 - Query di aggiornamento che cancella (0) tutti i dati precedentemente inseriti in (Colonna6) della Tabella1 con questo stesso procedimento di aggiornamento.
Query4 - Query di aggiornamento che aggiorna la Colonna6 della Tabella1 con le somme per ID della TabellaA appena creata.

Domanda: Benché così facendo ho risolto il problema, mi sembra strano che debba procedere in questo modo macchinoso che comporta la creazione di 3 query ed una tabella frutto di una di queste query. Insomma la query di aggiornamento sembra funzionare solo se i dati di origine passino da tabella a tabella. Esiste una soluzione pìù pratica e sicura?

4 Risposte

  • Re: Al lancio di query d'aggiornamento Access dice:" Per l'operazione è necessaria una query aggiornabile"

    Per quale motivo devi salvare un valore calcolato...?
    Processo che ti obbliga a prescindere al ricalcolo continuo ed al successivo aggiornamento continuo.
    Di solito non è buona tecnica... anzi.
    La 2° soluzione che hai adottato è francamente assurda, e per capire come mai non va la prima sarebbe da vedere bene cosa hai scritto, ma il sospetto che la query raggruppata sia il principale indiziato è abbastanza probabile.
  • Re: Al lancio di query d'aggiornamento Access dice:" Per l'operazione è necessaria una query aggiornabile"

    Bene! Grazie! Dopo che mi hai allertato sul macroscopico errore concettuale che commettevo, mi sono adoperato per trovare una soluzione che fosse accettabile e credo di averla trovata.
    Ho creato una sola Query di "aggiornamento" (nota bene: una sola Query e nessuna tabella creata !!!) in questa Query ho richiamato, direttamente nel campo che voglio aggiornare, l'operazione di somma con "DSum" e relativa formula condizionale. Rispetto al quesito precedentemente posto qui di seguito cambiano i nomi di tabelle e campi ma l'importante è la logica.
    In "Aggiorna a" (aggiornamento della tabella TRISORSE) ho scritto:
    IIf([TRISORSE]![IDRisorsa]=[TANALISI]![IDRisorsa];DSum("[TANALISI]![AnalisiQtàTotRisorsa]";"[TANALISI]";"[TANALISI]![IDRisorsa]=" & [TANALISI]![IDRisorsa]);0).
    Tutto funziona, ma ho solo una perplessità. Se attivo la query in tabella di anteprima mi fa vedere circa 150 righe con ripetuto il totale appena sommato per quante IDRisorsa ho richiamato in Analisi, ma in TRISORSE ho solo 20 record e mi piacerebbe vederne 20.
  • Re: Al lancio di query d'aggiornamento Access dice:" Per l'operazione è necessaria una query aggiornabile"

    Marceale ha scritto:


    ...
    IIf([TRISORSE]![IDRisorsa]=[TANALISI]![IDRisorsa];DSum("[TANALISI]![AnalisiQtàTotRisorsa]";"[TANALISI]";"[TANALISI]![IDRisorsa]=" & [TANALISI]![IDRisorsa]);0).
    Ad un'occhiata molto veloce, anziché l'uso del DSUM che affossa le query secondo me si può fare prima una query di raggruppamento e dopo creare una query di aggiornamento.

    Marceale ha scritto:


    Tutto funziona, ma ho solo una perplessità. Se attivo la query in tabella di anteprima mi fa vedere circa 150 righe con ripetuto il totale appena sommato per quante IDRisorsa ho richiamato in Analisi, ma in TRISORSE ho solo 20 record e mi piacerebbe vederne 20.
    Nelle query di aggiornamento non è importante quello che vedi ma i record che vengono aggiornati. Sicuro sicuro sicuro che tutto funziona?
    Posta la query completa, per favore.
  • Re: Al lancio di query d'aggiornamento Access dice:" Per l'operazione è necessaria una query aggiornabile"

    Fare una query di raggruppamento e dopo una di aggiornamento è il procedimento che mi ha dato l'errore oggetto della conversazione!
    Quando dici "posta la query completa" intendi la Visualizzazione SQL? Questa?:

    UPDATE TRISORSE INNER JOIN TANALISI ON TRISORSE.IDRisorsa = TANALISI.IDRisorsa SET TRISORSE.RisQtà = IIf([TRISORSE]![IDRisorsa]=[TANALISI]![IDRisorsa],DSum("[TANALISI]![AnalisiQtàTotRisorsa]","[TANALISI]","[TANALISI]![IDRisorsa]=" & [TANALISI]![IDRisorsa]),0);
Devi accedere o registrarti per scrivere nel forum
4 risposte