Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Problema nella creazione di una SP di delete

    Ciao, ho provato ad effettuare una cancellazione a catena in una SP, ma non
    riesco a gestire una condizione nell'operazione di delete di una tabella
    collegata:


    CREATE TABLE [dbo].[OrdiniProduzioneTestata](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [IDClienti] [int] NULL CONSTRAINT [DF__prodt_ord__ID_CL__589C25F3] DEFAULT
    ((0)),
    [Numero] [varchar](15) COLLATE Latin1_General_CI_AS NULL,
    [Data] [datetime] NULL
    )

    insert OrdiniProduzioneTestata (77,1,0001,01/01/2006)


    CREATE TABLE [dbo].[MagazzinoMovimenti](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [IDMagazzini] [int] NULL,
    [IDDocumento] [int] NULL,
    [IDUbicazioneArticoli] [int] NULL,
    [IDArticoli] [int] NULL,
    [TipoMovimento] [varchar](2) COLLATE Latin1_General_CI_AS NULL,
    [Data] [datetime] NULL,
    [Qta] [int] NULL,
    [Importo] [decimal](18, 4) NULL CONSTRAINT [DF_MagazzinoMovimenti_Importo]
    DEFAULT ((0)),
    [Causale] [varchar](1) COLLATE Latin1_General_CI_AS NULL,
    )

    insert MagazzinoMovimenti (1,1,77,650,25,'CP',01/01/2006,10,'C')
    insert MagazzinoMovimenti (2,1,77,650,25,'CP',01/01/2006,10,'C')
    insert MagazzinoMovimenti (3,1,77,652,27,'CP',01/01/2006,30,'C')
    insert MagazzinoMovimenti (4,1,77,653,28,'SP',01/01/2006,80,'S')

    Nella mia SP eseguo la cancellazione di OrdiniProduzioneTestata ma in
    automatico devo cancellare anche i movimenti collegati,
    quindi i movimenti che hanno IDDocumento come l'ID della testata che
    cancello, e questo non sarebbe un problema in quanto passo direttamente l'ID
    della testata alla SP, quindi lo uso anche per cancellare tutti i movimenti
    tramite MagazzinoMovimenti.IDDocumento

    Il vero problema è:
    prima di cancellare il contenuto di MagazzinoMovimenti, voglio aggiornare la
    tabella

    CREATE TABLE [dbo].[MagazzinoUbicazioniArticolo](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [IDArticoli] [int] NULL,
    [QtaGiac] [float] NULL,
    [QtaImp] [float] NULL
    )

    aumentando o diminuendo la quantità giacenza in base all'operazione della
    tabella MagazzinoMovimenti(Carico o Scarico di produzione)

    come?

    l'IDUbicazioneArticoli di MagazzinoMovimenti che sto cancellando, è
    collegato a ID.MagazzinoUbicazioniArticolo

    quindi se

    MagazzinoMovimenti.Tipomovimento = 'CP' (carico prod) devo decrementare
    MagazzinoUbicazioniArticolo.QtaGiac per la quantità MagazzinoMovimenti.Qta

    se

    MagazzinoMovimenti.Tipomovimento = 'SP' (scarico prod) devo incrementare
    MagazzinoUbicazioniArticolo.QtaGiac per la quantità MagazzinoMovimenti.Qta


    Questa operazione per tutte le righe cancellate



    BEFORE DELETE
    insert MagazzinoUbicazioniArticolo (650,25,77,100)
    insert MagazzinoUbicazioniArticolo (651,26,77,100)
    insert MagazzinoUbicazioniArticolo (652,27,77,100)
    insert MagazzinoUbicazioniArticolo (653,28,77,100)

    AFTER DELETE dovrebbe essere (se non ho sbaliato niente)
    insert MagazzinoUbicazioniArticolo (650,25,77,80) -> (100-10-10)
    insert MagazzinoUbicazioniArticolo (651,26,77,100)
    insert MagazzinoUbicazioniArticolo (652,27,77,70) -> (100-70)
    insert MagazzinoUbicazioniArticolo (653,28,77,180) -> (100+80)
    Iceberg

  2. #2
    Nessun aiutino???

    Io sto impazzendo con questa SP
    Iceberg

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.