Yaslaw.Info > VB / VBA > [VBA] [Access] öffnen eines SQL-Strings als Abfrage
Impressum Stopp Acta

[VBA] [Access] öffnen eines SQL-Strings als Abfrage

In MS Access kann man SQL-Statements, welche man in VBA erstellt nicht direkt öffnen. Mit der folgenden Funktion wird eine temporäre Abfrage (QueryDef) erstellt und diese anschliessend geöffnet
Die Abfrage bleibt bestehen und wird beim nächsten mal auf das neue SQL angepasst.
In einer Mehrbenutzerumgebung sollte der Name des temporären Query noch um die Userkennung ergänzt werden.

'-------------------------------------------------------------------------------
'mpl          by ERB software
'Environment  Access 2000 und höher
'Author       Stefan Erb (ERS)
'History      22.12.2011 - ERS - Creation
'-------------------------------------------------------------------------------

'/**
' * Öffnet ein SQL-String als Abfrage (QueryDef)
' * @param  String       SQL-Statement
' */
Public Sub openSqlAsQuery(ByVal sql As String)
    Const C_TEMP_QUERY_NAME = "vw_temp"
   
On Error Resume Next
    'Versuchen das SQL hinter der Abfrage vw_temp zu ersetzen
    CurrentDb.QueryDefs(C_TEMP_QUERY_NAME).sql = sql
    If Err.Number <> 0 Then
        'Falls das Query vw_temp noch nicht besteht, neu anlegen
        Call CurrentDb.CreateQueryDef(C_TEMP_QUERY_NAME, sql)
        Err.clear
    End If
On Error GoTo 0

    'Abfrage öffnen
    Call DoCmd.OpenQuery(C_TEMP_QUERY_NAME)

End Sub


Und hier noch ein Beispiel wie man die Funktion anwenden kann
Public Sub test()
    Dim Sql As String
    Dim id As Long
   
    id = MsgBox("Get ID")
   
    Sql = "SELECT * FROM myTable WHERE ID = " & id

    Call openSqlAsQuery(Sql)

End Sub
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki