Newsgroup: it.comp.appl.access
Titolo: DateAdd, perchè non funziona?

Salve, sto cercando di utilizzare la funzione DateAdd ma mi appare un 
messaggio di errore che dice che la query non è aggiornabile...
Questo è quanto c'è nella mia Query di aggiornamento:
UPDATE Tabella1 SET data2 = (SELECT dateAdd("m",3,[Tabella1].[data1]) FROM 
Tabella1;)
WHERE aa='ok';
Se provo ad "isolare" il select e lo sostituisco con un valore funziona, 
stessa cosa se uso solo il select, insomma le due parti funzionano entrambe 
se da sole ma insieme non ne vogliono sapere.
Qualche idea?
Grazie
Gianluca 

(.....)

L'istruzione che hai scritto funziona (forse) solo nel caso in cui Tabella1 contiene una sola riga.
Se capisco bene, tu vorresti aggiornare il campo Data2 delle righe di Tabella1 tali che il campo aa contiene il valore
"ok" con un valore calcolato aggiungendo 3 mesi al valore contenuto nel campo Data1.
Se è coì, l'istruzione è semplicemente
UPDATE Tabella1 SET Data2=dateAdd("m",3,data1) WHERE aa="ok";
Vincenzo Turturro
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com/
---------------------------------------------
E quello di it.comp.as400
http://www.faq400.com/
---------------------------------------------

 UPDATE Tabella1 SET Data2=dateAdd("m",3,data1) WHERE aa="ok";
ti ringrazio... non vorrei essere ipocrita dicendo una bugia ma (grazie 
all'aiuto in un altro NG) ho già ricevuto la tua stessa risposta...
effettivamente avevo complicato le cose e la soluzione era più semplice di 
quel che pensavo.
Mi scuso se ho postato in due NG diversi ma "quando si ha un problema" si 
tentano varie vie...
In ogni caso ne approfitto per chiederti una cosa (giuro che non l'ho 
chiesto e non lo chiederò dall'altra parte!) in pratica il mio problema è 
inerente al calcolo della scadenza di un abbonamento quindi la query di 
aggiornamento l'ho modificata così
UPDATE TABELLA1 SET data2 = dateAdd("m",[periodo],[data1])
WHERE ID = (SELECT MAX(ID) FROM tabella1);
ho inserito anche il MAX(ID) perchè così aggiorno sempre l'ultimo record 
inserito ed avevo pensato di associare al tasto di chiusura della maschera 
una macro che prima esegui la query e poi chiuda la maschera.
Secono te è una buona soluzione o posso trovare di meglio?
Non è possibile inserire una funzione DATEADD direttamente all'interno di 
una maschera, vero?
Saluti
Gianluca 

Gianluca 


 VBA.
onestamente sono a digiuno completo di VBA quindi mi sa che la prima 
soluzione è "ottima" :-)
A questo punto ne approfitto fino in fondo, è possibile creare un nuovo 
record "copiando" alcuni dati da un vecchio record?
Mi spiego meglio: quando si intende rinnovare un abbonamento scaduto, dovrei 
farlo decorrere dal giorno della scadenza del precedente pagamento quindi 
dovrei inserire in DATAdecorrenza la DATAscadenza precedente e così via...
Troppo complesso?
Saluti
Gianluca 

 dove NomeTuaForm è il nome che hai dato alla form in questione.
ma nel caso in cui l' ID si trovasse in una sottomaschera come si "indica"? 
Ho provato con un "ingenuo" SUBFORM ma non lo accetta... :-)
Saluti
Gianluca 

 forms!NomeFormPrincipale.NomeControlloSubForm!txtID
grazie per la risposta ma ho ancora qualche difficoltà...
forse non ho ben chiaro cosa sia un "controllo" in quanto l'istruzione non 
l'accetta...
ma per NomeControllo intendi il nome della "casella di testo" e per 
"SubForm" il nome della sottomaschera?
Quindi nel mio caso potrebbe essere una cosa del genere
forms!Maschera.IdMaschera2!txtId ???
Come mai ho notato che spesso non accetta txtId ma accetta [Id] ?
Grazie ancora
Gianluca