Aggiornamento di una tabella recuperando i dati da una query

di il
4 risposte

Aggiornamento di una tabella recuperando i dati da una query

Buon giorno.
Avrei bisogno di aggiornare in forma massiva un campo MG01_Giacenza_Iniziale in una tabella [_tmp_MG01_Totaliz_Mag] recuperando il valore da aggiornare da una select con raggruppamento che ho chiamato DO02.
Vorrei cioè aggiornare in un colpo solo le giacenze iniziali degli articoli ni vari depositi andando a recuperare questi valori dai movimenti di magazzino inerenti la giacenza iniziale.
Riporto qui il codice

UPDATE [_tmp_MG01_Totaliz_Mag]
INNER JOIN (SELECT [_tmp_DO02_CauMag].DO02_CodDep, [_tmp_DO02_CauMag].DO02_Item_Nome, Sum([_tmp_DO02_CauMag].DO02_Qta) AS DO02_Qta, Sum([_tmp_DO02_CauMag].DO02_Qta_Trasf) AS DO02_Qta_Trasf, Sum([_tmp_DO02_CauMag].DO02_ImportoRiga) AS DO02_ImportoRiga
FROM _tmp_DO02_CauMag
GROUP BY [_tmp_DO02_CauMag].DO02_CodDep, [_tmp_DO02_CauMag].DO02_Item_Nome, [_tmp_DO02_CauMag].MG03_GiacIni
HAVING ((([_tmp_DO02_CauMag].MG03_GiacIni)="+"))) AS DO02 ON ([_tmp_MG01_Totaliz_Mag].MG01_Item = DO02.DO02_Item_Nome) AND ([_tmp_MG01_Totaliz_Mag].MG01_CodDep = DO02.DO02_CodDep) SET [_tmp_MG01_Totaliz_Mag].MG01_Giacenza_Iniziale = DO02.DO02_Qta;

Mi viene segnalato l'errore che "Per l'operazione è necessaria una query aggiornabile".

Grazie

Scusate, non so se ho utilizzato un code corretto. Se non fosse per favore mi date le specifiche corrette?
Ancora grazie


Giorgio

4 Risposte

  • Re: Aggiornamento di una tabella recuperando i dati da una query

    giorgio da cento ha scritto:


    Avrei bisogno di aggiornare in forma massiva un campo MG01_Giacenza_Iniziale in una tabella [_tmp_MG01_Totaliz_Mag] recuperando il valore da aggiornare da una select con raggruppamento che ho chiamato DO02.
    ...
    Mi viene segnalato l'errore che "Per l'operazione è necessaria una query aggiornabile".
    Ignoro volutamente la questione "giacenza - magazzino - annessi e connessi", passo solo alla parte della query non aggiornabile.
    Crea una query ad hoc per la select che stai usando adesso all'interno della query di update
    SELECT [_tmp_DO02_CauMag].DO02_CodDep, ... HAVING ((([_tmp_DO02_CauMag].MG03_GiacIni) = "+"))
    e chiamala come ti pare, per comodità mi riferisco a questa con l'alias che avev indicato tu, DO02
    A questo punto crea un'ulteriore query di selezione per verificare che siano associati i record giusti alle quantità giuste, una cosa del tipo
    SELECT 
    [_tmp_MG01_Totaliz_Mag].MG01_Item, 
    [_tmp_MG01_Totaliz_Mag].MG01_CodDep, 
    [_tmp_MG01_Totaliz_Mag].MG01_Giacenza_Iniziale,
    [DO02].[DO02_Qta]
    FROM
    [_tmp_MG01_Totaliz_Mag] INNER JOIN DO02
    ON    ([_tmp_MG01_Totaliz_Mag].MG01_Item = DO02.DO02_Item_Nome) AND 
          ([_tmp_MG01_Totaliz_Mag].MG01_CodDep = DO02.DO02_CodDep)
    Verifica se questa selezione dà i risultati giusti in base all'abbinamento dei campi.
    Trasformala poi in query di aggiornamento.
    (occhio, ho scritto tutto al volo, potrebbero esserci errori di digitazione, qualche nome sbagliato, qualche dettaglio mancante, l'importante è il concetto.)
  • Re: Aggiornamento di una tabella recuperando i dati da una query

    Buon giorno Phil.
    Grazie della risposta. Ho seguito ll consiglio, ma l'errore rimane lo stesso. Credo derivi dal fatto che la query da cui recupero i dati sia una query di raggruppamento e come tale non aggiornabile, per cui, mettendo in unione la tabella da aggiornare con questa query di raggruppamento all'atto dell'UPDATE Access segnala l'errore "Per l'operazione è necessaria una query aggiornabile". Ci sono alternative? Grazie ancora della disponibilità.
    Cordiali saluti
    Giorgio
  • Re: Aggiornamento di una tabella recuperando i dati da una query

    giorgio da cento ha scritto:


    Ci sono alternative?
    Il primo passo è stato fatto. Sì, ovviamente è la query di raggruppamento che rende la successiva query in sola lettura. Prova a togliere il campo [DO02].[DO02_Qta] nella parte SELECT (l'unica in cui appare) e trasformare la query così modificat in query di aggiornamento.
    Se ancora non funziona pubblicane la SQL. Se funziona... pubblicala lo stesso.
  • Re: Aggiornamento di una tabella recuperando i dati da una query

    Grazie ancora.
    Non funziona.
    Questa la query di raggruppamento

    SELECT [_tmp_DO02_CauMag].DO02_CodDep, [_tmp_DO02_CauMag].DO02_Item_Nome, Sum([_tmp_DO02_CauMag].DO02_Qta) AS DO02_Qta, Sum([_tmp_DO02_CauMag].DO02_Qta_Trasf) AS DO02_Qta_Trasf, Sum([_tmp_DO02_CauMag].DO02_ImportoRiga) AS DO02_ImportoRiga
    FROM _tmp_DO02_CauMag
    GROUP BY [_tmp_DO02_CauMag].DO02_CodDep, [_tmp_DO02_CauMag].DO02_Item_Nome, [_tmp_DO02_CauMag].MG03_GiacIni
    HAVING ((([_tmp_DO02_CauMag].MG03_GiacIni)='+'));


    questa quella di aggiornamento

    UPDATE _tmp_MG01_Totaliz_Mag INNER JOIN Upd_tmp_MG01_Giaini ON ([_tmp_MG01_Totaliz_Mag].MG01_CodDep = Upd_tmp_MG01_Giaini.DO02_CodDep) AND ([_tmp_MG01_Totaliz_Mag].MG01_Item = Upd_tmp_MG01_Giaini.DO02_Item_Nome) SET _tmp_MG01_Totaliz_Mag.MG01_Giacenza_Iniziale = [Upd_tmp_MG01_Giaini].[DO02_Qta];


    Non posso togliere DO02_Qta dalla query di raggruppamento, altrimenti non raggiungo il mio obiettivo
Devi accedere o registrarti per scrivere nel forum
4 risposte