rala11
Goto Top

Access VBA gefilterter Bericht in XML-Datei exportieren

Hallo VBA'ler,

irgendwie tauchen die Probleme immer da auf, wo man sie nicht erwartet.
Bestimmt kann mir aber jemand von Euch helfen.

Folgendes Szenario:

Ich habe in meiner Datenbank ein Formular. Mit den Eingabewerten im Formular wird ein Bericht entsprechend gefiltert.
Ich habe nun vor mir den gefilterten Bericht, welchen ich jetzt über die Menüleiste EXTERNE DATEN - XML-DATEI exportiere.
Nun habe ich eine XML-Datei nur mit den gefilterten Daten. Soweit alles wunderbar.

Jetzt möchte ich aber den Export nicht manuell sondern per Code steuern, und das ist nun auch das Problem.
Ich habe es mit der ExportXML-Methode probiert. Das geht zwar, dann nimmt er aber alle Datensätze mit in die Datei.
Habe es dann versucht einzugrenzen mit der Übergabe von Kriterien an WhereCondition, krieg ich aber auch nicht hin.

Abschließend nochmal die Frage:
Wie bekomme ich per VBA nur die gefilterten Datensätze des Berichts in meine XML-Datei.

Gruß Rala11

Content-Key: 214997

Url: https://administrator.de/contentid/214997

Printed on: April 19, 2024 at 00:04 o'clock

Member: colinardo
colinardo Aug 23, 2013 updated at 06:39:33 (UTC)
Goto Top
Hallo Rala11, Willkommen im Forum!
Dies erreichst du folgendermaßen:
Bei diesem Beispiel existiert in dem Bericht ein Datenfeld namens PLZ, wobei mit diesem Filter hier alle Einträge selektiert werden bei denen die PLZ mit 2 anfängt. Diesen Filter musst du natürlich an deine Gegebenheiten anpassen.
In der Variablen XMLAUSGABE wird der Ausgabepfad für die XML-Datei festgelegt. In der Variablen MEINREPORTNAME gibst du den Namen deines Berichts an.
MEINREPORTNAME = "Kundenbericht"  
REPORTFILTER = "[PLZ] like '2*'"  
XMLAUSGABE = "E:\mydata.xml"  

'Öffne den gefilterten Bericht    
DoCmd.OpenReport REPORTNAME:=MEINREPORTNAME, View:=acViewReport, WhereCondition:=REPORTFILTER

'Rufe die Export-Funktion auf um den Bericht als XML zu exportieren  
Application.ExportXML ObjectType:=acExportReport, DataSource:="Kundenbericht", DataTarget:=XMLAUSGABE  

'Zur Demo eine Meldung anzeigen wenn der Export fertig ist.  
msgbox "Export ist erfolgt! Zu finden unter '" & XMLAUSGABE & "'"  

'Wenn benötigt folgende Zeile auskommentieren. Damit kann der Bericht gleich wieder geschlossen werden  
'DoCmd.Close acReport, REPORTNAME  
Wenn du Probleme mit dem Filter hast, frage einfach nochmal welche Filterung du erreichen willst dann helfe ich Dir dabei diesen zusammenzusetzen. Diesen kann man ja auch aus Daten die in einem Formular eingegeben wurden zusammensetzen.

Grüße Uwe
Member: Rala11
Rala11 Aug 23, 2013 at 07:47:37 (UTC)
Goto Top
Hallo Uwe,
Danke für Deine schnelle Antwort.
Genau der Filter ist auch das Problem. Die Filterkriterien wurden ja schon im Formular eingeben und sind auch etwas umfangreicher:

[Kundennummer]: von - bis
[Datum]: von - bis
[Auftrag-Nr]: von - bis

Gibt es eine Möglichkeit die im Formular eingegebenen Kriterien "abzugreifen" und wie hier im Bsp. an REPORTFILTER zu übergeben?

Gruß Rala11
Member: colinardo
colinardo Aug 23, 2013 updated at 08:11:08 (UTC)
Goto Top
Zitat von @Rala11:
Gibt es eine Möglichkeit die im Formular eingegebenen Kriterien "abzugreifen" und wie hier im Bsp. an REPORTFILTER
zu übergeben?
klar geht das, dazu greifst du im Code auf die Felder im Formular zu und baust damit den Filter zusammen.

Ein Beispiel. Die Felder wie "Me.AuftragsNummerVON.Value etc. sind die Feldnamen in deinem Formular und musst du an deine Umgebung anpassen.
Ich gehe jetzt davon aus das der Code in dem entsprechenden Formular platziert wird.
REPORTFILTER = "([Datum] BETWEEN #" & Me.datumVON & "# AND #" & Me.DatumBIS & "#) AND ([Auftrag-Nr] BETWEEN " & Me.AuftragsNummerVON.Value & " AND " & Me.AuftragsNummerBIS.Value & ") AND([Kundennummer] BETWEEN " & Me.KundennummerVON.Value & " AND " & Me.KundennummerBIS.Value & ")"  
Dazu gibt es folgendes zu beachten: Beim angeben von einem Datum muss dieses immer mit einer "#" umschlossen werden. Ich gehe jetzt mal davon aus das deine Kundennummern und Auftragsnummern wirklich nur aus Zahlen bestehen, denn ansonsten geht obiges Beispiel nicht, dann müsste man es noch weiter anpassen. Und bei String-Vergleichen sollten die Strings mit einfachen Hochkommas umschlossen sein.

Grüße Uwe
Member: Rala11
Rala11 Aug 23, 2013 at 13:00:18 (UTC)
Goto Top
Hallo Uwe,
habe es hinbekommen!

Vielen Dank für Deine Hilfe.