2012-06-26 11 views
11

Nei commenti su this answer, Remou scrive cheQual è la differenza tra DoCmd.SetWarnings e CurrentDb.Execute

CurrentDB.Execute "insert sql here"

è meglio di

DoCmd.SetWarnings = 0
DoCmd.RunSQL "insert sql here"

a causa del built-in avvisi che Access produce. Sto cercando di capire la differenza.

Se entrambi mascherano errori, perché il primo è preferibile rispetto al secondo? Ci sono delle buone pratiche qui?

risposta

17

Non entrambi mascherano gli errori. DoCmd.SetWarnings maschera gli errori ed è a livello di sistema, non limitato alla singola applicazione che si sta utilizzando. DoCmd.SetWarnings False senza il corrispondente DoCmd.SetWarnings True significherà che le query di azione verranno eseguite senza alcuna richiesta in alcuna applicazione di Access sul PC.

Execute lancia avvisi, gli avvisi di cui si ha bisogno, ad esempio la query non è riuscita a eseguire, ma non fornisce avvisi che potrebbero non essere necessari, come "Sei sicuro di voler eseguire questa query".

In this thread Allen Browne, Access MVP, dice che non usa Set Warnings.

Per inciso, vorrei generalmente consiglia di utilizzare un'istanza di CurrentDB, come questo vi permetterà di restituire un numero di record, tra l'altro, in modo da:

Set db = CurrentDB 
db.Execute sSQL, dbFailOnError 
+0

Dal tuo commento: 'Per eseguire senza la avvisi incorporati, utilizzare un'istanza di CurrentDB ed Exceute the SQL string' che mi porta a credere che '.Execute' non lanci avvertimenti? – JimmyPena

+0

Vedere la modifica sopra. – Fionnuala

+3

Un altro modo per avvicinarsi a questo è iniziare da "RunSql'. Prima richiede all'utente di confermare che desidera eseguire la query di azione, quindi visualizza un messaggio sul numero di record interessati successivamente. Le persone usano 'SetWarnings = False' per sopprimere questi messaggi. Ma '[database] .Execute' non presenta nessuno di questi messaggi, quindi nessuna motivazione per disattivare' SetWarnings'. Remou ha già detto tutto questo. Sto usando parole diverse nella remota possibilità che possa aiutare qualcuno, e anche per darmi un'altra opportunità di dire MAI di disattivare 'SetWarnings'! – HansUp

Problemi correlati