Hallo!
Ich bins mal wieder...Diesmal mit folgendem Problem:
ich möchte eine Union-Abfrage erstellen. Es sollen alle Tabellen zusammengeführt werden, die in ihrem Namen das Wort "Import" haben. Ist sowas möglich? Ich habe dashier schon testweise probiert:
SELECT * FROM 0_Test1
UNION ALL SELECT * FROM 0Test*;
(Alle Tabellen bei denen der Name mit "0Test" beginnt sollen übertragen werden.
Surprise, Surprise...eso geht es nicht
Danke für eure Hilfe!
Platzhalterzeichen sind für Feld- und Tabellennamen in SQL-Abfragen nicht erlaubt.
Ich nehme an deine Tabelle heißt nicht "0Test*", sondern du willst damit alle Tabellen einbinden die mit 0Test beginnen.
Du musst aber für jede Tabelle einzeln den Union Select schreiben.
SELECT * FROM 0_Test1
UNION ALL SELECT * FROM 0Test2
UNION ALL SELECT * FROM 0Test3;
Es stellt sich die Frage, warum Du nicht gleich in EINE Tabelle importierst?
Eberhards Anmerkung genießt natürlich Priorität. Mit einem kleinen Schluck Kreativgeist aus der Flasche, könnte man aber auch zu einer solchen Lösung gelangen.
'Beispielaufruf: CreateCustomUnionQuery "DeinZielabfragename", "0Test*"
Public Sub CreateCustomUnionQuery(QName As String, Pattern As String)
Dim tn() As String
Dim i As Long
Dim o As AccessObject
If QueryExists(QName) Then CurrentDb.QueryDefs(QName).Delete
ReDim tn(CurrentData.AllTables.Count - 1)
For Each o In CurrentData.AllTables
If o.Name Like Pattern Then
tn(i) = o.Name
i = i + 1
End If
Next
If i > 0 Then
ReDim Preserve tn(i - 1)
Call CurrentDb.CreateQueryDef(QName, "SELECT * FROM " & _
Join(tn, vbCrLf & "UNION ALL" & _
vbCrLf & "SELECT * FROM ") & ";")
End If
End Sub
Public Function QueryExists(QName As String) As Boolean
Dim o As AccessObject
For Each o In CurrentData.AllTables
If o.Name = QName Then
QueryExists = True
Exit Function
End If
Next
End Function
Hallo!
Der Kreativitätsgeist hat geholfen ;)
Ein bisschen musst ich noch ändern:
Aus
If QueryExists(QName) Then CurrentDb.QueryDefs(QName).Delete
wurde
If QueryExists(QName) Then db.QueryDefs.Delete QName
und aus
For Each o In CurrentData.AllTables
wurde
For Each o In CurrentData.AllQueries
Vielen Dank euch allen!!