Newsgroup: it.comp.appl.access
Titolo: Update difficile

Ciao a tutti,
E' possibile aggiornare il valore del campo codcon al valore
contenuto
in desart (nel mio esempio 1 o 2, ma potrebbero essere 3,4,5,6,ecc.)
quando cod art=d.
docrig.numdoc   numrig  codart  desart  codcon
1                        0001   ACEO     Ace
1                        0002   VALLS1  Acexx
1                        0003   d       1           1
1                        0004   VALLS3  pippo
1                        0005   VALLS4  pippo2
1                        0006   d       2           2
Potrei tradurlo in questo modo: leggi tutte le righe fin quando non
trovi codart=d, allora conta le righe sopra codart=d ed aggiorna il
campo codcon al valore contenuto in desart per tutte le righe contate
che soddisfano il criterio (1,2,ecc) poi prosegui a leggere fin
quando
si realizza di nuovo la condizione. Per giungere a:
docrig.numdoc   numrig  codart  desart  codcon
1                        0001   ACEO    Ace         1
1                        0002   VALLS1  Acexx       1
1                        0003   d       1           1
1                        0004   VALLS3  pippo       2
1                        0005   VALLS4  pippo2      2
1                        0006   d       2           2
ma non so come fare.
Grazie

(.....)

 ATTENZIONE!
L'ho scritta di getto senza testarla !
UPDATE DocRig D1 SET codcon=(SELECT desart FROM DocRig D2 WHERE D2.numdoc=D1.numdoc AND D2.numrig=(SELECT MIN(numrig)
FROM DocRig D3 WHERE D3.numdoc=D1.numdoc AND D3.numrig>D1.numrig)) WHERE D1codart<>'d'
Vincenzo Turturro
Certificato Eucip Core Level
ITA 0000-002299 del 14/05/2007
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------
risorse Access:
http://www.accessgroup.it
---------------------------------------------
Il sito comune di it.comp.as400
http://www.faq400.com
---------------------------------------------

(.....)
Ho visto solo ora che hai postato anche su MPIOA: ti ricordo che è buona regola segnalare il crosspost.


 - Mostra testo tra virgolette -
Ho provato il tuo codice e te ne ringrazio ma purtroppo mi restituisce
il seguente errore:
"Per l'operazione è necessaria una query aggiornabile"
Che fare?

Che fare?
Temo che certi giochetti ammessi da SQL ANSI non siano ben accetti da Jet.
Ora perň non ho tempo per pensarci su; probabilmente domattina potrň darti una risposta.


 - Mostra testo tra virgolette -
In trepidante attesa, ti ringrazio anticipatamente.

In trepidante attesa, ti ringrazio anticipatamente.
Se CodCon è Numerico:
UPDATE DocRig
SET CodCon = Val(DLookUp("desart","DocRig","numdoc=" & [numdoc] & "
AND numrig=" & DMin("numrig","DocRig","CodArt='d' AND numdoc=" &
[numdoc] & " AND numrig>" & [numrig])))
WHERE CodArt<>"d";
Se CodCon è Testo:
UPDATE DocRig
SET CodCon = DLookUp("desart","DocRig","numdoc=" & [numdoc] & " AND
numrig=" & DMin("numrig","DocRig","CodArt='d' AND numdoc=" & [numdoc]
& " AND numrig>" & [numrig]))
WHERE CodArt<>"d";


On 29 Nov, 09:33, "VT @ Work" <V...@Work.it> wrote:

Ciao,codcon è numerico e quindi ho provato
UPDATE DocRig
SET CodCon = Val(DLookUp("desart","DocRig","numdoc=" & [numdoc] & "
AND numrig=" & DMin("numrig","DocRig","CodArt='d' AND numdoc=" &
[numdoc] & " AND numrig>" & [numrig])))
WHERE CodArt<>"d";
mi viene restituito l'errore:
Impossibile aggiornare tutti i record nella query di aggiornamento.
Perchè

 - Mostra testo tra virgolette -
ho trovato forse l'errore:
numrig è campo testo

numrig č campo testo
Allora:
UPDATE DocRig
SET CodCon = Val(DLookUp("desart","DocRig","numdoc=" & [numdoc] & "
AND numrig='" & DMin("numrig","DocRig","CodArt='d' AND numdoc=" &
[numdoc] & " AND numrig>" & [numrig]) & "'" ) )


Questa annulla e sostituisce la precedente:
UPDATE DocRig
SET CodCon = Val(DLookUp("desart","DocRig","numdoc=" & [numdoc] & "
AND numrig='" & DMin("numrig","DocRig","CodArt='d' AND numdoc=" &
[numdoc] & " AND numrig>'" & [numrig] & "'") & "'" ) )
WHERE CodArt<>"d";
Ma perchè NUMERO riga è di tipo TESTO ?
Un numero è numerico ...



Grazie mille Vincenzo, funziona perfettamente!