======[VBA][Access] openSqlAsQuery()====== 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) Dim qryName as String: qryName = "vw_temp_" & Environ("UserName") On Error Resume Next 'Versuchen das SQL hinter der Abfrage vw_temp_username zu ersetzen CurrentDb.QueryDefs(qryName ).sql = sql If Err.Number <> 0 Then 'Falls das Query vw_temp noch nicht besteht, neu anlegen Call CurrentDb.CreateQueryDef(qryName , sql) Err.clear End If On Error GoTo 0 'Abfrage öffnen Call DoCmd.OpenQuery(qryName ) 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 {{tag>VBA MS_Access}}