[Gelöst] OnRename - Ordner umbenennen

11. Juni 2012 12:46

Hallo und guten Tag :)

vorab: Wir benutzen Dynamics NAV SP1 (Classic + RTC)

denooch würde ich gerne dieses Thema noch einmal in abgewandelter Form aufgreifen....

Und zwar...

Wir haben eine Codeunit entwickelt, die bei Anlage eines neuen Artikels einen entsprechenden
Ordner erstellt und diesen mit dem Artikel verlinkt. Durch ein boolesches Feld wird signalisiert ob
Dateien in dem entsprechenden Ordner vorhanden sind. (Als Dokumentenablage für techn. Zeichnungen, etc.)

Auf gehts....

Tabelle 27 - OnInsert()
--> AufrufderCodeunit.Create("No.");

Code:
//Create
IF ItemNo = '' THEN
  EXIT;

InvSetup.GET;
InvSetup.TESTFIELD("Document Folder5");

Folder := InvSetup."Document Folder5"+ItemNo;

CREATE(WshFSO,TRUE,TRUE);
IF NOT WshFSO.FolderExists(Folder) THEN
  WshFSO.CreateFolder(Folder)
ELSE
  MESSAGE(Text000,Folder);
CLEAR(WshFSO);


--> Das ganze funktioniert Prima :)

Jetzt sollte diese Funktionalität auf das Löschen von Artikeln erweitert werden...

Tabelle 27 - OnDelete()
--> AufrufderCodeunit.Delete("No.");

Code:
//Delete
IF ItemNo = '' THEN
  EXIT;

InvSetup.GET;
InvSetup.TESTFIELD("Document Folder5");               

CREATE(WshFSO,TRUE,TRUE);
WshFSO.DeleteFolder(InvSetup."Document Folder5"+ItemNo);
CLEAR(WshFSO);


--> Das ganze funktioniert auch Prima :)


----------------------> Aber nun kommt der Knackpunkt!!!! Das Umbenennen von Artikeln!!!

Tabelle 27 - OnRename()
--> AufrufderCodeunit.Rename("No.");

Code:
///  TEST!!
IF ItemNo = '' THEN
  EXIT;

InvSetup.GET;
InvSetup.TESTFIELD("Document Folder5");

Item.GET(ItemNo);

CREATE(WshFSO,TRUE,TRUE);
OrigFolder := InvSetup."Document Folder5"+ItemNo;
NewFolder := InvSetup."Document Folder5"+'TEST!!!!';
//FILE.RENAME(OrigFolder, NewFolder);
WshFSO.MoveFolder(OrigFolder , NewFolder);
CLEAR(WshFSO);
///


Das Problem ist, so denke ich, das zu diesem Zeitpunkt der Artikel bereits seinen neuen Namen erhält und
die Information des Ursprünglichen Artikelnamens und Ordners nicht mehr vorhanden ist..

Ursprungsartikel "TEST" soll in "TEST123" umbenannt werden.

Fehlermeldung: -- Artikel Nr. "TEST123" existiert nicht. --


Habt ihr eine Idee???
Zuletzt geändert von -nuke- am 18. Juni 2012 08:40, insgesamt 1-mal geändert.

Re: OnRename - Ordner umbenennen

11. Juni 2012 12:54

FILE.RENAME würde im RTC sowieso nicht funktionieren; hier ist der richtige Befehl zu finden: http://blogs.msdn.com/b/nav/archive/201 ... opers.aspx

-nuke- hat geschrieben:Das Problem ist, so denke ich, das zu diesem Zeitpunkt der Artikel bereits seinen neuen Namen erhält
Der alte Wert steht im xRec. Diesen musst du deiner Codeunit also ebenfalls übergeben.

Re: OnRename - Ordner umbenennen

11. Juni 2012 14:28

Ahh vielen Dank :)

So simpel eigentlich....


Tabelle 27 - OnRename()
--> AufrufderCodeunit.Rename("No.", xRec."No.");

Code:
///Rename
IF NewItemNo = '' THEN
  EXIT;

InvSetup.GET;
InvSetup.TESTFIELD("Document Folder5");

CREATE(WshFSO,TRUE,TRUE);
OrigFolder := InvSetup."Document Folder5"+ItemNo;
NewFolder := InvSetup."Document Folder5"+NewItemNo;
WshFSO.MoveFolder(NewFolder , OrigFolder);
CLEAR(WshFSO);
///


Getestet und funktioniert :)

Vielen Dank!!!