🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: free.it.visual-basic
Article #2258

Re: ADO.NET - Bloccare la lettura di una tabella

#2258
From: Raffaele Rialdi
Date: Wed, 25 Jun 2003 19:31
85 lines
4525 bytes
Io intendevo uno statement Update (da lanciare in un command) che verifichi
nella clausola where che ci sia un residuo da pagare.
Nell'esempio che segue, do per scontato che stai lavorando con sql server,
ma la cosa � adattabile con altri db.

Puoi fare per esempio un command (o anche una stored procedure) con questa
unica query separata da ;

declare @Tot as integer;
select @Tot = SUM(Importo) from MyTable where Commessa= @Id;
update MyTable set Importo = @Tot - @Pagamento from MyTable
   where Commessa= @Id and (@Tot > @Pagamento)


Nel command devi aggiungere i due parameters:
* @Id che � l'id della commessa (adattalo al tuo caso)
* @Pagamento che � l'importo che vorresti pagare
Il parametro @Tot rimane una variabile interna alla procedura che serve per
calcolare il totale parziale e verificare che ci sia abbastanza Importo
residuo da pagare (dovrai poi tu adattarlo a seconda se Importo rappresenta
il dare o l'avere).
Se la where � soddisfatta allora esegue l'aggiornamento, altrimenti non fa
nulla.

Usando un solo command quella query � 'atomica'. Se dovessi eseguire pi�
aggiornamenti, dovresi aprire e richiudere una transazione. A quel punto ti
conviene sicuramente buttare tutto dentro una stored procedure.

-- 
Raffaele Rialdi
UGIdotNET - User Group Italiano .NET  http://www.ugidotnet.org



"Netslacker" <netslacker@iname.com> wrote in message
news:LXaKa.119763$lK4.3387350@twister1.libero.it...
>
> "Raffaele Rialdi" <malta@n0spam_vevy.com> ha scritto nel messaggio
> news:OQBUGbdODHA.2228@tk2msftngp13.phx.gbl...
> > > la tabella (A) di fatto non viene mai modificata, viene solo letta.
> > Questo mi fa escludere qualsiasi meccanismo di locking e mi convince
> ancora
> > di pi� sulla mia prima proposta.
> >
> >
> > > l'utente si ritrova un elenco di prodotti da pagare, (da pagare anche
> > > parzialmente). Questo elenco viene generato da una query es:
> > >
> > > 2    caff�            2
> > > 3    Pane            6
> > >
> > > Da notare che il latte non c'� pi� in quanto gi� pagato totalmente.
> > > la questione �: se due utenti leggono i dati dei prodotti da pagare
> > vedranno
> > > le stesse informazioni, potranno selezionare gli stessi prodotti, ma
al
> > > momento di dare ok solo uno di loro due deve riuscire a pagare ci� che
> ha
> > > selezionato.
> > Credo che tu possa risolvere solo con la query di update. Nella where
> della
> > update dovrai controllare se il prodotto � gi� stato pagato interamente,
e
> > in questo caso l'update avr� luogo.
>
> Ci riprovo. Ci ho ripensato, ma tu per query di update intendi un
controllo
> che risomma tutti gli importi dei pagamenti di un determinato prodotto o �
> necessario creare un nuovo campo, nella tabella prodotti, che tenga il
conto
> di quanto � stato pagato fino a quel momento ?
> cio�:
>
> ID| Descrizione | Costo | TotPagato
> 2 Caff�            15        5
> 3 Pane             20       11
>
> Questa seconda soluzione � pi� semplice, ma c'� una ridondanza di dati, in
> quanto il totpagato � un doppione della cifra che posso ricavare dalla
somma
> delle singole "rate" pagate pi� volte per un prodotto o mi sbaglio
>
> Ciao e grazie
>
>
Technical Details
Message-ID: <eEyXRB1ODHA.1608@TK2MSFTNGP11.phx.gbl>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsmi-us.news.garr.it!NewsITBone-GARR!bofh.it!newsfeed00.sul.t-online.de!t-online.de!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP11.phx.gbl
References: <8W%Ia.108224$Ny5.3122798@twister2.libero.it> <#hbR2bQODHA.2172@TK2MSFTNGP10.phx.gbl> <4oAJa.111908$Ny5.3241362@twister2.libero.it> <OQBUGbdODHA.2228@tk2msftngp13.phx.gbl> <LXaKa.119763$lK4.3387350@twister1.libero.it>

Show Full Headers
Complete Article Headers
X-Google-Language: ITALIAN,ASCII
X-Google-Thread: f94ee,fa2856aabc00a4a8
X-Google-Attributes: gidf94ee,public
X-Google-Thread: 10b997,fa2856aabc00a4a8
X-Google-Attributes: gid10b997,public
X-Google-Thread: 10c104,fa2856aabc00a4a8
X-Google-Attributes: gid10c104,public
X-Google-ArrivalTime: 2003-06-25 12:31:52 PST
From: "Raffaele Rialdi" <malta@n0spam_vevy.com>
References: <8W%Ia.108224$Ny5.3122798@twister2.libero.it> <#hbR2bQODHA.2172@TK2MSFTNGP10.phx.gbl> <4oAJa.111908$Ny5.3241362@twister2.libero.it> <OQBUGbdODHA.2228@tk2msftngp13.phx.gbl> <LXaKa.119763$lK4.3387350@twister1.libero.it>
Subject: Re: ADO.NET - Bloccare la lettura di una tabella
Date: Wed, 25 Jun 2003 21:31:16 +0200
Lines: 87
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <eEyXRB1ODHA.1608@TK2MSFTNGP11.phx.gbl>
Newsgroups: free.it.visual-basic,it.comp.lang.visual-basic,microsoft.public.it.dotnet.vstudio
NNTP-Posting-Host: 62.101.97.7
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsmi-us.news.garr.it!NewsITBone-GARR!bofh.it!newsfeed00.sul.t-online.de!t-online.de!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP11.phx.gbl