Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Auf Knopfdruck Textexport aktueller Datensatz

Begonnen von Micharius, August 30, 2017, 09:29:07

⏪ vorheriges - nächstes ⏩

Micharius

Hallo zusammen

Nach dem Ratschlag von Lachtaube aus Beitrag http://www.access-o-mania.de/forum/index.php?topic=22516.msg131605#msg131605 und der Einsicht, dass Word tatsächlich auch ohne Änderungen in Access bei Seriendrucken blocken kann, habe ich nun eine andere Lösung umgesetzt.
Aus einem Formular wird per Klick auf einen Button eine Abfrage als Textfile exportiert:

Private Sub Befehl896_Click()
DoCmd.TransferText acExportDelim, , "qryProAngebot", "C:\IT\Access\export_angebot.csv", True
MsgBox "Daten wurden exportiert"
End Sub


Das klappt super, die Worddatei greift bei jedem Benutzer auf die CSV zu, kein blockieren mehr. Als Sahnehäubchen wäre es natürlich toll, wenn nicht immer die ganze Abfrage und somit alle Datensätze exportiert würden, sondern nur derjenige Datensatz, welcher im Formular gerade aktiv ist. Das verwendete Formular basiert zwar auf einer anderen Abfrage, das Feld ProID kommt aber in beiden Abfragen vor und liesse sich zur Identifikation des Datensatz verwenden.

Kann man den Code entsprechend anpassen, oder ist das sehr kompliziert? Über einen Tipp würde ich mich freuen.

Sonnige Grüsse

Micharius

Beaker s.a.

Musst halt die Abfrage entsprechend filtern.
... WHERE KundenNr = Forms!DeinFormular!KundenNr ...
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Micharius

Besten Dank für die rasche Frage. Jedoch blöde Frage, wo im Code müsste ich den Filter setzen - etwa so?

Private Sub Befehl896_Click()
DoCmd.TransferText acExportDelim, , "qryProAngebot WHERE KundenNr = Forms!DeinFormular!KundenNr", "C:\IT\Access\export_angebot.csv", True
MsgBox "Daten wurden exportiert"
End Sub


Gruss

Micharius

Beaker s.a.

Hallo Micharius,
ZitatMusst halt die Abfrage entsprechend filtern.
Soll heissen, dass du die Abfrage "qryProAngebot" als solche ändern musst.
D.h. du musst die WHERE-Klausel darin aufnehmen.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Lachtaube

Einen Formular-Parameter müsstest Du in der Abfrage fest verdrahten. Bei nicht geöffnetem Formular bzw. bei fehlender KundenNr würden dann wieder alle Datensätze ausgegeben werden. Ist das nicht erwünscht, Text ab OR... löschen.
SELECT FeldA, FeldB, ...
FROM   TabellenName
WHERE  KundenNr = Forms!DeinFormularName!KundenNrFeldname OR
       Forms!DeinFormularName!KundenNrFeldname Is Null;
Grüße von der (⌒▽⌒)

Micharius

Sehr cool, Lachtaube - genau so klappt es - vielen herzlichen Dank!
Ich war natürlich wieder einmal auf dem falschen Dampfer. Dachte, ich müsste das im Formular bzw. Code selber definieren, statt in der zugrunde liegenden Abfrage...

Lachtaube

ekkehard gebührt der Dank, denn er hat darauf hingewiesen - ich habe nur seinen Vorschlag erläutert. :)
Grüße von der (⌒▽⌒)