User Tools

Site Tools


vba:access:functions:opensqlasquery

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
vba:access:functions:opensqlasquery [09.12.2013 09:39:54]
127.0.0.1 external edit
vba:access:functions:opensqlasquery [31.08.2015 11:57:54] (current)
yaslaw
Line 1: Line 1:
  
-======[VBA] [Access] openSqlAsQuery()======+======[VBA][Access] openSqlAsQuery()======
 In MS Access kann man SQL-Statements,​ welche man in VBA erstellt nicht direkt öffnen. Mit der folgenden ​ In MS Access kann man SQL-Statements,​ welche man in VBA erstellt nicht direkt öffnen. Mit der folgenden ​
 Funktion wird eine temporäre Abfrage (<​nowiki>​QueryDef</​nowiki>​) erstellt und diese anschliessend geöffnet Funktion wird eine temporäre Abfrage (<​nowiki>​QueryDef</​nowiki>​) erstellt und diese anschliessend geöffnet
 Die Abfrage bleibt bestehen und wird beim nächsten mal auf das neue SQL angepasst. 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.+>In einer Mehrbenutzerumgebung sollte der Name des temporären Query noch um die Userkennung ergänzt werden.
  
 <code vb>'​------------------------------------------------------------------------------- <code vb>'​-------------------------------------------------------------------------------
Line 18: Line 18:
 ' */ ' */
 Public Sub openSqlAsQuery(ByVal sql As String) Public Sub openSqlAsQuery(ByVal sql As String)
- Const C_TEMP_QUERY_NAME ​= "vw_temp"+ Dim qryName as String: qryName ​= "vw_temp_" ​& Environ("​UserName"​)
   
 On Error Resume Next On Error Resume Next
- '​Versuchen das SQL hinter der Abfrage ​vw_temp ​zu ersetzen + '​Versuchen das SQL hinter der Abfrage ​vw_temp_username ​zu ersetzen 
- CurrentDb.QueryDefs(C_TEMP_QUERY_NAME).sql = sql+ CurrentDb.QueryDefs(qryName ​).sql = sql
  If Err.Number <> 0 Then  If Err.Number <> 0 Then
  '​Falls das Query vw_temp noch nicht besteht, neu anlegen  '​Falls das Query vw_temp noch nicht besteht, neu anlegen
- Call CurrentDb.CreateQueryDef(C_TEMP_QUERY_NAME, sql)+ Call CurrentDb.CreateQueryDef(qryName ​, sql)
  Err.clear  Err.clear
  End If  End If
Line 31: Line 31:
  
  '​Abfrage öffnen  '​Abfrage öffnen
- Call DoCmd.OpenQuery(C_TEMP_QUERY_NAME)+ Call DoCmd.OpenQuery(qryName ​)
  
 End Sub</​code>​ End Sub</​code>​
vba/access/functions/opensqlasquery.1386578394.txt.gz · Last modified: 20.08.2014 12:42:18 (external edit)