Aggiornare totali nella tabella

martedì 02 luglio 2013 - 15.36
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Visual Studio 2010  |  MySQL 5.5

Mau67 Profilo | Expert

Ciao al forum, stò scrivendo un programma e dovrei aggiornare dei totali in una tabella con una select praticamnete devo aggiungere delle quantità ad una tabella tramite questa insert into

myCommand.CommandText = "INSERT INTO dettaglio_vendita (ID_Vendita, Nuc, Descrizione, Quantita, Um, Prezzo,Anno)" & _
"SELECT " & TextBox11.Text & ", Nuc, Descrizione, Quantita, Um,Prezzo, Anno FROM dettaglio_prenotazione WHERE Cod_Prenotazione = '" & TextBox1.Text & "'"
myCommand.ExecuteNonQuery()

adesso dovrei aggiornare le quantità in un altra tabella sommando le quantità di questa insert into con quelle già esistenti nella tabella PRODOTTI come posso fare mi dareste una mano grazie
Mau67

Runtime Profilo | Newbie

Ciao
Premesso che io avrei usato tutt'altra strada ..... l'unica soluzione che mi viene in mente, allo stato attuale delle cose, è la seguente:
- Esegui la INSERT
- Esegui una SELECT sulla tabella PRODOTTI che ti restituisce l'ID del Prodotto(se ce l'hai) o il nome del prodotto con l'attuale QUANTITA'
- Esegui l'UPDATE sulla tabella PRODOTTI in base all'IdProdotto che hai ottenuto aggiungendo alla quantità attuale la quantità della textbox.

Spero di aver interpretato bene la tua richiesta.
Ciao

Mau67 Profilo | Expert

Grazie per la risposta, ma il problema è che l'aggiornamento delle quantità deve avvenire tramite select perchè nel form che uso per l'aggiornamento non ci sono controlli textbox, praticamente tramite
myCommand.CommandText = "INSERT INTO dettaglio_vendita (ID_Vendita, Nuc, Descrizione, Quantita, Um, Prezzo,Anno)" & _
"SELECT " & TextBox11.Text & ", Nuc, Descrizione, Quantita, Um,Prezzo, Anno FROM dettaglio_prenotazione WHERE Cod_Prenotazione = '" & TextBox1.Text & "'"
myCommand.ExecuteNonQuery()

copio i dati della tabella dettaglio_prenotazione nella tabella dettaglio_vendita e poi devo aggiornare con lo stesso metodo le quantità di giacenza nella tabella prodotti
perchè avviene tutto tramite transazione.
Grazie
Mau67

Runtime Profilo | Newbie

Ciao
Questo dettaglio mi era sfuggito.
Ma comunque il discorso non cambia, a maggior ragione avrei impostato tutto in maniera diversa.
Continuando a concentrarci sullo stato attuale delle cose .... devi(e quando dico devi intendo dire purtroppo) aggiungere un'altro passaggio a meno che tu non abbia una variabile di appoggio dove puoi prelevare la quantità da aggiungere alla tabella PRODOTTI.
Pertanto i passaggi diventano.

- Esegui la INSERT
- Esegui una SELECT per recuperare i dati della INSERT appena eseguita (oppure scindi la INSERT dalla SELECT in modo da avere delle variabili di appoggio dalle quali puoi prelevare la quantità)
- Esegui una SELECT sulla tabella PRODOTTI che ti restituisce l'ID del Prodotto(se ce l'hai) o il nome del prodotto con l'attuale QUANTITA'
- Esegui l'UPDATE sulla tabella PRODOTTI in base all'IdProdotto che hai ottenuto aggiungendo alla quantità attuale la quantità ottenuta con la SELECT al passo 2(o dalla variabile qualora decidessi di scindere le due).

Rimango comunque dell'idea che, nella tabella PRODOTTI, con una corretta normalizzazione del DATABASE,il campo quantità non ti servirebbe.
Ciao.


Mau67 Profilo | Expert

Tu come gestiresti questa cosa
1) praticamente ho 4 tabelle (carico, scarico, vendita, prenotazione) ogni tabella ha un campo quantità che sottratto tra le varie tabelle mi restituisce la giacenza in questo modo (giacenza= carico.quantita - scarico.quantita - vendita.quantita - prenotazione.quantita).
Il problema è che se in una o più tabelle non ci sono dati non mi restituisce il valore di giacenza.
2) Ecco perchè ho optato per inserire nella tabella prodotti tabella aggiungento un campo (carico, scarico, vendita,prenotato) così anche se in uno dei campi non cè valore comunque di deault ho inserito zero e quindi la differenza viene effettuata.
Io vorrei evitare il passaggio 2) e concentrarmi sul passaggio 1) hai qualche idea per aiutarmi?
Grazie
Mau67

Runtime Profilo | Newbie

Ciao.
Innanzitutto poniamo un paletto sul fatto che se non modifichi la struttura del DB non vedo tante altre soluzioni diverse da quella che ti ho suggerito prima.
A meno che tu non abbia un dataset popolato a runtime dal quale puoi prelevare i dati all'occorrenza.

Posto il paletto ben saldo, ora che ho capito anche come è strutturato il DB, ti confermo che la tabella PRODOTTI non ha nessunissima ragione di esistere.
I dati presenti nella tabella PRODOTTI sono ridondanti ed inutili e portano a questo genere di problemi che portano via tanto tempo nella gestione del codice quanto il tempo che impiegheresti a ristrutturare un po meglio il DB.

La condizione che siano presenti o meno record in una delle 4 tabelle è una condizione che farei gestire al codice .... se ci sono record li elaboro e li sommo(o sottraggo) altrimenti sommo(o sottraggo) zero.

La giacenza è un dato che non ha motivo di essere persistente in quanto relativo alle quantità di tutte le altro 4 tabelle.
Pensa ad avere un errore di runtime qualsiasi tra l'inserimento del record in una delle 4 tabelle e l'aggiornamento della tabella PRODOTTI ..... risultato: una giacenza sbagliata.
Come la gestisci questa condizione? Ricontrollando la quantità delle 4 tabelle e comparandola con quelle nella tabella PRODOTTI. E allora perchè non farlo ogni volta che ti serve conoscere la giacenza evitando un mucchio di problemi?
Ricorda che tra le varie stringhe SQL che puoi utilizzare, esiste anche la query SUM che potresti eseguire su ognuna delle 4 tabelle per conoscere il totale delle quantità da utilizzare come parziale per la giacenza.

Ciao



Mau67 Profilo | Expert

ok grazie proverò a scrivere qualche query ciao e grazie
Mau67
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5