![]() |
AW: PDF-Datein nach Datenbankvorgabe verschieben
Wozu die Dateien verschieben? Ich kann jede Datei in einen beliebigen Ordner eines ZIP-Archivs packen.
Also können die Dateien da bleiben, wo die sind und erzeuge einfach das ZIP-Archiv. Das kommt an die Mail und raus damit. |
AW: PDF-Datein nach Datenbankvorgabe verschieben
Naja wie Jobo schon zart andeutete, ist eine Frage der Organisation und Ausbildung. Wenn man ein Verzeichnis für eine Zieladresse hat, ist für die meisten Menschen einfacher damit umzugehen. Und so wie der TE das Problem beschrieben hat, ist der Arbeitsablauf sehr menschlich.
Gruß k-H |
AW: PDF-Datein nach Datenbankvorgabe verschieben
Hm. Nach dem Dateinamen in der DB suchen. Feld auslesen wohin und verschieben.
Code:
So habe ich es verstanden.
Dateiname | Ziel
a | Verzeichnis A b | Verzeichnis B c | Verzeichnis C |
AW: PDF-Datein nach Datenbankvorgabe verschieben
Okay, habe mich vllt wirklich etwas blöd angestellt bei dem Erstellen des Themas.
Habe mir jetzt folgendes zusammengeschustert:
Code:
Bis jetzt erstellt der Ablauf genau die richtigen Ordner, verfrachtet die Dateien jedoch nicht hinein. Kann mir jetzt jemand weiter helfen?
procedure TForm1.btnstartSortClick(Sender: TObject);
var i:Integer; fname, dirname : string; begin for i:=1 to 248 do begin fname:= StringGrid.Cells[1,i]; dirname:=StringGrid.Cells[2,i]; if not DirectoryExists('C:\pdfbenannt\'+dirname+'\') then CreateDir('C:\pdfbenannt\'+dirname+'\') else if not FileExists('C:\pdfbenannt\'+fname+'.pdf') then break else end; showmessage('Schritt 1 fertig'); for i:=1 to 248 do begin fname:= StringGrid.Cells[1,i]; dirname:=StringGrid.Cells[2,i]; renamefile('C:\pdfbenannt\'+dirname+'.pdf','C:\pdfbenannt\'+dirName+'\'+fname+'.pdf') ; end; showmessage('Schritt 2 fertig'); end; |
AW: PDF-Datein nach Datenbankvorgabe verschieben
Wieso gibst du eigentlich DirectoryExists und CreateDir einen Pfad ("Path" mit abschließendem "\") und kein Verzeichnis ("Dir") ?
Wenn man das mal halbwegs irdentlich formatiert ... Warum wird das Break nur gemacht, wenn das Verzeichnis existierte, aber die Datei nicht? Wenn das Verzeichnis nicht existiert, dann existiert die Datei doch auch nicht.
Delphi-Quellcode:
Warum eigentlich zwei Schleifen und wieso nur in der Ersten das Break?
if not DirectoryExists('C:\pdfbenannt\'+dirname+'\') then
CreateDir('C:\pdfbenannt\'+dirname+'\') else if not FileExists('C:\pdfbenannt\'+fname+'.pdf') then Break else {nix}; Wenn man jetzt eine Fehlerprüfung einfügt, würde einem das schön auf die Füsse fallen, da die Funktion natürlich den Fehler "Datei existiert nicht" wirft. Tipp: ![]() Zitat:
Delphi-Quellcode:
procedure TForm1.btnstartSortClick(Sender: TObject);
var i: Integer; fname, dirname: string; begin for i := 1 to 248 do begin fname := StringGrid.Cells[1, i]; dirname := StringGrid.Cells[2, i]; if not FileExists('C:\pdfbenannt\'+fname+'.pdf') then Break; // oder Continue? ForceDirectories('C:\pdfbenannt\'+dirname); if not RenameFile('C:\pdfbenannt\'+dirname+'.pdf','C:\pdfbenannt\'+dirName+'\'+fname+'.pdf') then RaiseLastOSError; end; ShowMessage(fertig'); end; ![]() ![]() ![]() ![]() oder ![]() ![]() |
AW: PDF-Datein nach Datenbankvorgabe verschieben
Liste der Anhänge anzeigen (Anzahl: 1)
Habe das StrigGrid nochmal überarbeitet. Der Code sieht jetzt so (übernommen) aus:
Code:
Nur kann ich mit der Fehlermeldung nichts anfangen (Das System kann die Datei nicht finden - obwohl sie genau in dem Ordner liegt!):|
procedure TForm1.btnstartSortClick(Sender: TObject);
var i:Integer; fname, dirname : string; begin for i := 1 to 248 do begin fname := StringGrid.Cells[0, i]; dirname := StringGrid.Cells[1, i]; if not FileExists('C:\pdfbenannt\'+fname+'.pdf') then Continue; // oder Continue? ForceDirectories('C:\pdfbenannt\'+dirname); if not RenameFile('C:\pdfbenannt\'+dirname+'.pdf','C:\pdfbenannt\'+dirName+'\'+fname+'.pdf') then RaiseLastOSError; end; ShowMessage('fertig'); |
AW: PDF-Datein nach Datenbankvorgabe verschieben
Bist'e dir da ganz sicher?
Groß-/Kleinschreibung ist zwar egal (außer es ist z.B. kein FAT/NTFS), aber sonst muß das 'C:\pdfbenannt\'+dirname+'.pdf' halt stimmen, was es wohl doch nicht tut. PS: Strg+C im (Fehler)Dialog und als Text irgendwo wieder einfügen (Strg+V) Vor das RenameFile ein
Delphi-Quellcode:
-> Strg+C -> im Editor Strg+V -> den Pfad rauskopieren -> und dann mal probehalber in den Explorer kopieren und [Enter]
ShowMessage('C:\pdfbenannt\'+dirname+'.pdf');
|
AW: PDF-Datein nach Datenbankvorgabe verschieben
Zitat:
if not FileExists('C:\pdfbenannt\'+fname+'.pdf') und danach RenameFile('C:\pdfbenannt\'+dirname+'.pdf' ?? |
AW: PDF-Datein nach Datenbankvorgabe verschieben
Mit folgendem Code hat's wunderbar funktioniert:
Code:
Vielen Dank an alle! :-D
for i := 1 to 248 do begin
fname := StringGrid.Cells[0, i]; dirname := StringGrid.Cells[1, i]; if not FileExists('C:\pdfbenannt\'+fname) then Continue; // oder Continue? ForceDirectories('C:\pdfbenannt\'+dirname); if not RenameFile('C:\pdfbenannt\'+fname,'C:\pdfbenannt\'+dirName+'\'+fname) then RaiseLastOSError; ProgressBar1.Position:=ProgressBar1.position+7; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz