PDA

Vollständige Version anzeigen : dynamische Abfrage in "normalen" Abfragefenster anzeigen lassen


joesen
07.05.2004, 09:34
Hallo zusammen,

folgendes Problem:
ich habe ein Suchformular erstellt, in dem der Benutzer nach bestimmten Feldern und Daten suchen kann.
Nachdem die entsprechenden Felder ausgewählt wurden, wird die SQL-Abfrage automatisch generiert und in eine Variable übergeben.

Bsp:

SQL = "Select " & FeldXY & " From " & Tabelle

danach übergebe ich die Variable in ein Unterformular, zur Anzeige:

Me!FrmUnterform.Form.Recordsource = SQL

Funktioniert prima. Nun möchte ich auch noch die Möglichkeit bieten, dass ganze in einem normalen Abfragefenster ausgeben lassen, damit man sich ggf. die Daten via cut and paste in eine Excelliste kopieren kann.

Nun die eigentliche Frage, wie kann ich mir das ganze in einem normalen Abfrage-Fenster anzeigen lassen???

Kann mir hier jemand helfen??

Danke und Grüsse
Tobias

Arne Dieckmann
07.05.2004, 09:45
Dazu müsste der SQL-String der Abfrage per Code angepasst werden. Suche einmal in der VBA-Hilfe nach Querydef oder warte auf einen netten Teilnehmer, der für Dich einen Link raussucht.

BTW: Dein Vorhaben verstösst gegen das 2. Gebot auf http://www.dbwiki.de/wiki.php?title=Access_Anf%E4nger:_Die_Zehn_Gebote

joesen
07.05.2004, 09:55
danke arne,

jetzt hab ich etwas wonach ich suchen bzw. arbeiten kann.

bzgl. Punkt 2 der 10 Gebote, dieser Link war mir neu aber an einigen anderen Geboten (die ich schon misachtet habe und die mir zum Verhängnis wurden) sehe das es wohl besser ist diesen einzuhalten.

ich werde jetzt vielleicht doch besser versuchen mir die Ausgabe in einem Bericht zu generieren.

Vielleicht kann mir aber auch jemand einen Tipp geben, wie ich die Daten direkt in eine Excelliste exportieren kann. Damit wäre mir auch schon sehr geholfen.
Mein Punkt ist halt, dass ich die Daten gerne danach bearbeiten würde.

Viele Grüsse
Tobias

Fedaykin
07.05.2004, 10:01
Wenn du dein Unter Form in Datenblattansicht anzeigen lässt sollte aus Strg+c und in Excel Strg+v funktionieren.

J_Eilers
07.05.2004, 10:05
Hi,

du kannst eine temporärer Abfrage aus deinem SQL-Code erzeugen und mit dieser Abfrage die Daten nach Excel transferieren (DoCmd.TransferSpreasheet). Mit dem Datenexport nach Excel kenne ich mich nicht so aus, aber bei www.kraasch.de gibt es ein Beispiel AccessToExcel, in dem beschrieben wird, wie es funktioniert.

joesen
07.05.2004, 10:13
danke euch,

das "toExcel" Beispiel in beigefügtem Link sieht echt ganz gut aus.

Leider habe da immer noch das Problem der dynamischen generierung einer solchen Abfrage aber ich hab mir den Quellcode jetzt auch noch nicht näher angesehen (habe nur gesehen, dass mit einer "festen" Abfrage gearbeitet wird) aber vielleicht komm ich ja noch drauf.

danke euch nochmal

Bis dann
Tobias

J_Eilers
07.05.2004, 10:16
Du kannst auch erstmal eine feste Abfrage speichern und die mittels QueryDefs zur Laufzeit verändern:

Dim qdf As DAO.QueryDefs
Dim strSQL As String

strSQL = "SELECT * FROM Tabelle"

Set qdf = CurrentDb.QueryDefs

qdf("Abfrage").SQL = strSQL

Set qdf = Nothing

oliverV
07.05.2004, 10:28
Hallo Tobias,

wenn doch schon ein Auswertungs-UFO existiert und du nur diese Daten in einer Excel-Arbeitsmappe haben möchtest, erstelle im Ufo eine Schaltfläche.

DoCmd.OutputTo acOutputForm, "Formularname", acFormatXLS, "C:\Datenbank\Excel Export\Dateiname.xls", True


Gruß

Oliver

joesen
07.07.2004, 10:52
Hallo zusammen,


wenn ich den Code von J_Eilers eingebe,

Dim qdf As DAO.QueryDefs
Dim strSQL As String

strSQL = "SELECT * FROM Tabelle"

Set qdf = CurrentDb.QueryDefs

qdf("Abfrage").SQL = strSQL

Set qdf = Nothing

erscheint mir der Fehlerhinweis, dass die Methode oder Datenbankobjekt nicht gefunden wurde.
Was muss ich dazu noch eingeben?

Viele Grüsse

Arne Dieckmann
07.07.2004, 10:54
Hast du den Verweis auf DAO aktiviert? S. dazu donkarls FAQ 7.11 (Link in meiner Signatur). Heisst die Abfrage tatsächlich "Abfrage" bzw. liegt diese schon vor?