2012-06-26 42 views
11

En los comentarios sobre this answer, Remou escribe que¿Cuál es la diferencia entre DoCmd.SetWarnings y CurrentDB.Execute

CurrentDB.Execute "insert sql here"

es mejor que

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

debido a la incorporada en el advertencias que produce Access. Estoy tratando de entender la diferencia.

si ambos errores máscara, ¿por qué es preferible el primero sobre el segundo? ¿Hay alguna de las mejores prácticas aquí?

Respuesta

17

Ellos no lo hacen tanto los errores de la máscara. DoCmd.SetWarnings enmascara los errores y abarca todo el sistema, no se limita a la única aplicación que está utilizando. DoCmd.SetWarnings False sin la correspondiente DoCmd.SetWarnings True significará que las consultas de acción se ejecutará sin más consultas en cualquier aplicación de Access en el PC.

Ejecutar arroja advertencias, las advertencias que necesita, como la consulta no se pudo ejecutar, pero no da advertencias que no necesita, como "¿Está seguro de que desea ejecutar esta consulta".

In this thread Allen Browne, Acceso MVP, dice que no utiliza advertencias establecidas.

Como acotación al margen, recomendaría generalmente usando una instancia de CurrentDB, ya que esto le permitirá devolver un recuento de registros, entre otras cosas, para:

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

Desde su comentario: 'Para ejecutar sin el incorporada advertencias, utilice una instancia de CurrentDB y Exceute la string' SQL que me lleva a creer que '.Execute' no lanza advertencias? – JimmyPena

+0

Ver la edición anterior. – Fionnuala

+3

Otra manera de abordar esto es partir de 'RunSql'. Primero, se requiere que el usuario confirme que desea ejecutar la consulta de acción, y luego muestra un mensaje sobre el número de registros afectados posteriormente. La gente usa 'SetWarnings = False' para suprimir esos mensajes. Pero '[database] .Execute' no presenta ninguno de esos mensajes, por lo que no hay motivos para desactivar' SetWarnings'. Remou ya dijo todo eso. Estoy usando diferentes palabras en caso de que pueda ayudar a alguien, y también para darme la oportunidad de decir ¡NUNCA apague 'EstablecerAdvenimientos'! – HansUp

Cuestiones relacionadas