Hallo Peter!
Jetzt hab ich noch eine blöde Frage. Versuche vergeblich meine
SQL Statements mit Docmd.RunSQL aufzurufen.
Das funktioniert aber leider nicht.
Wie der Name vermuten lässt: RunSQL führt Aktionsabfragen durch (Löschen oder Aktualisieren). Eine Auswahl funktioniert nicht über RunSQL.
wie rufe ich die Tabelle auf und baue die SQL Statements im
VBA Code ein?
Ich nehme jetzt mal beispielsweise an, Du hast eine Tabelle, z. B. „Tabelle1“, mit folgenden Feldern: Feld1, Feld2, Feld3, Feld4. Mit dem Formular hast Du Dir die folgende Reihenfolge zusammengebastelt: Feld3, Feld2, Feld4. Feld1 willst Du nicht anzeigen lassen.
Dann sähe Dein SQL-Statement wie folgt aus: SELECT Feld3, Feld2, Feld4 FROM Tabelle1.
Das kannst Du Dir als Abfrage wie folgt zusammenbauen und dann in der „Tabellenansicht“ wie folgt darstellen:
Public Sub TemporaereAbfrageAnzeigen(pstrSQL as String)
Dim dbMdb as Database
Dim qryAbfrage as Querydef
Const TEMP\_ABFRAGE as String="TempAbfrage"
On Error GoTo ErrorHandler
Set dbMdb=currentdb()
docmd.DeleteObject acQuery, TEMP\_ABFRAGE
Set qryAbfrage = dbMdb.CreateQuerydef(TEMP\_ABFRAGE, pstrSQL)
' hier ggf. noch Ansichten usw. nach Belieben einstellen, s. Hilfe zu OpenQuery:
Docmd.OpenQuery TEMP\_ABFRAGE
ErrorHandler:
Select Case Err.Number
Case 0
Case 7874
' und weitere Codes, die das DeleteObject erzeugt, wenn Abfrage
' nicht vorhanden (was auch egal ist)
Resume Next
Case Else
Resume ErrorHandler
End Select
End Sub
Code übrigens nicht compiliert, solltest Du Dir mal genauer anschauen. Die temporäre Abfrage kannst Du dann auch als Datenquelle für Berichte/Formulare oder so weiterverwenden. Ggf. kannst Du sie auch wieder löschen; dazu kenne ich Dein Programm aber nicht…
Gruß, Manfred