[gelöst] Prüfen ob ein Ordner existiert

26. Mai 2011 11:35

Hallo

Habe folgendes Problem: Ich möchte über die Form Mitarbeiter prüfen ob ein Ordner existiert. Es gibt nicht zu jedem Mitarbeiter einen Ordner also somit muss es geprüft werden. Ich habe 2 Varianten probiert (siehe Quelltext) habe kommen zu dem gleichen Problem.

Code:
Ordnerpfad := '';
Ordnername := '';
_jahr := '';
_Ordnerpfad := '';
_OrdnerVorhanden.RESET;
Clear(_OrdnerVorhanden);

Window.OPEN('Bitte geben Sie das jahr an!\\'+'#1#####');
Window.INPUT(1,_jahr);
Window.CLOSE;

IF ("No." <> '') AND ("Last Name" <> '') THEN BEGIN
  Ordnername := "Last Name"+', '+"First Name"+'_'+"No.";
  Ordnerpfad := '\\192.168.201.205\Leergutlisten\'+_jahr+'\'+'"'+Ordnername+'"';
  _Ordnerpfad := '\\192.168.201.205\Leergutlisten\'+_jahr+'\'+Ordnername;

END ELSE begin
//if
  Ordnerpfad := '\\192.168.201.205\Leergutlisten\'+_jahr;
  _Ordnerpfad := Ordnerpfad;
  Ordnername := _jahr;
END;

// Abfrage ob der Ordner schon existiert

IF ISCLEAR(Test) THEN
  CREATE(test);


//Variante 1 über Tabelle File
{
_OrdnerVorhanden.SETRANGE(_OrdnerVorhanden.Path, _Ordnerpfad);
_OrdnerVorhanden.Setrange(_OrdnerVorhanden.Name, Ordnername);
_OrdnerVorhanden.SETRANGE("Is a file", FALSE);
IF _OrdnerVorhanden.FIND('-') THEN
}

// Variante 2 über Windows Script Host Object Model'.FileSystemObject
IF Test.FolderExists(_Ordnerpfad) THEN
  SHELL(ENVIRON('WINDIR')+'\explorer.exe', Ordnerpfad)
ELSE
  MESSAGE('nicht gefunden');

clear(Test);


Das Problem es ist wenn ich auf die Form filter auf einen Mitarbeiter funktioniert die Abfrage einmal und wenn ich dann eine Ändere kommt immer diese Fehlermeldung
"Der Pfad "\\192.168.201.205\Leergutlisten\2011\Mitarbeitername" ist nicht vorhanden oder verweist auf kein Verzeichnis."
Genau diese Fehlermeldung möchte ich nicht. Ich dachte die kann ich mit meinen Varianten umgehen. Die Fehlermeldung bekomme ich auch wenn ich alle Varianten aus kommentiere. Wer kann mir helfen, das Problem zu lösen. Habe ich im Forum geguckt und auch alles wie man sieht ausprobiert aber das Problem bekomme ich nicht gelöst
Zuletzt geändert von flowerdog am 26. Mai 2011 13:22, insgesamt 2-mal geändert.

Re: Prüfen ob ein Ordner existiert

26. Mai 2011 11:55

Hi,

kommentiere doch mal den SHELL-Befehl aus, und gib den zusammengesetzten Ordernpfad mit einer Message aus.
Für mich liest sich das nach einem Fehler beim ausführen des Explorers, und nicht beim Prüfen des Ordners.

Kommt der Fehler dann immer noch, liege ich falsch :)
Aber das Problem ist weiter eingegrenzt.

Re: Prüfen ob ein Ordner existiert

26. Mai 2011 12:01

Hallo

Ich habe das auskommentiert und jetzt kommt die Fehler nicht mehr. Okay das löst zwar noch nicht das Problem aber guter Ansatz. Okay dann liegt es beim aufrufen des Explores. Okay wie kann ich da dran was änderen das die Fehlermeldung nicht mehr kommt???

Re: Prüfen ob ein Ordner existiert

26. Mai 2011 12:56

Was steht den als Ordner in der Messagebox drinnen?
Wenn ich das richtig sehe, baust du da Kommas ein, dass dürfte nicht funktionieren mit SHELL.

Re: Prüfen ob ein Ordner existiert

26. Mai 2011 13:05

Um den Explorer zu öffnen, kannst du auch folgenden Quelltext probieren:

Variable:
wsh Automation 'Windows Script Host Object Model'.WshShell
Code:
wsh.Exec('%windir%\explorer.exe ' + Path);

Re: Prüfen ob ein Ordner existiert

26. Mai 2011 13:14

Danjo hat geschrieben:Was steht den als Ordner in der Messagebox drinnen?
Wenn ich das richtig sehe, baust du da Kommas ein, dass dürfte nicht funktionieren mit SHELL.


die Messagebox ist wie folgt aufgebaut:
192.168.201.205
Leergutlisten
2011
Nachname, Vorname_Personalnummer // steht für alle Mitarbeiter in dem Aufbau dann drin

Werde jetzt mal Natalies Vorschlag probieren.

Re: Prüfen ob ein Ordner existiert

26. Mai 2011 13:22

Danke an Natalie es funktioniert jetzt alles super. Vielleicht lag es doch an dem Komma, das leider notwemdig ist.

Dankeschön

Hier nochmal der Quellcode wie er jetzt auszieht

Code:
Ordnerpfad := '';
Ordnername := '';
_jahr := '';
_Ordnerpfad := '';

Window.OPEN('Bitte geben Sie das Jahr an!\\'+'#1#####');
Window.INPUT(1,_jahr);
Window.CLOSE;

IF ("No." <> '') AND ("Last Name" <> '') THEN BEGIN
  Ordnername := "Last Name"+', '+"First Name"+'_'+"No.";
  Ordnerpfad := '\\192.168.201.205\Leergutlisten\'+_jahr+'\'+'"'+Ordnername+'"';
  _Ordnerpfad := '\\192.168.201.205\Leergutlisten\'+_jahr+'\'+Ordnername;

END ELSE BEGIN
  Ordnerpfad := '\\192.168.201.205\Leergutlisten\'+_jahr;
  _Ordnerpfad := Ordnerpfad;
  Ordnername := _jahr;
END;

// Abfrage ob der Ordner schon existiert

IF ISCLEAR(_OrdnerVorhanden) THEN
  CREATE(_OrdnerVorhanden);

IF ISCLEAR(Explorer) THEN
  CREATE(Explorer);

// Variante über Windows Script Host Object Model'.FileSystemObject

IF _OrdnerVorhanden.FolderExists(_Ordnerpfad) THEN
  Explorer.Exec('%windir%\explorer.exe ' + Ordnerpfad)
ELSE
  MESSAGE('Ordner existiert nicht!');

CLEAR(_OrdnerVorhanden);
CLEAR(Explorer);