User Tools

Site Tools


vba:access:functions:opensqlasquery

[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
vba/access/functions/opensqlasquery.txt · Last modified: 31.08.2015 11:57:54 by yaslaw