Guten Morgen zusammen,
ich brauche schon wieder etwas Unterstützung. So langsam wird es mir schon unangenehm :o
Ich nutze ein Suchformular, dass auf einer Abfrage basiert. Mit Kombiboxen kann ich Kriterien im Suchformular auswählen und mir werden nur noch die ausgewählten Sachen in Form eines Endlosformulars angezeigt. Das funktioniert alles.
Diese gefilterten Datensätze möchte ich nun nach Excel exportieren, wobei ich aber auswählen möchte welche Spalten exportiert werden.
Der allgemeine Export fkt ja auch über eine Access Schaltfläche, die in der auswahlleiste bereits verfügbar ist.
Auch sind im Netz massig Beispiele vorhanden wie man alle gefilterten Spalten exportiert.
Das habe ich auch in VBA geschafft mit folgendem Code:
Private Sub Befehl91_Click()
Const ExcelDateiName = "C:\TEMP\ACCESS Export.xls" ' zu erzeugende Exceldatei
Const tmpAbfrage = "qrytemp" ' Abfrage wird automatisch erzeugt und gelöscht
Dim sSQL As String
Dim qdf As DAO.QueryDef
' Gesamten Formularinhalt exportieren
sSQL = Me.RecordSource
If Len(sSQL) = 0 Then
MsgBox "Keine Datenherkunft"
Exit Sub
End If
Debug.Print sSQL
' evtl. alte Abfrage löschen
On Error Resume Next
DoCmd.DeleteObject acQuery, tmpAbfrage
On Error GoTo 0
Set qdf = CurrentDb.CreateQueryDef(tmpAbfrage, sSQL)
DoCmd.TransferSpreadsheet acExport, 8, tmpAbfrage, ExcelDateiName, True
DoCmd.DeleteObject acQuery, tmpAbfrage
Application.FollowHyperlink "C:\TEMP\ACCESS Export.xls"
End Sub
Um das ganze nun auf bestimmte Spalten zu beschränken, gehe ich davon aus nur den rot markierten Teil ändern zu müssen. Und zwar in die Form:
sSQL = "SELECT * " & _
"FROM " & Me.RecordSource & _
" WHERE " & Me.Filter
Mit SQL kenne ich mich nicht so gut aus. Mein Ansatz nach Forensuche lautet:
sSQL = "SELECT Region, Kategorie, Ausprägung, Wert " & _
"FROM " & Me.RecordSource & _
" WHERE " & Me.Filter
Dabei sind Region, ..., Wert die Felderbezeichnungen in meinem Suchformular.
Bei Ausführen erscheint der Laufzeitfehler '3075!: Syntaxfehler (fehlender Operator) in Abfrageausdruck 'EinheitFROM Abfrage Werte auslesen WHERE! und der Debugger zeigt auf die Zeile im Vba code : Set qdf = CurrentDb.CreateQueryDef(tmpAbfrage, sSQL)
Liegt es nun an der Syntax des sSQL = ... -Ausdrucks oder spreche ich die Spalten "Region, ..., Wert" falsch an? Oder ist es ein ganz anderes Problem ? ::)
Anbei ist auch wieder die Datenbank-Datei
Ohh und ist im falschen Ordner gelandet. Gehört eigentlich zu den Formularen, srry
Hallo Max,
ZitatLiegt es nun an der Syntax des sSQL =
Das kannst du ganz schnell herausfinden indem du dir den String
im Direktfenster (Strg-G) ausgeben lässt:
Debug.Print sSQLLiegt aber wohl eher am Formularbezug
"FROM " & Me.RecordSource Wenn da kein Abfragename sondern auch schon ein SQL-String
drinsteht funzt es so nicht.
gruss ekkehard
Der SQL-String hat (ohne weiteres Zutun) folgenden Inhalt:
SELECT Region, Kategorie, Ausprägung, Wert, EinheitFROM Abfrage Werte auslesen WHERE
=> Leerzeichen vor FROM fehlt
=> unpraktische Bezeichnung der Abfrage, bei Leer- und Sonderzeichen mit eckigen Klammern maskieren oder gleich bessere Bezeichnungen verwenden
=> entweder WHERE weglassen oder Filterausdruck hinzufügen
Ein Listenfeld kann in der Eigenschaft Herkunftstyp den Wert Feldliste enthalten. Wenn dieses Listenfed dann auch noch mit Mehrfachauswahl (siehe gleichnamige Eihenschaft) ausgestattet wird, könnte man sich eine Feldliste für den Export zusammenbasteln und statt des Sterns (*) in den Abfragetext einsetzen.
PS: Du hast viele Baustellen offen, nach wie vor keine ordentlichen Indexe in den Tabellen, Umlaute in den fürchterlich langen Feldnamen, immer noch die überflüssige Jahrestabelle, Leerzeichen in Formular + Abfragenamen.
PS: bitte zukünftig Anhänge im 2003er-Format (wenn keine Features wie Mehrwertfelder o. ä. verwendet werden) hochladen - ich habe sonst ständig Kompatibilitätsmeldungen am Rechner und muss den Kram erst immer reimportieren.
PPS: manchmal ist es geschickter, sich benötigte Daten aus Excel über eine Datenverknüpfung zu holen, statt den umgekehrten Weg zu beschreiten - oder was willst Du mit dem reinen Datenimport in Excel erreichen?!
Nun ja, die Kritik nehme ich natürlich auf.
Und auch existieren zugegeben mehrere Baustellen. Am Wochenende werde ich meinen gesamten gesammelten Fortschritt zusammenpacken und die DB nochmal von Grund auf neu erstellen. In diesem Schritt werde ich die von dir angesprochenen Punkte einbauen.
Datenimport werde ich auch benötigen, auch wenn ich noch nicht weiß wie. Aber von Datenverknüpfungen habe ich schonmal gehört =)
Mir ging es aber hierbei um den Datenexport. Man sucht in der Datenbank, filtert sich die gewollten Datensätze und exportiert sie zur weiteren Verarbeitung in eine Excel Datei. Manche Spalten (z.B. Kontrollkästchen oder unwichtige Spaltendaten) sollen aber nicht mit exportiert werden, insofern meine Frage in diesem Thread hier.