PDA

Vollständige Version anzeigen : Query als TXT speichern und Abfragedatum zum Dateinamen hinzufügen


peter55
04.06.2012, 12:27
Moin zusammen,

mit ein paar Wehen und toller Unterstützung hier im Forum, habe ich es hinbekommen, dass ich ein Query, so wie ich es gebrauchen kann, als Textdatei ausgebe. Ich möchte nun das Abfragedatum dem Dateinamen anfügen. Mit dem Tagesdatum klappt es bereits. Für die Datei, die ich mit dem Datum von heute erstelle, ist das OK. Wenn ich aber nachträglich eine Abfrage erstelle, dann muss ich das Datum von Hand editieren. Wäre natürlich schön, wenn diese Fehlerquelle entfallen könnte.


Dim stDocName As String
stDocName = "qry_Rechnungsdatei"
DoCmd.TransferText acExportDelim, "Qry_Rechnungsdatei_Exportspezifikation", stDocName, "\\GS103\lexware_premium\Rechnungsdateien\Rechnungsdatei_" & Format(Date, "dd_mm_yyyy") & ".txt", True


Das ist der Code für das Speichern.


SELECT RECHNUNGSAUSGANGSBUCH.Rechnungsdatum, RECHNUNGSAUSGANGSBUCH.Rechnungsnr, [Auftragsgesamtsumme]*1.19 AS Rechnung_Brutto, RECHNUNGSAUSGANGSBUCH.DEBITORNR, RECHNUNGSAUSGANGSBUCH.KZSTEUER, IIf([KZSTEUER]=-1,"8400","8200") AS Gegenkonto, "Ausgangsrechnung" AS Buchungstext, RECHNUNGSAUSGANGSBUCH.LIEFERWERK, RECHNUNGSAUSGANGSBUCH.Skontotage, RECHNUNGSAUSGANGSBUCH.Skontoprozent
FROM RECHNUNGSAUSGANGSBUCH
WHERE (((RECHNUNGSAUSGANGSBUCH.Rechnungsdatum)=[von welchem Datum ?]))
ORDER BY RECHNUNGSAUSGANGSBUCH.Rechnungsdatum, RECHNUNGSAUSGANGSBUCH.Rechnungsnr;


Das ist die Abfrage. Kann man das Ergebnis dieser Abfrage irgendwie in den Vorgang des Speicherns transportieren?

Micha_DU
04.06.2012, 12:35
Hi,

[von welchem Datum ?] das könnte man über eine Input-Box abfragen bzw. die Input-Box einer Variablen zuweisen.
Die steht dir dann sowohl für die SQL-Anweisung zur Verfügung als auch für das speichern an sich.

Die SQL der Abfrage müsstest du in dem Fall dann per VBA dynamisch erzeugen.

peter55
04.06.2012, 18:12
Moin,

ist das Feld, das aufgeht und das Datum für die Abfrage abfragt nicht schon eine input box? Wenn ja, wie kann ich die Daten dann weiterbenutzen?

Micha_DU
04.06.2012, 19:53
ist das Feld, das aufgeht und das Datum für die Abfrage abfragt nicht schon eine input box

das ist eher eine Parameterabfrage...

Marsu65
04.06.2012, 20:18
Hallo Peter,

ich schrieb dir schon in dem anderen Thema (warum hast du dort nicht weitergemacht?), dass ein Formular mit Eingabefeld für das Datum die Lösung wäre.

peter55
04.06.2012, 21:36
Moin,

ja, was ist dann eine input box, bzw. wie kann ich die einrichten?
Ich würde mich da gerne rantasten. Kannst Du mir bitte einen Tip geben, damit ich in die richtige Richtung komme? Tante Google hat mich im Moment mehr verwirrt, denn brauchbare Hinweise zu liefern.
Danke

ebs17
04.06.2012, 22:26
Folgender Ablauf aus der geschilderten Situation wäre denkbar:
1) Du legst Dir eine gespeicherte Abfrage mit Namen qryExportRechnung an (Inhalt ist Wurscht).
2) Du hast in einem Formular ein Eingabefeld txtDatum für das Datum (gerne auch mit Befüllung über ein Kalender-PopUp) - Formatierung mit Datum, kurz.
Außerdem hast Du einen Button cmdExport, mit dem Du den Vorgang startest:
Private Sub cmdExport_Click()

Const csSQL1 = "SELECT Rechnungsdatum, Rechnungsnr," & _
" Auftragsgesamtsumme*1.19 AS Rechnung_Brutto, DEBITORNR, KZSTEUER," & _
" IIf(KZSTEUER=-1,'8400','8200') AS Gegenkonto, 'Ausgangsrechnung' AS Buchungstext," & _
" LIEFERWERK, Skontotage, Skontoprozent FROM RECHNUNGSAUSGANGSBUCH"
Const csSQL2 = " ORDER BY Rechnungsdatum, Rechnungsnr;"

CurrentDb.QueryDefs("qryExportRechnung").SQL = csSQL1 & _
" WHERE Rechnungsdatum=" & Format(Me.txtDatum, "\#yyyy\-mm\-dd\#" & csSQL2

DoCmd.TransferText acExportDelim, "Qry_Rechnungsdatei_Exportspezifikation", "qryExportRechnung", _
"\\GS103\lexware_premium\Rechnungsdateien\Rechnungsdatei_" & _
Format(Date, "dd_mm_yyyy") & ".txt", True

End Sub

Marsu65
04.06.2012, 23:31
Hallo Peter,
du hast doch sicher schon ein Formular mit einer Schaltfläche (Button), die den oben gezeigten Kode ausführt.

Dort fügst du im Entwurf eine Textbox ein. Format: Datum, kurz

Dann brauchst du das Kriterium deiner Abfrage nur noch auf das Textfeld einzustellen.

SELECT RECHNUNGSAUSGANGSBUCH.Rechnungsdatum ,
RECHNUNGSAUSGANGSBUCH.Rechnungsnr ,
[Auftragsgesamtsumme]*1.19 AS Rechnung_Brutto ,
RECHNUNGSAUSGANGSBUCH.DEBITORNR ,
RECHNUNGSAUSGANGSBUCH.KZSTEUER ,
IIf([KZSTEUER]=-1,"8400","8200") AS Gegenkonto ,
"Ausgangsrechnung" AS Buchungstext,
RECHNUNGSAUSGANGSBUCH.LIEFERWERK ,
RECHNUNGSAUSGANGSBUCH.Skontotage ,
RECHNUNGSAUSGANGSBUCH.Skontoprozent
FROM RECHNUNGSAUSGANGSBUCH
WHERE RECHNUNGSAUSGANGSBUCH.Rechnungsdatum =[Forms]![DeinFormularname]![DeinTextfeldname]
ORDER BY RECHNUNGSAUSGANGSBUCH.Rechnungsdatum,
RECHNUNGSAUSGANGSBUCH.Rechnungsnr;

Und du kannst, wie Eberhard schon gezeigt hat, das Datum aus der Textbox zum speichern verwenden:

DoCmd.TransferText acExportDelim, _
"Qry_Rechnungsdatei_Exportspezifikation", _
"qryExportRechnung", _
"\\GS103\lexware_premium\Rechnungsdateien\Rechnungsdatei_" & _
Format(Me.DeinTextfeldname, "dd_mm_yyyy") & ".txt", True