Hallo zusammen
Nach dem Ratschlag von Lachtaube aus Beitrag http://www.access-o-mania.de/forum/index.php?topic=22516.msg131605#msg131605 (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
Musst halt die Abfrage entsprechend filtern.
... WHERE KundenNr = Forms!DeinFormular!KundenNr ...
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
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
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;
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...
ekkehard gebührt der Dank, denn er hat darauf hingewiesen - ich habe nur seinen Vorschlag erläutert. :)