//-----------------------------------------------------------------------------
// Alle Belege mit .pdf exportieren und packen, die kein Exportiert-Datum haben
//-----------------------------------------------------------------------------
procedure ExportBelegeAktuell;
var
Datei: Textfile;
i: Integer;
Hour, Min, Sec, MSec: Word;
Zeit, ExportPath, Mo:
string;
LMonat,LJahr,LTag: Word;
Jetzt: TDateTime;
begin
i := 0;
ExportPath := BaseDatapath + BMandant + '
\Export\';
// Datenbank Belege öffnen und leere Feld 'Exportiert' Datensätze selektieren
DM.AdsQBelege.Active := False;
DM.AdsQBelege.SQL.Clear;
DM.AdsQBelege.SQL.ADD('
Select * From Belege where Exportiert is null');
DM.AdsQBelege.open;
if not (DM.AdsQBelege.EOF
and DM.AdsQBelege.BOF)
then
begin
// ersten Datensatz mit leerem Eportiert-Feld auslesen und Monat des Belegdatums auslesen
// Dann nur noch Datensätze anzeigen, die Exportiert leer und Monat (Belegdatum) haben
decodedate(DM.AdsQBelege.FieldByName('
BelegDatum').AsDateTime,LJahr,LMonat,LTag);
Mo:=IntToStr(LMonat);
DM.AdsQBelege.Active := False;
DM.AdsQBelege.SQL.Clear;
DM.AdsQBelege.SQL.ADD('
Select * From Belege where Exportiert is null AND Month(Belegdatum)='+Mo);
DM.AdsQBelege.Active:=True;
// Zählgröße des Vortschrittsbalkens setzen, anhand der Anzahl der Datensätze
FBelege.ProgressBar1.max := DM.AdsQBelege.RecordCount;
FBelege.ProgressBar1.Visible := true;
// Existiert unter diesem Mandanten schon das Verz. Export ?
// dann Dateien darin löschen, sonst Verz. anlegen.
if not DirectoryExists(BaseDatapath + BMandant + '
\Export')
then
ForceDirectories(BaseDatapath + BMandant + '
\Export')
else
DeleteAll(ExportPath, '
*.*');
//Delete all files in export
// CSV Datei anlegen ---------------------------------------------
assignfile(Datei, ExportPath + '
Belege.csv');
rewrite(Datei);
Jetzt:=Now();
// Schleife zum ausgeben der Daten ins Export Verzeichnis
DM.AdsQBelege.First;
while (
not DM.AdsQBelege.Eof)
do
begin
PDFKopieren;
// Hier die PDF-Datei aus dem Datensatz ins Exportverz kopieren
// Dann den Datensatz in die CSV-Datei schreiben
WriteLn(Datei,
DM.AdsQBelege.FieldByName('
Belegdatum').AsString + '
;' +
DM.AdsQBelege.FieldByName('
Waehrung').AsString + '
;' +
FormatFloat('
##,###,##0.00', DM.AdsQBelege.FieldByName('
Betrag').AsFloat) + '
;' +
DM.AdsQBelege.FieldByName('
SH').AsString + '
;' +
DM.AdsQBelege.FieldByName('
Skontobetrag').AsString + '
;' +
DM.AdsQBelege.FieldByName('
Gegenkonto').AsString + '
;' +
DM.AdsQBelege.FieldByName('
StGegenkonto').AsString + '
;' +
DM.AdsQBelege.FieldByName('
BelegNr').AsString + '
;' +
DM.AdsQBelege.FieldByName('
Konto').AsString + '
;' +
DM.AdsQBelege.FieldByName('
Bemerkung').AsString + '
;' +
DM.AdsQBelege.FieldByName('
Sonstiges').AsString + '
;' +
DM.AdsQBelege.FieldByName('
Eingabedatum').AsString + '
;' +
DM.AdsQBelege.FieldByName('
PDFData').AsString + '
;' +
DM.AdsQBelege.FieldByName('
Nr').AsString + '
;' +
DM.AdsQBelege.FieldByName('
Kostenstelle').AsString + '
;' +
DM.AdsQBelege.FieldByName('
Exportiert').AsString);
// Aktuelles Datum in Feld-Exportiert schreiben
DM.AdsQBelege.Edit;
// <---------------------------------------------- Hier Fehler --------------
DM.AdsQBelege.FieldByName('
Exportiert').AsDateTime:=Jetzt;
DM.AdsQBelege.Post;
DM.AdsQBelege.Next;
//zum nächsten Datensatz
inc(i);
// Fortschrittsbalken eins weiter setzen
FBelege.ProgressBar1.Position := i;
end;
Closefile(Datei);
//CSV-Datei schließen
end;