2012-03-29 22 views

risposta

32

È possibile farlo nel modo seguente:

DoCmd.OpenQuery "yourQueryName", acViewNormal, acEdit 

O

CurrentDb.OpenRecordset("yourQueryName") 
+1

Non voglio modificare. Questo eseguirà il mio aggiornamento e inserirò le domande? – tdjfdjdj

+0

Sì, verrà eseguito Aggiornamento e Inserisci query. – Taryn

+0

È una query di accodamento che funziona manualmente, ma non nel mio codice vba. Non posso usare una query salvata aggiunta? – tdjfdjdj

7

si dovrebbe indagare il motivo per cui VBA non riesce a trovare nomeinterrogazione.

Ho una query salvata denominata qryAddLoginfoRow. Inserisce una riga con l'ora corrente nella tabella di login. Quella query viene eseguita correttamente quando chiamato per nome da CurrentDb.Execute.

CurrentDb.Execute "qryAddLoginfoRow" 

La mia ipotesi è che o nomeinterrogazione è una variabile che tiene il nome di una query che non esiste nel QueryDefs del database corrente, o QueryName è il nome letterale di una query esistente, ma si non lo ha racchiuso tra virgolette.

Edit: Hai bisogno di trovare un modo per accettare che nomeinterrogazione non esiste nel QueryDefs del db corrente. Aggiungi queste 2 linee al tuo codice VBA appena prima della riga CurrentDb.Execute.

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

La seconda di queste 2 righe attiveranno errore di run-time 3265, "Elemento non trovato in questa collezione.", quindi passare alla finestra immediata per verificare il nome della query che stai chiedendo CurrentDb a Execute.

+0

È una query di accodamento che funziona manualmente, ma non nel mio codice vba. Non posso usare una query salvata aggiunta? – tdjfdjdj

+0

La query che ho descritto ** è ** una query di accodamento ... aggiunge (aggiunge) una riga alla mia tabella loginfo. – HansUp

2

Per utilizzare CurrentDb.Execute, la query deve essere una query di azione AND tra virgolette.

CurrentDb.Execute "queryname" 
Problemi correlati