Aggiornamento listino

di il
9 risposte

Aggiornamento listino

Buongiorno
mi sto arenando su questo problema.

Ho una tabella listino (che devo aggiornare storicizzando il prezzo precedente).
ID_listino
ID_Modello (in relazione molti a uno con Tb_Modelli)
UnitaMisura
Prezzo
InizioValidita
FineValidita (impostata a 31/12/9999 per il prezzo attuale)

Nella Tb_Modelli mi interessa il campo ID_BP per filtrare i prezzi da aggiornare (è l'ID_Cliente in pratica). Aggiorno tutti i prezzi del cliente interessato.

Es: cliente 12 attualmente listino 12/kg deve diventare dal 01/03/2022 13/kg.

Filtro i campi che devo aggiornare in base al join ID_BP delle tabelle. E seleziono solo i prezzo di quel cliente e i campi con Fine validita 31/12/9999 che sono quelli attualmente in uso.
Per storicizzare il prezzo vecchio posso fare una query di aggiornamento e impostare il campo FineValidita al giorno interessato.
Poi però devo 'ricopiare' le righe che ho aggiornato e inserire il nuovo prezzo con la nuova data di InizioValidita e FineValidita 31/12/9999.
e in questo ultimo passaggio mi areno perché ho tentato di creare una query di accodamento che mi seleziona i campi con ID_Bp interessato e FineValidita 28/02/2022 (che ho aggiornato con la query precedente).
Di questa selezione in pratica mi serve solo l'ID_Modello perché gli altri campi sono da compilare secondo dati diversi (13€, InizioValidita 01/03/2022, FineValidita 31/12/9999).

Ovviamente la chiave primaria ID_Listino è indicizzata e non la metto nella query.
Cosa sbaglio? Posso accodare sulla stessa tabella?
Boh, mi sto perdendo...

grazie

9 Risposte

  • Re: Aggiornamento listino

    La tabella Listini deve avere tutti gli ID_Modello ripetuti con nuovo Prezzo riferito a InizioValidita e FineValidita anch'essi nuovi. Se fai una query di aggiornamento sul campo Prezzo rischi di compromettere tutti Movimenti, Fatture (non so) precedenti.
  • Re: Aggiornamento listino

    Si esatto, è quello che non riesco a fare.
    L'aggiornamento lo farei solo x 'chiudere' il prezzo vecchio
  • Re: Aggiornamento listino

    In pratica non riesco ad accodare i record nuovo sulla stessa tabella
  • Re: Aggiornamento listino

    1. Fai una copia del database, se quello che sto per dirti rischia di far sballare la tabella Listini
    2. Crea una query dove importi la tabella Modelli
    3. Nella griglia sottostante trascini il campo ID_Modello
    4. Cambia la query in query di accodamento da applicare alla tabella Listini
    5. Al campo ID_Modello accoda a ID_Modello
    6. Aggiungi accoda a InizioValidita e FineValidita dove ci devi scrivere 2 date di Inizio e Fine che avranno valore per tutti i nuovi record che andrai ad accodare
    7. Esegui la query una sola volta e vedi se risponde al risultato che aspettavi
  • Re: Aggiornamento listino




    errore.jpg
    errore.jpg

    Ho fatto come proposto, ho copiato in una tabella "temporanea" il solo campo ID_Modello dei record filtrati che mi interessano
    Ho poi provato ad accodarli alla Tb_Listino. ho provato ad accodare solo quel campo e ho lo stesso l'errore,
    non accoda perché mi da errore di violazione della chiave primaria.
    Eppure come si vede dalle immagini che allego la nella Tb_Listino il campo ID_Modello non è chiave primaria e non è indicizzato..

    Vi aggiungo anche sql che deriva dalla query di accodamento.
    INSERT INTO Tb690_Listino ( ID_Modello )
    SELECT Tb690_Listinotemp.ID_Modello
    FROM Tb690_Listinotemp;
  • Re: Aggiornamento listino

    OsvaldoLaviosa ha scritto:


    2. Crea una query dove importi la tabella Modelli
    3. Nella griglia sottostante trascini il campo ID_Modello
    La query parte da Modelli.ID_Modello per accodarsi in Listini.ID_Modello
  • Re: Aggiornamento listino

    Ok, da tabella modelli funziona...
    Anche se non ho capito cosa cambia
  • Re: Aggiornamento listino

    La query di accodamento ti accoderà gli n record della tabella Modelli in Listini. I nuovi record avranno i campi già compilati di ID_Modello, InizioValidità, FineValidità. Gli altri campi appariranno vuoti e dovrai compilarli poi manualmente secondo i nuovi Prezzi.
  • Re: Aggiornamento listino

    Si si, questo l'ho capito.
    Non ho capito perché se devo di accodare l'ID_Modello da un'altra tabella mi dà errore.
    Ma va beh.. l'importante è aver trovato la soluzione.
    Grazie
Devi accedere o registrarti per scrivere nel forum
9 risposte