Automatizzare Chiuso=true per chiusura documento

di il
7 risposte

Automatizzare Chiuso=true per chiusura documento

Buongiorno a tutti e grazie per avermi accolta in questo Forum.

Ho bisogno di un consiglio su come automatizzare la chiusura (tramite campo Chiuso=True) un documento/record.
Mi spiego.

Le relazioni tra tabelle sono:
TbOrdiniTestate (1 a molti) TbOrdiniRighe (1 a molti) TbDdtRighe (molti a 1) TbDdtTestate
Tutti con chiavi primarie ed esterne collegate.

In TbOrdiniRighe ci sono (oltre al resto):
- ID_OrdineRiga
- ID_Articolo
- QtOrdinata
- Chiuso(False/True) valore standard False.

Quando registro tramite Form l'arrivo di un Ddt mostro all'utente le righe di TbOrdiniRighe (ID_Fornitore=ID_Fornitore) che sono ancora aperte per selezionare quella riga di consegna a quale riga di ordine corrisponde.

In TbDdtRighe registro:
- ID_OrdineRiga
- ID_Articolo
- QtConsegnata

Fatto questo devo verificare se la riga di ordine è stata tutta consegnata:
QtAperta = QtOrdinata (TbOrdiniRighe) - Somma di QtConsegnata (where TbDdtRighe_IDrigaordine=TbOrdiniRighe_IDrigaordine)
(ps: la qt consegnata potrebbe essere maggiore di quella ordinata es. ordino 100Kg arance ma ne arrivano 102kg)

Quindi se la QtAperta è<=0 il campo Chiuso della TbOrdiniRighe deve essere messo a True perché su quella Riga di Ordine non riceverò più consegne.

Sono riuscita da VBA su SalvaRecord della TbDdtRighe a fare il controllo se in quella consegna la QtConsegnata è uguale o maggiore della QtOrdinata ma non riesco a capire come gestire il totale con gli altri Ddt già consegnati.

Ho fatto una query che esegue la somma di QtConsegnata e con questa un'altra query che calcola QtAperta.
Ma non so bene come proseguire.

Inoltre dovrei prevedere che se per qualche ragione (es. errore di registrazione) viene cancellato il ddt la qt aperta deve essere ricalcolata.

Ho bisogno di qualche suggerimento su come proseguire...
grazie mille
@Crodino

7 Risposte

  • Re: Automatizzare Chiuso=true per chiusura documento

    Credmi ma no mi è tutto chiarissimo, non per la spiegazione in se, ma perchè per cogliere il WorkFlow del sistema serve essere dentro al problema..!

    Ti do quindi una risposta che potrebbe essere superficiale ma spero possa darti l'indicazione giusta per capire.
    Se fai un COUNT degli articoli nel DDT e lo confronti con il COUNT degli Articoli(Chiusi)... e nel caso siano DIVERSI non chiudi il DDT... se sono = allora fai una Action Query di chiusura DDT.
  • Re: Automatizzare Chiuso=true per chiusura documento

    No, no devo chiudere il ddt. Devo chiudere l'Ordine.
    Esempio pratico:

    Ordine:
    ID_Ordineriga = 1
    ID_Articolo = Arance
    Qtordinata = 100
    Chiuso = False

    Arriva il 1° ddt (consegna del 01 marzo):
    ID_DDtriga = 1
    ID_Ordineriga = 1
    ID_Articolo = Arance
    Qtconsegnata = 20
    (Il campo Chiuso di Ordine deve rimanere False)

    Arriva il 2° ddt (consegna del 05 marzo):
    ID_Ddtriga = 2
    ID_Ordineriga = 1
    Id_Articolo = Arance
    Qtconsegnata = 80
    (Il campo Chiuso di Ordine deve diventare True)
  • Re: Automatizzare Chiuso=true per chiusura documento

    Mi pare cambi ben poco da quello che ti ho suggerito...

    Se QOrdinata=SOMMA(QConsegnate)----> CHIUSO=TRUE

    Cosa ne dici...?

    Se fai una Query SELECT con Parametro IdRiga, e SOMMA su QConsegnate, ottieni la Somma totalizzata della consegna per IdRiga... da li il confronto è banale...!
  • Re: Automatizzare Chiuso=true per chiusura documento

    Non sono sulla stessa tabella, quindi la qt consegnata varia quando la tabella ordini non viene utilizzata
    La mia difficoltà sta proprio nel capire come fare in modo che una volta inserita la riga di ddt venga fatto il controllo e venga eventualmente aggiornata la tabella ordini.

    Devo fare una query? la richiamo da codice? c'è un altro modo?
    e' qui che mi perdo..

    grazie per la pazienza, magari sono io che sono gnucca e non capisco il tuo suggerimento.
  • Re: Automatizzare Chiuso=true per chiusura documento

    Crodino ha scritto:


    Non sono sulla stessa tabella, quindi la qt consegnata varia quando la tabella ordini non viene utilizzata
    Capisco ma credo che sia tu a capire nel dettaglio dove agire, ti si fornisce l'idea e la fai aderire al tuo specifico, infondo basta ragionarci... o no...?

    Crodino ha scritto:


    La mia difficoltà sta proprio nel capire come fare in modo che una volta inserita la riga di ddt venga fatto il controllo e venga eventualmente aggiornata la tabella ordini.
    Come fai ad isnerire il DDT...?
    Se lo fai da Inserimento dati da Form, allora devi intercettare l'evento DopoInserimento e su questo lanciare la Query di Update.

    Crodino ha scritto:


    Devo fare una query? la richiamo da codice? c'è un altro modo?
    e' qui che mi perdo..
    La query la puoi chiamare da codice, o con una macro... ma dal momento che devi intercettare l'inserimento del DDT secondo me deve essere da codice.

    Crodino ha scritto:


    grazie per la pazienza, magari sono io che sono gnucca e non capisco il tuo suggerimento.
    Fai un passo alla volta... prima fai la QUERY che per test lancerai a mano... se funziona poi si automatizza il tutto.
  • Re: Automatizzare Chiuso=true per chiusura documento

    Ok, provo a seguire il tuo passo passo, grazie
  • Re: Automatizzare Chiuso=true per chiusura documento

    E' passato qualche giorno ma avevo dovuto interrompere per fare altro.
    Per completezza vorrei scrivere come ho risolto seguendo in parte i suggerimenti dati.

    Al momento della registrazione della riga di consegna del DDT da vba ho fatto un controllo sulla quantità residua:
    QtOrdinata - Qtconsegnata = QtAperta
    se la QtAperta è <=0 da vba ho fatto eseguire una stringa SQL in cui fa UPdate del campo CHIUSO sulla tabella Righe degli ordini.

    Crodino
Devi accedere o registrarti per scrivere nel forum
7 risposte