Compartir a través de


Método Connection.Execute (DAO)

Se aplica a: Access 2013, Office 2013

Ejecuta una consulta de acciones o ejecuta una instrucción SQL en el objeto especificado.

Sintaxis

expresión . Execute(Query, Options)

expression Variable que representa un objeto Connection.

Parameters

Nombre

Obligatorio/opcional

Tipo de datos

Descripción

Query

Necesario

String

String que es una instrucción SQL o el valor de la propiedad Name de un objeto QueryDef.

Opciones

Opcional

Variant

Constante o combinación de constantes que determinan las características de integridad de los datos, tal como se especifica en la sección de configuración.

Comentarios

Puede usar las siguientes constantes RecordsetOptionEnum para Options.

Constante

Descripción

dbDenyWrite

Deniega el permiso de escritura a otros usuarios (sólo áreas de trabajo de Microsoft Access).

dbInconsistent

(Valor predeterminado) Ejecuta actualizaciones no coherentes (sólo áreas de trabajo de Microsoft Access).

dbConsistent

Ejecuta actualizaciones coherentes (sólo áreas de trabajo de Microsoft Access).

dbSQLPassThrough

Ejecuta una consulta de paso a través de SQL. Establecer esta opción pasa la instrucción SQL a una base de datos ODBC para procesamiento (sólo áreas de trabajo de Microsoft Access).

dbFailOnError

Deshace las actualizaciones si se produce un error (sólo áreas de trabajo de Microsoft Access).

dbSeeChanges

Genera un error en tiempo de ejecución si otro usuario cambia los datos que está usted editando (sólo áreas de trabajo de Microsoft Access).

dbRunAsync

Ejecuta la consulta de forma asincrónica (sólo conexiones ODBCDirect y objetos QueryDef).

dbExecDirect

Ejecuta la instrucción sin llamar primero a la función API de ODBC SQLPrepare (sólo conexiones ODBCDirect y objetos QueryDef).

Nota:

[!NOTA] Las áreas de trabajo de ODBCDirect no se admiten en Microsoft Access 2013. Use ADO si desea obtener acceso a orígenes de datos externos sin usar el motor de base de datos de Microsoft Access.

Nota:

[!NOTA] Las constantes dbConsistent y dbInconsistent son mutuamente excluyentes. Puede usar una o la otra, pero no ambas, en una instancia específica de OpenRecordset. Si se usan dbConsistent y dbInconsistent, se produce un error.

El método Execute solo es válido para consultas de acción. Si usa Execute con otro tipo de consulta, se produce un error. Como una consulta de acción no devuelve registros, Execute no devuelve un objeto Recordset. (La ejecución de una consulta de paso SQL en un área de trabajo de ODBCDirect no devuelve un error si no se devuelve un objeto Recordset ).

Use la propiedad RecordsAffected del objeto Connection, Database o QueryDef para determinar el número de registros afectados por el método Execute más reciente. Por ejemplo, RecordsAffected contiene el número de registros eliminados, actualizados o insertados al ejecutar una consulta de acción. Cuando usa el método Execute para ejecutar una consulta, la propiedad RecordsAffected del objeto QueryDef se configura en el número de registros afectados.

En un área de trabajo de Microsoft Access, si proporciona una instrucción SQL sintácticamente correcta y tiene los permisos adecuados, el método Execute no provocará errores, incluso si no se puede modificar ni eliminar una sola línea. Por lo tanto, use siempre la opción dbFailOnError al uasr el método Execute para ejecutar o eliminar una consulta. Esta opción genera un error en tiempo de ejecución y deshace todos los cambios correctos si los objetos afectados están bloqueados y no se pueden actualizar ni eliminar.

En versiones anteriores del motor de base de datos de Microsoft Jet, las instrucciones SQL se insertaban automáticamente en transacciones implícitas. Si parte de una instrucción ejecutada con dbFailOnError producía un error, se revertía toda la instrucción. Para mejorar el rendimiento, desde la versión 3.5 estas instrucciones implícitas ya no existen. Si actualiza código DAO antiguo, no olvide que debe usar transacciones explícitas con las instrucciones Execute.

Para mejorar el rendimiento en un área de trabajo de Microsoft Access, especialmente en un entorno multiusuario, anide el método Execute dentro de una transacción. Use el método BeginTrans en el objeto Workspace actual, use el método Execute y complete la transacción con el método CommitTrans en el objeto Workspace. De esta forma, se reducirán los cambios en disco y se liberarán todos los bloqueos aplicados mientras se ejecuta la consulta.