Hilfe bei Datenbank und Export benötigt!
Wahrscheinlich ist es nur ein kleines Problem, dennoch brauch ich eure Hilfe:
Ich habe in Access eine Abfrage (5 Spalten, erste Spalte "ID") erstellt, die 4 weitere Datenspalten aus unterschiedlichen Tabellen über die Spalte "ID" verknüpft. Mit Hilfe eines Formulars lasse ich über ein Kombinationsfeld die Daten aus der Spalte "ID" (z.B. ID-Nr. 1-20 etc.) anzeigen.
Nun soll man im Formular einen Datensatz auswählen können (z.B. ID=5) und die dazugehörige Zeile (mit den restlichen 4 Spalten) soll automatisch in eine neue Exceltabelle exportiert werden. Ich habe schon ein Makro "AusgabeIn" erstellt, damit exportiere ich zur Zeit leider nur die ganze Abfrage... Ich bräuchte also vorher einen Filter/Suche/Bedingung für die Daten, oder?
Wie geht das? Vielen Dank im voraus für eure Hilfe!
Antwort schreiben
Antwort 1 von lleopard vom 25.09.2019, 14:15 Options
hi Sven,
wenn du in einem Listenfeld eine Query oder Tabelle nutzt, dann nutze doch diese Quelle für den Export, indem du einfach eine Where Bedingung einfügst.
Die ID liest du aus mit einer Variablen:
dim idnr as integer
idnr = listenfeld.column(0)
oder bei einem Kombinationsfeld
idnr = Kombinationsfeld.value
und dann
dim ssql as string
ssql = "Select * From Abfrage Where Id=" & idnr
Das wäre also die quelle, die du nun nutzen kannst, um eine Exportquery zu erzeugen (CreateQueryDef) und die du dann exportierst.
Gruß leo
PS: Hie rmal n Beispiel, das du natürlich anpassen mußt:
Function ExportDaten()
On Error Resume Next
Dim idnr As Integer
Dim ssql As String
Dim dbs As DAO.Database
idnr = 5
ssql = "Select * From dbo_Artikel Where Tabelle.Id=" & idnr
Set dbs = CurrentDb
dbs.QueryDefs.Delete "Export"
dbs.CreateQueryDef "Export", ssql
dbs.QueryDefs.Refresh
Set dbs = Nothing
'und ab hier nun die AusgabeIn - Aktion für den Export nach Excel....
End Function
Antwort 2 von SvenHa23 vom 26.09.2019, 17:25 Options
Also leider versteh ich nur Bahnhof... :)
dieser Teil ist klar, hier wird eine temporäre Abfrage "Export" erstellt...
Set dbs = CurrentDb
dbs.QueryDefs.Delete "Export"
dbs.CreateQueryDef "Export", ssql
dbs.QueryDefs.Refresh
Set dbs = Nothing
Den ersten Teil versteh ich leider nur bedingt:
Probleme:
1. Dim idnr As Integer --> idnr=Spaltenbezeichnung?
2. Dim dbs As DAO.Database --> ?
3. idnr = 5 --> müsste hier die Bezeichnung des Kombinationsfeldes stehen? Warum steht oben "Kombinationsfeld.value", was hat das "value" zu bedeuten?
4. ssql = "Select * From dbo_Artikel Where Tabelle.Id=" & idnr --> mhhh...?
Meine Abfrage heisst: Abfrage_01, mein Formular heisst Formular_01.
Könnte mir jmd weiterhelfen, indem meine Bezeichnungen an der richtigen Stelle eingebaut werden?! Vielen Dank!
Antwort 3 von lleopard vom 27.09.2019, 08:15 Options
moin Sven,
hab ich ein wenig Verwirrung gestiftet? ;-)
also
1. Dim idnr As Integer --> idnr=Spaltenbezeichnung?
Nein! Mit Dim erzeugt man Variablen mit verschiedenen formaten. idnr ist hier also ein Integerwert. Was das ist, verrät dir die Access - Hilfe, die du gerne mal bemühen darfst.
2. Dim dbs As DAO.Database --> ?
dbs wird als ein DAO-Object deklariert und steht hier stellvertretend für die aktuelle Datenbank, wenn man den Verweis durch Set dbs = CurrentDB darauf setzt. Man kann auch jede andere Datenbank über das workspace-Objekt hier ansprechen.
3. idnr = 5 --> müsste hier die Bezeichnung des Kombinationsfeldes stehen? Warum steht oben "Kombinationsfeld.value", was hat das "value" zu bedeuten?
idnr = 5 war nur ein Beispiel. du mußt natürlich den Wert aus deinem Kombinationsfeld oder Listenfeld hinterlegen, damit die Abfrage einen Sinn ergibt. Und genau das - nämlich Wert - bedeutet value. Kombinationsfeld.Value spricht den gerade angezeigten Wert eines Formularfeldes an.
4. ssql = "Select * From dbo_Artikel Where Tabelle.Id=" & idnr --> mhhh...?
Das ist wiederum ein Statement, um dem CreateQuery zu sagen, mit welchem SQL-Parameter wir arbeiten...
Also alles in allem sind das Anfängerfragen, die man wunderbar versteht, wenn man sich der Access-Hilfe bedient. Ein bisschen mehr Mühe geben, beim verstehen der Antworten...dann macht es auch mehr Spaß damit zu arbeiten!
Gruß Leo
Antwort 4 von SvenHa23 vom 28.09.2019, 10:49 Options
Vielen Dank für Deine Antwort. Klar, als Abfragungsnovize stellt man unmögliche Fragen :) Nun hats aber geklappt und das gewünschte Ergebnis ist vorhanden.
Nochmals vielen Dank für die kleine Einführung.. :)