Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Access 2000 TransferSpreadsheet Parameter Filter

216 views
Skip to first unread message

Raimund Gryszik

unread,
Mar 29, 2010, 5:40:01 AM3/29/10
to
Hallo Experten!

Vermutlich gibt es für mein Problem eine simple Lösung, nur finde ich sie
nicht:

Eine gespeicherte Abfrage soll als Excel-Tabelle ausgegeben werden. Dazu
muss die Abfrage gefiltert werden. Z.B. sollen nur Datensätze exportiert
werden, wo die Spalte "Jahr" den Wert "2009" hat.

Folgendes geht leider nicht (Fehlermeldung Laufzeitfehler 2491, Die Aktion
oder Methode ist nicht zulässig, da das Formular bzw. der Bericht nicht an
eine Tabelle oder Abfrage gebunden ist)

DoCmd.ApplyFilter "MeineAbfrage", "Jahr = '2009'"

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "MeineAbfrage",
"Datei", True

Folgendes bringt keine Filterwirkung (es werden stattdessen sämtliche
Datensätze exportiert)

DoCmd.OpenQuery "MeineAbfrage", acViewNormal, acReadOnly
DoCmd.ApplyFilter "MeineAbfrage", "Jahr = '2009'"

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "MeineAbfrage",
"Datei", True

DoCmd.Close acQuery, "MeineAbfrage"

Was könnte ich stattdessen tun? Der User soll nur auf einen Formularknopf
klicken, der Export soll dann vollautomatisch stattfinden. Die nötigen
Parameter sind natürlich veränderlich und sollen bei jedem Aufruf errechnet
werden.

Danke für Tipps

Raimund Gryszik, Berlin

Thomas Möller

unread,
Mar 29, 2010, 5:54:44 AM3/29/10
to
Hallo Raimund,

Am 29.03.2010 11:40, schrieb Raimund Gryszik:
> Eine gespeicherte Abfrage soll als Excel-Tabelle ausgegeben werden. Dazu
> muss die Abfrage gefiltert werden. Z.B. sollen nur Datensätze exportiert
> werden, wo die Spalte "Jahr" den Wert "2009" hat.
>
> Folgendes geht leider nicht (Fehlermeldung Laufzeitfehler 2491, Die Aktion
> oder Methode ist nicht zulässig, da das Formular bzw. der Bericht nicht an
> eine Tabelle oder Abfrage gebunden ist)
>
> DoCmd.ApplyFilter "MeineAbfrage", "Jahr = '2009'"
>
> DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "MeineAbfrage",
> "Datei", True
>
> Folgendes bringt keine Filterwirkung (es werden stattdessen sämtliche
> Datensätze exportiert)
>
> DoCmd.OpenQuery "MeineAbfrage", acViewNormal, acReadOnly
> DoCmd.ApplyFilter "MeineAbfrage", "Jahr = '2009'"
>
> DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "MeineAbfrage",
> "Datei", True
>
> DoCmd.Close acQuery, "MeineAbfrage"
>
> Was könnte ich stattdessen tun? Der User soll nur auf einen Formularknopf
> klicken, der Export soll dann vollautomatisch stattfinden. Die nötigen
> Parameter sind natürlich veränderlich und sollen bei jedem Aufruf errechnet
> werden.

Du könntest eine weitere Abfrage für den Export verwenden. Vor dem
Export änderst Du entsprechend den SQL-String der Abfrage und baust So
Dein Filterkriterium mit ein:

Dim strSQL As String

strSQL = "SELECT * FROM DeineBisherigeAbfrage " & &
"WHERE Jahr = '2009'"

CurrentDb.QueryDefs("DeineNeueAbfrage".SQL = strSQL

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
"DeineNeueAbfrage", "Datei", True


BTW: "Jahr" ist ein schlechter Name für ein Feld. Jahr ist ein in Access
reserviertes Wort. Weitere Infos findest Du hier:
www.donkarl.com?FAQ1.5
(Link in einer Zeile)

HTH
--
Thomas

Homepage: www.Team-Moeller.de

Karl Donaubauer

unread,
Mar 29, 2010, 6:35:33 AM3/29/10
to
Raimund Gryszik wrote:
> ...

> Eine gespeicherte Abfrage soll als Excel-Tabelle ausgegeben werden.
> Dazu muss die Abfrage gefiltert werden. Z.B. sollen nur Datensätze
> exportiert werden, wo die Spalte "Jahr" den Wert "2009" hat.
> ...

> DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9,
> "MeineAbfrage", "Datei", True
> ...

> Was könnte ich stattdessen tun? Der User soll nur auf einen
> Formularknopf klicken, der Export soll dann vollautomatisch
> stattfinden. Die nötigen Parameter sind natürlich veränderlich und
> sollen bei jedem Aufruf errechnet werden.

Du verrätst zwar nicht, wo und wie die Parameterwerte
"errechnet werden", aber irgendwie bekommst du sie ja
wohl in den Code. Daher:

Du könntest die Werte in Textfelder auf dem Formular schicken
(müssen nicht sichtbar sein) und in der Abfrage Bezüge auf die
Textfelder als Kriterium verwenden.

Oder du hast deine Werte in Variablen und übergibst sie per
Funktion an die Abfrage. s. www.donkarl.com?FAQ3.15

--
Servus
Karl
****************
Access-FAQ: http://www.donkarl.com


Raimund Gryszik

unread,
Mar 29, 2010, 7:09:01 AM3/29/10
to
Hallo Thomas,

vielen herzlichen Dank. Das ist GENAU die Masche, die ich gesucht hatte.

Danke

Raimund

Raimund Gryszik

unread,
Mar 29, 2010, 7:15:01 AM3/29/10
to
Hallo Karl,

vielen Dank. Das ist auch eine sehr gute Idee. Mal sehen, welche Methode ich
anwenden werde.

Danke

Raimund

0 new messages