Newsgroup: it.comp.appl.access
Titolo: esito queryDefs di aggiornamento

come si fa a testare l'esito di una query di aggiornamento ?
chiedo questo perchč nell'esmpio allegato faccio due aggiornamenti con due
query
il parametro dbFailOnError       fa si che se la singola query se incontra
errori annulla l'intero aggiornamento di quella query
ma non mi si attiva al OnError che gestirebbe i controagiornamenti ed il
condice prosegue come se tutto va bene end invece devi scatenare il rollback
grazie
On Error GoTo Current_Err per 'rollback
DBEngine.BeginTrans
        Set Qs = CurrentDb.QueryDefs("a_scadenze_Minsert")
        Qs.Execute dbFailOnError
        Set Qs = CurrentDb.QueryDefs("a_mezzi_Minsert")
        Qs.Execute dbFailOnError
DBEngine.CommitTrans 'consolido
goto fine
Current_Err:
    DBEngine.Rollback
    ......

 condice prosegue come se tutto va bene end invece devi scatenare il
rollback
Cioé stai dicendo che c'č un errore ma che non salta alla label di handling?
Mooooolto strano. Dacci informazioni in piů


E' così
mentre faccio eseguire il codice, con un'altra sessione sono in edit in uno
rei record interessati dall'aggiornamento di una due  due query
ed il db prevede il blocco dei record modificati
quindi quando passa la prima query del dovrebbe cancellare alcuni record tra
cui quello in modifica con la seconda sessione, il codice si
arresta(probabilmente aspetta un timeout) e poi prosegue
ma non attiva l'onerror e quindi prosegue e consolida gli aggironamenti
della seconda query
il risultato è che la prima query è come se non fosse stata eseguita
(nessuna delle delete risulta fatta) la è stata eseguita con successo la
seconda
mi ci vorrebbe qualche opzione o per testare l'esito della querydefs o per
attivare on error

 ha scritto nel messaggio
news:lPxKb.47281$VW.21...@news3.tin.it...

inoltre mentre gira il codice controllo dbFailOnError ed il debug di mice
che è vuoto (anche se ci scrivo pippo, l'istruzione va comunque )
bo?!?!


ho fatto un'altra prova sostituendo l'eseguzione della QueryDefs con RunSql
Set Qs = CurrentDb.QueryDefs("a_scadenze_Mdel")
       'Qs.Execute dbFailOnError
        .RunSQL Qs.Sql
qui accade che mi si apre una finestra che segnala la presenza di errori nel
comando, e se scelgo NO il controllo passa alla OnError e quindi finalmente
posso scatenare il RollBack
Ma cose si fa ad evidare il messaggio di errore ?
(tra le opzioni ho disattivata la "query comando" che serve ad evitare di
chiedere se eseguire le query di comando, ma non c'è riferimento al messggi
di errore)
grazie

 ha scritto nel messaggio
news:gxxKb.47184$VW.21...@news3.tin.it...

La costante dbFailOnError fa sě che in caso di errore nessuna modifica venga
apportata, anzi se vi sono state delle modifiche, queste vengono annullate.
Ciň vuol dire che č la costante a generare un Rollback in caso di errore.
Una strada per verificare se sono state apportate modifiche potrebbe essere
quella di andare a leggere il valore direttamente nella tabella sottoposta
ad aggiornamento per esempio con un DlookUp. Ovviamente devi conoscere il
valore modificato.
Leggi il primo valore che ti serve da aggiornamento, lo confronti con il
valore da aggiornare e se corrisponde vuol dire che il record č stato
aggiornato.
Ciao, Carlo

 ha scritto nel messaggio
news:UUxKb.47301$VW.21...@news3.tin.it...

Prova a verificare Err.Number dopo la prima QRY Action....!
@Alex.


ho fatto un'altra prova sostituendo l'eseguzione della QueryDefs con RunSql
Set Qs = CurrentDb.QueryDefs("a_scadenze_Mdel")
       'Qs.Execute dbFailOnError
        Docmd.RunSQL Qs.Sql
qui accade che mi si apre una finestra che segnala la presenza di errori
(eseguire comunque query di comando?) nel
comando, e se scelgo NO il controllo passa alla OnError e quindi finalmente
posso scatenare il RollBack
Ma cose si fa ad evidare il messaggio di errore ?
(tra le opzioni ho già disattivata la "query comando" che serve ad evitare


 ha scritto nel messaggio
news:9dyKb.59807$_P.23...@news4.tin.it...

Luciano, ma la gestione Errori a cosa serve....??
Metti ON ERROR all'inizio e il RollBack lo esegui su intercettazione
Errore...!!!
Anche se secondo me il RollBack non serve a nulla poichè non ha eseguito la
QRY.
Prova a rileggere bene EXECUTE e come supporta le TRANSAZIONI....!!!
@Alex.

 ha scritto nel messaggio
news:bteba6$th7$1...@lacerta.tiscalinet.it...

se leggi meglio il post la gestione c'è
è la querydefs che per fail non attiva l'onerror vba
pe la transazione hai ragione, con le query non c'è aggancio
mentre c'è con con il metodo RunSql
il problema che mi resta è avitare il messaggio di conferma si/no
dell'errore dopo un RunSql
tra le Opzioni ho già disattivata la "query comando" che serve ad evitare di
chiedere conferma PRIMA si eseguire le query di comando,
ma non trovo come poter ebitare il messaggio di conferma in presenza di
errori


Risolto
praticamente, visto che non mi riusciva di intercettare l'errore di
aggiornamento nemmeno con la RunSql (questa infatti trasitava per l'utente
con un messaggio in caso di errore), ho mandato a quel paese anche le query
di aggiornamento (già le maschere le ho mollate da tempo) e mi sono fatto un
piccolo runtime per presiedere gli aggiornamenti via recordset.