Operazioni matematiche su campo db

mercoledì 02 novembre 2005 - 18.03

adry_tssj Profilo | Newbie

Ciao a tutti!!
Ho un db composto da una sola tabella con 3 campi: IdArticolo, Articolo, Quantita
Questo db mi serve perchè devo permettere la gestione del magazzino tramite sito sviluppato in asp.net...
Ciò che è permesso sul sito è di caricare o scaricare (quindi aggiungere o sottrare) elementi (quantità) per ogni articolo...
Quello che vorrei sapere (perchè non mi ricordo più come si fa) e come fare a eseguire la sottrazione o l'addizione con una query sulla quantità presente sul db...
Cioè... avevo iniziato facendo

"Update Magazzino set Quantita = ((Select Quantita from Magazzino where IdArticolo='valore')-/+" & valore_utente

ma temo che non sia corretto...
Qualcuno mi può aiutare?? il blackout del mio cervello non è bello!! ;-((

lbenaglia Profilo | Guru

>Quello che vorrei sapere (perchè non mi ricordo più come si fa)
>e come fare a eseguire la sottrazione o l'addizione con una
>query sulla quantità presente sul db...
>Cioè... avevo iniziato facendo
>
>"Update Magazzino set Quantita = ((Select Quantita from Magazzino
>where IdArticolo='valore')-/+" & valore_utente
>
>ma temo che non sia corretto...
>Qualcuno mi può aiutare??

Ciao adry_tssj,

l'operazione è molto più semplice di quanto possa sembrare.
Purtroppo non hai specificato il DBMS che stai utilizzando, così ho deciso di proporti un esempio in T-SQL per SQL Server (ma è facilmente adattabile a qualunque altro DBMS):

USE tempdb
GO

/* Definisco la tabella dbo.Magazzino */
CREATE TABLE dbo.Magazzino(
IdArticolo int NOT NULL IDENTITY PRIMARY KEY,
Articolo varchar(10) NOT NULL,
Quantità int NOT NULL
)
GO

/* La valorizzo */
INSERT dbo.Magazzino VALUES('Mele', 15)
INSERT dbo.Magazzino VALUES('Pere', 26)
INSERT dbo.Magazzino VALUES('Banane', 325)
GO

/* Acquisto 20 Mele */
UPDATE dbo.Magazzino
SET Quantità = Quantità + 20
WHERE IdArticolo = 1
GO

/* Vendo 25 Banane */
UPDATE dbo.Magazzino
SET Quantità = Quantità - 25
WHERE IdArticolo = 3
GO

/* Vediamo */
SELECT *
FROM dbo.Magazzino
GO

/* Output:

IdArticolo Articolo Quantità
----------- ---------- -----------
1 Mele 35
2 Pere 26
3 Banane 300

(3 row(s) affected)

*/

/* A questo punto potresti scrivere una Stored Procedure
** alla quale passerai la quantità da aggiungere/sottrarre
** e l'IdArticolo da aggiornare
*/
CREATE PROCEDURE dbo.up_AggiornaMagazzino(
@IdArticolo int,
@Quantità int
)
AS
UPDATE dbo.Magazzino
SET Quantità = Quantità + @Quantità
WHERE IdArticolo = @IdArticolo
GO

/* Vendo 6 pere */
EXEC dbo.up_AggiornaMagazzino 2, -6
GO

/* Acquisto 100 mele */
EXEC dbo.up_AggiornaMagazzino 1, 100
GO

/* Vediamo */
SELECT *
FROM dbo.Magazzino
GO

/* Output:

IdArticolo Articolo Quantità
----------- ---------- -----------
1 Mele 135
2 Pere 20
3 Banane 300

(3 row(s) affected)

*/

/* Pulizia */
DROP PROCEDURE dbo.up_AggiornaMagazzino
DROP TABLE dbo.Magazzino

La stored procedure potrai richiamarla lato client tramite un oggetto SqlCommand (se usi SQL Server), OleDbCommand (se utilizzi un provider OLEDB) o OdbcCommand (se utilizzi un driver ODBC).

Per maggiori info affidati a MSDN:
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlCommandClassTopic.asp
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbCommandClassTopic.asp
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataOdbcOdbcCommandClassTopic.asp

> il blackout del mio cervello non è bello!! ;-((
LOL

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5