2012-03-29 23 views

Respuesta

32

Puede hacerlo de la siguiente manera:

DoCmd.OpenQuery "yourQueryName", acViewNormal, acEdit 

O

CurrentDb.OpenRecordset("yourQueryName") 
+1

No quiero editar. ¿Esto ejecutará mi actualización e insertará consultas? – tdjfdjdj

+0

Sí, ejecutará Actualizar e Insertar consultas. – Taryn

+0

Es una consulta de anexión que funciona manualmente, pero no en mi código vba. ¿No puedo usar una consulta guardada adjunta? – tdjfdjdj

7

se debe investigar por qué VBA no puede encontrar nombreconsulta.

Tengo una consulta guardada llamada qryAddLoginfoRow. Inserta una fila con la hora actual en mi loginfo tabla. Esa consulta se ejecuta correctamente cuando se llama por nombre por CurrentDb.Execute.

CurrentDb.Execute "qryAddLoginfoRow" 

Mi conjetura es que, o bien nombreconsulta es una variable que contiene el nombre de una consulta que no existe en la colección QueryDefs de la base de datos actual, o nombreconsulta es el nombre literal de una consulta existente usted, pero no lo encerré entre comillas

Editar: Es necesario encontrar una manera de aceptar que nombreconsulta no existe en la colección QueryDefs del db actual. Agregue estas 2 líneas a su código VBA justo antes de la línea CurrentDb.Execute.

Debug.Print "queryname = '" & queryname & "'" 
Debug.Print CurrentDb.QueryDefs(queryname).Name 

La segunda de estas 2 líneas activarán de error de tiempo de ejecución 3265, "No se ha encontrado en esta colección." y luego ir a la ventana Inmediato para verificar el nombre de la consulta que está pidiendo CurrentDb a Execute.

+0

Es una consulta de anexión que funciona manualmente, pero no en mi código vba. ¿No puedo usar una consulta guardada adjunta? – tdjfdjdj

+0

La consulta que describí ** es ** una consulta de anexión ... agrega (agrega) una fila a mi tabla de inicio de sesiónfo. – HansUp

2

Para utilizar CurrentDb.Execute, su consulta debe ser una consulta de acción Y entre comillas.

CurrentDb.Execute "queryname" 
Cuestiones relacionadas