Newsgroup: it.comp.appl.access
Titolo: due query da codice e undo della prima

da codice lancio due query di aggiornamento su due tabelle diverse in
successione utilizzando docmd.openquery ecc ecc; Se la seconda query dovesse
violare una regola della tabella (es. chiavi duplicate in tabella) è
possibile annullare gli effetti prodotti dall'esecuzione della prima query?

 ha scritto nel messaggio
news:8spggv$39tg$1...@stargate1.inet.it...

A parte che con docmd.openquery non credo che tu possa eseguire una query di
comando, devi usare le transazioni per fare quello che chiedi.
Ciao, Sib

 comando, devi usare le transazioni per fare quello che chiedi.
 eppure a me cosě funziona:
 DoCmd.OpenQuery "qry costi aggiorna costo complessivo2", acNormal, acEdit
questo č il suo sql:
UPDATE EVENTI INNER JOIN [COSTI ESCURSIONI] ON EVENTI.[Codice evento] =
[COSTI ESCURSIONI].Escursione SET EVENTI.[Costo escursione] = ([COSTI
ESCURSIONI]![SommaDiImporto]+(([EVENTI]![Data fine]-[EVENTI]![Data
inizio]+1)*[EVENTI]![Diaria giornaliera AC]));
comunque credo sia un modo becero........
ma non mi ritengo in grado di usare le transazioni, speravo solo ci fosse
una soluzione senza.
ciao

 possibile annullare gli effetti prodotti dall'esecuzione della prima query?
Certo che puoi, ma devi usare una transazione.
Naturalmente non puoi usare docmd.openquery
Vedi faq 'Cosa sono e come funzionano le transazioni?' sul sito comune (link
qua sotto).
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------

  DoCmd.OpenQuery "qry costi aggiorna costo complessivo2", acNormal, acEdit
cut
In effetti sembra funzionare anche a me, forse mi sono sbagliato.
Comunque le transazioni, almeno a questi livelli, non sono cose dell'altro
mondo.
Vedi sul sito comune la struttura che deve avere la sub per usarle e vedrai
che con un po' di pazienza ci riesci.
Ciao, Sib
PS se le transazioni non ti funzionano con openquery prova con:
CurrentDB.Execute "TuaQuery"

 comando, devi usare le transazioni per fare quello che chiedi.
Caro sib, perche' mai non dovrebbe funzionare?...parliamone!:-)
Io uso esclusivamente docmd.openquery per le query di comando piuttosto che
(current)db.execute, ma solo perche' probabilmente quando ho sfogliato il
manuale mi e' andato l'occhio prima su docmd.openquery.
Tu cha lancia spezzi in favore del tuo metodo?
Saluti.
Luciano
(DOC)

 CurrentDB.Execute "TuaQuery"
Ciao, Sib
--
------------------------------------------------------
il sito comune di it.comp.database.access:
http://members.xoom.it/it_db_access
------------------------------------------------------
4000 anni fa', il saggio egizio Ptahhotep scrisse:
"... perche' non esistono saggi per nascita."
------------------------------------------------------
Saturiamo ECHELON:
bomba saddam attentato medio oriente

 wrote in message
8sq79h$ks$1...@news.mclink.it...

Devo dire che ho avuto una defaillance, momentanea
Poi mi sono ripreso e ora ti spiego perche' uso Execute.
Le transazioni operano a livello di operazioni del motore database, il docmd
e' invece una spece di macro.
Tanto per farti un'idea, execute non ti chiede conferme anche se non imposti
gli avvisi e reagisce ai metodi rollback e committrans
docmd.openquery ti chiede conferma e non reagisce al metodo rollback, in
pratica non lo puoi annullare, e' come se tu attivassi a mano la query.
Ciao, Sib
--
------------------------------------------------------
il sito comune di it.comp.database.Access:


 pratica non lo puoi annullare, e' come se tu attivassi a mano la query.
Oh, questa non la sapevo (che db.execute se ne frega dei warnings).
Comunque io uso molto anche docmd.runsql quando ho una stringa sql che mi
sono creato dinamicamente da mashera.
Devo provare....
Saluti.
Luciano
(DOC)