Article View: free.it.visual-basic
Article #2258Re: ADO.NET - Bloccare la lettura di una tabella
From: Raffaele Rialdi
Date: Wed, 25 Jun 2003 19:31
Date: Wed, 25 Jun 2003 19:31
85 lines
4525 bytes
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.gblReferences:
<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