24 Stimmen

MS Access - Ausführen einer gespeicherten Abfrage nach Name in VBA

Wie kann ich eine gespeicherte Abfrage in MS Access 2007 in VBA ausführen?

Ich möchte das SQL nicht kopieren und in VBA einfügen. Ich möchte lieber nur den Namen der Abfrage ausführen.

Das funktioniert nicht ... VBA kann die Abfrage nicht finden.

CurrentDb.Execute queryname

40voto

Taryn Punkte 233818

Sie können dies auf folgende Weise tun:

DoCmd.OpenQuery "yourQueryName", acViewNormal, acEdit

OR

CurrentDb.OpenRecordset("yourQueryName")

12voto

HansUp Punkte 93765

Sie sollten untersuchen, warum VBA nicht finden kann queryname .

Ich habe eine gespeicherte Abfrage namens qryAddLoginfoRow . Es fügt eine Zeile mit der aktuellen Uhrzeit in meine loginfo Tisch. Diese Abfrage läuft erfolgreich, wenn sie namentlich aufgerufen wird von CurrentDb.Execute .

CurrentDb.Execute "qryAddLoginfoRow"

Meine Vermutung ist, dass entweder queryname eine Variable ist, die den Namen einer Abfrage enthält, die nicht in der QueryDefs-Sammlung der aktuellen Datenbank vorhanden ist, oder queryname ist der wörtliche Name einer vorhandenen Abfrage, die Sie jedoch nicht in Anführungszeichen gesetzt haben.

Editar : Sie müssen einen Weg finden, das zu akzeptieren queryname nicht in der QueryDefs-Sammlung der aktuellen Datenbank vorhanden ist. Fügen Sie diese 2 Zeilen in Ihren VBA-Code ein, direkt vor der CurrentDb.Execute Linie.

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

Die zweite dieser 2 Zeilen löst den Laufzeitfehler 3265 aus, " Artikel nicht in dieser Sammlung gefunden. " Gehen Sie dann zum Fenster "Sofort", um den Namen der Abfrage zu überprüfen CurrentDb a Execute .

5voto

tahwos Punkte 544

Um CurrentDb.Execute zu verwenden, muss Ihre Abfrage eine Aktionsabfrage sein, UND in Anführungszeichen stehen.

CurrentDb.Execute "queryname"

0voto

Combinatix Punkte 1136

Es gibt 2 Möglichkeiten, Action Query in MS Access VBA auszuführen:


  1. Sie können verwenden DoCmd.OpenQuery Erklärung. So können Sie diese Warnungen kontrollieren:

Action Query Warning Example

ABER: Beachten Sie, dass DoCmd.SetWarnings auch nach Beendigung der Funktion gesetzt bleibt. Das bedeutet, dass Sie sicherstellen müssen, dass Sie die Funktion in einem Zustand belassen, der Ihren Anforderungen entspricht

Function RunActionQuery(QueryName As String)
    On Error GoTo Hell              'Set Error Hanlder
    DoCmd.SetWarnings True          'Turn On Warnings
    DoCmd.OpenQuery QueryName       'Execute Action Query
    DoCmd.SetWarnings False         'Turn On Warnings
    Exit Function
Hell:
    If Err.Number = 2501 Then       'If Query Was Canceled
        MsgBox Err.Description, vbInformation
    Else                            'Everything else
        MsgBox Err.Description, vbCritical
    End If
End Function

  1. Sie können verwenden CurrentDb.Execute Methode. Auf diese Weise können Sie die Fehler bei Aktionsabfragen unter Kontrolle zu halten. Das SetWarnings-Flag hat keinen Einfluss darauf. Die Abfrage wird immer ohne Warnungen ausgeführt.

    Function RunActionQuery() 'To Catch the Query Error use dbFailOnError option On Error GoTo Hell CurrentDb.Execute "Query1", dbFailOnError Exit Function Hell: Debug.Print Err.Description End Function

Es ist erwähnenswert, dass die dbFailOnError reagiert nur auf Fehler in der Datenverarbeitung. Wenn die Abfrage einen Fehler enthält (z. B. einen Tippfehler), wird ein Laufzeitfehler erzeugt, auch wenn diese Option nicht angegeben ist


Darüber hinaus können Sie DoCmd.Hourglass True y DoCmd.Hourglass False um den Mauszeiger zu kontrollieren, wenn Ihre Abfrage länger dauert

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X