Mi era sfuggito che usi un database MDB (Access).![]()
A parte questo, la query è in ogni caso sbagliata perchè è necessario usare un'alias nella SELECT interna, per cui dovrebbe essere:
Mentre in SQLServer funziona perfettamente, anche se è necessario fare il CONVERT sul campo AREA in quanto tutti i campi sono definiti di testo (cosa che non ha alcun senso!)codice:UPDATE nometabella SET area= (SELECT SUM(b.area) FROM nometabella b) WHERE nome='TOT'
invece in un MDB che ha dei limiti non sembra possibile eseguirla, almeno io non ci sono riuscito nemmeno ricreando la tabella usando i tipi corretti per i campi.codice:UPDATE nometabella SET area= (SELECT SUM(CONVERT(Int, b.area)) FROM nometabella b) WHERE nome='TOT'
Per cui mi sa che devi 'incartartela' ed aggirare il problema, ovvero:
1. prima devi eseguire la SELECT per ottenere il valore dell'area
(verifica che ti restituisca il recordset con il valore corretto)codice:Dim rs As ADODB.Recordset Set rs = CN.Execute("SELECT SUM(area) As Totale FROM tabella")
2. poi aggiornare il valore
codice:CN.Execute "UPDATE nometabella SET area=" & rs("Totale).Value & " WHERE nome = 'TOT'"
![]()

Rispondi quotando