collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 51
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 1

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14107
  • stats Beiträge insgesamt: 68024
  • stats Themen insgesamt: 9165
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: XML Export von Tabellen via VBA  (Gelesen 141 mal)

Offline sellrich

  • Newbie
  • Beiträge: 15
XML Export von Tabellen via VBA
« am: November 01, 2018, 15:29:40 »
Hallo ihr Lieben,

momentaner Ist-Zustand :
Ich exportiere 3 Tabellen in ein XML-File mit Hilfe von VBA.

Public Sub Export_XML()
Dim objAdditionalData As AdditionalData
Set objAdditionalData = Application.CreateAdditionalData

objAdditionalData.Add "Versanddaten"
objAdditionalData.Add "Positionsdaten"

Application.ExportXML acExportTable, "Auftragskopfdaten", CurrentProject.Path & "\MVP_Export.xml", _
AdditionalData:=objAdditionalData
End Sub

Das konnte ich mit viel Google, bereits genutzte Themen und Handbücher herausfinden.
Jetzt allerdings stoße ich sowohl mit meinen Ideen als auch mit meinen Recherchekünsten am meine Grenzen.

Ich möchte gerne, dass diese Abfrage immer nur einen Datensatz auswählt, exportiert und dann zu dem nächsten Datensatz springt und wieder ein neues XML-File exportiert. Das ganze solange (sprich soviele XML´s ausgeben) wie Datensätze in der Tabelle vorhanden sind.
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1392
Re: XML Export von Tabellen via VBA
« Antwort #1 am: November 01, 2018, 15:49:01 »
Eine Parameterabfrage lässt sich mittels Funktion (siehe FAQ 3.15) oder ab Access-Version 2010 mittels DoCmd.SetParameter() in einer Schleife filtern. In dieser Schleife fütterst Du die Parameter aus einem vorher über Deine Tabelle geöffneten Recordset. Zusätzlich musst Du Dir etwas zu den Dateinamen einfallen lassen, die ja alle anders lauten müssten, wenn die Geschichte Sinn ergeben soll.
Grüße von der (⌒▽⌒)
 

Offline sellrich

  • Newbie
  • Beiträge: 15
Re: XML Export von Tabellen via VBA
« Antwort #2 am: November 05, 2018, 09:07:34 »
Hallo,

danke für die schnelle Antwort!

Zitat
Zusätzlich musst Du Dir etwas zu den Dateinamen einfallen lassen, die ja alle anders lauten müssten, wenn die Geschichte Sinn ergeben soll.

Das ist kein Problem. Der Dateiname wird mit ner Kundennummer + Uhrzeit/Datum versehen, damit jeder Export einzigartig ist.


Allerdings bin ich extremer Neueinsteiger und habe leider wenig Ahnung von Recordsets oder Parameterabfragen. Auch nach einigen Stunden Googlen mit deinen Schlüsselwörtern kam ich nicht weiter.
« Letzte Änderung: November 05, 2018, 09:14:12 von sellrich »
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1392
Re: XML Export von Tabellen via VBA
« Antwort #3 am: November 05, 2018, 10:08:53 »
Hi,

hier ist ein mögliches Schema, um die Sache zu bewältigen:

'Statt die Tabelle 'Auftragskopfdaten' direkt zu verwenden, legst
'Du eine Auswahlabfrage über die 'Auftragskopfdaten' an, in der
'das Schüsselfeld als Bedingung mit einem Parameter in Form einer
'Funktion versehen ist.
'
'siehe. http://www.donkarl.com/FAQ/FAQ3TAbfragen.htm#3.15
'
'in einem globalen VBA-Modul:
Public pAkdId As Variant

Public Function GetAuftragsKopfDatenId()
   GetAuftragsKopfDatenId = pAKD_ID
End Function

'Annahme für den Schlüsselfeldnamen: akd_id <= Namen anpasesn
'als Parameter verwende ich eine globale Funktion, die sich den
'Rückgabewert aus einer globalen Variablen (pAkdId) zieht.
'
'eine Abfrage 'qryAuftragsKopfDaten' könnte dann so aussehen
'
'SELECT a.*
'FROM   Auftragskopfdaten AS a
'WHERE  a.akd_id = GetAuftragsKopfDatenId()
'
Public Sub Export_XML()
   'nur das Schlüsselfeld in Auftragskopfdaten auswählen
   Const QRY As String = "SELECT akd_id FROM Auftragskopfdaten"

   Dim ExportPath As String
   Dim ad         As AdditionalData

   ExportPath = CurrentProject.Path & "\" & Format$(Now(), "yyyymmddhhnnss_")

   Set ad = CreateAdditionalData
   ad.Add "Versanddaten"
   ad.Add "Positionsdaten"

   'ein Recordset über die Abfrage in QRY erzeugen
   With DBEngine(0)(0).OpenRecordset(QRY, dbOpenSnapshot)
      'bis das Ende des Recordsets erreicht ist
      Do Until EOF
         'die Variable befüllen
         pAKD_ID = !akd_id

         ExportXML acExportTable, "qryAuftragskopfdaten", _
                   ExportPath & !akd_id & ".xml", _
                   AdditionalData:=objAdditionalData
         'zum nächsten Datensatz gehen
         .MoveNext
      Loop
      'Recordset schließen
      .Close
   End With
End Sub
Grüße von der (⌒▽⌒)
 

Offline sellrich

  • Newbie
  • Beiträge: 15
Re: XML Export von Tabellen via VBA
« Antwort #4 am: November 05, 2018, 13:53:39 »
Vielen Dank soweit ! Die Abfrage habe ich zum Laufen bekommen. Kann es sein das hier :
Zitat
'siehe. http://www.donkarl.com/FAQ/FAQ3TAbfragen.htm#3.15
'
'in einem globalen VBA-Modul:
Public pAkdId As Variant

Public Function GetAuftragsKopfDatenId()
   GetAuftragsKopfDatenId = pAKD_ID
End Function

Public pAkdId eigentlich pAkD_ID sein soll?

Des Weiteren bekomme ich bei der Durchführung von Code Nr. 2 (Public Sub Export_XML() )folgendes angezeigt :
"Fehler beim Kompilieren:
Argument ist nicht optional"
Der Fehler taucht direkt beim ausführen aus. Auch bei Einzelschritten beim ersten F8 kommt der Fehler.

Hab es erst mit umbenennen versucht- o.g Fehler.
Dann habe ich habe meine Tabelle entsprechend den Namen in der Abfrage angepasst. Ebenfalls der gleiche Fehler.

Code :
Public Sub Export_XML()
   Const QRY As String = "SELECT akd_id FROM Auftragskopfdaten"

   Dim ExportPath As String
   Dim ad         As AdditionalData

   ExportPath = CurrentProject.Path & "\" & Format$(Now(), "yyyymmddhhnnss_")

   Set ad = CreateAdditionalData
   ad.Add "Versanddaten"
   ad.Add "Positionsdaten"

   With DBEngine(0)(0).OpenRecordset(QRY, dbOpenSnapshot)
      'bis das Ende des Recordsets erreicht ist
      Do Until EOF
         'die Variable befüllen
         pAkD_ID = !akd_id

         ExportXML acExportTable, "qryAuftragskopfdaten", _
                   ExportPath & !akd_id & ".xml", _
                   AdditionalData:=objAdditionalData
         .MoveNext
      Loop
      .Close
   End With
End Sub

« Letzte Änderung: November 05, 2018, 13:58:13 von sellrich »
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1935
Re: XML Export von Tabellen via VBA
« Antwort #5 am: November 05, 2018, 14:14:03 »
@sellrich
Zitat
Public pAkdId eigentlich pAkD_ID sein soll?
Ja, das stimmt; - nur ein Tippfehler.

Zur Fehlermeldung:
Du musst der Methode natürlich das Objekt übergeben nicht den Namen
des Parameters
                   AdditionalData:=ad
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1392
Re: XML Export von Tabellen via VBA
« Antwort #6 am: November 05, 2018, 14:34:25 »
Da habe ich heute Morgen etwas geschludert - aber Ekkehard hat die Sache ja ins rechte Licht gerückt.
Grüße von der (⌒▽⌒)
 

Offline sellrich

  • Newbie
  • Beiträge: 15
Re: XML Export von Tabellen via VBA
« Antwort #7 am: November 05, 2018, 14:55:40 »
@beaker s.a. vielen Dank.

Du meinst sicherlich diesen Teil
         ExportXML acExportTable, "qryAuftragskopfdaten", _
                   ExportPath & !akd_id & ".xml", _
                   AdditionalData:=ad

Habe ich geändert zu "ad" allerdings ohne Erfolg.
Fehlermeldung bleibt die gleiche.
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1392
Re: XML Export von Tabellen via VBA
« Antwort #8 am: November 05, 2018, 14:59:11 »
Hier habe ich auch noch einen Punkt unterschlagen. >:(
Do Until .EOF
Grüße von der (⌒▽⌒)
 

Offline sellrich

  • Newbie
  • Beiträge: 15
Re: XML Export von Tabellen via VBA
« Antwort #9 am: November 05, 2018, 15:07:28 »
Leute vielen lieben Dank für die Hilfe!

Zitat
Hier habe ich auch noch einen Punkt unterschlagen. >:(
Do Until .EOF

Danke dir! Wäre ich nicht so ein Anfänger, hätte ich selber erkennen müssen, dass da ein Punkt fehlt.


         ExportXML acExportQuery, "qryAuftragskopfdaten", _
                   ExportPath & !akd_id & ".xml", _
                   AdditionalData:=ad

Was ich aber herausgefunden habe ist, dass das acExportQuery stehen muss, statt Table. Da ich ja die Abfrage ausgeben möchte. Richtig?
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1392
Re: XML Export von Tabellen via VBA
« Antwort #10 am: November 05, 2018, 15:38:33 »
Da wirst Du Recht haben. :)
Grüße von der (⌒▽⌒)
 

Offline sellrich

  • Newbie
  • Beiträge: 15
Re: XML Export von Tabellen via VBA
« Antwort #11 am: November 06, 2018, 08:44:45 »
Guten Morgen liebe Helfer,

ich weiß, dass gehört vermutlich nicht in ein Access Forum. Aber ihr seid alle so Fit und antwortet so zügig, ich dachte ich versuch mal mein Glück.

Die oben exportierten XML-Files müssten alle um jeweils eine oberste und eine unterste Zeile erweitert werden. Automatisiert.
<order>
"Inhalt"
</order>
Kann man das beim erstellen/exportieren des XML-Files irgendwie verwirklichen? 
Ich bin was XML´s angeht noch weniger im Bilde als VBA.  :-X
 

 

Tabellen vergleichen

Begonnen von ***SnEaKeR***Board Tabelle/Abfrage

Antworten: 14
Aufrufe: 13147
Letzter Beitrag Juli 04, 2012, 09:54:23
von 69bruno
Abfrage aus mehreren Tabellen generieren - Abteilungsbezogen

Begonnen von lenkyBoard Tabelle/Abfrage

Antworten: 16
Aufrufe: 11052
Letzter Beitrag Mai 24, 2010, 09:58:54
von database
Spezielle Abfrage aus 4 Tabellen -H I L F E E (Access 2007)

Begonnen von onkelcrackerBoard Tabelle/Abfrage

Antworten: 18
Aufrufe: 9297
Letzter Beitrag Mai 26, 2010, 17:45:46
von onkelcracker
Abfrage mit 2 Tabellen IS NULL funktioniert nicht

Begonnen von hmfmartinBoard Tabelle/Abfrage

Antworten: 1
Aufrufe: 3177
Letzter Beitrag Mai 25, 2010, 13:17:52
von database
JOIN Abfrage verschachtel mit mehreren Tabellen

Begonnen von hmfmartinBoard Tabelle/Abfrage

Antworten: 5
Aufrufe: 5445
Letzter Beitrag Mai 28, 2010, 14:10:03
von hmfmartin