Hi guys,
I did some R&D on the File Management codeunit (419) which is available in NAV and found out that it has pretty much all the functions related to files available in it.
For example: For zipping a file, we no longer need third party software to do the job for us in NAV.
Like this, there are many more functions available in this codeunit which we can use to our advantage and play with 'em. I have used some of the functions in an example which I will demonstrate below,
Before starting, I want you to know that this post is not limited to just importing and zipping a file. I want to show you the ability of codeunit 419 and the functions available in it. I have used a couple of them in my code.
I have developed a codeunit. When I run this codeunit object, a dialog opens up to select a file and then we may select any file of any type and NAV will import it and export it in the same folder as a ZIP file.
STEP 1: Run the codeunit which opens up a dialog window as shown below,
STEP 2: Check the folder from which I selected the file. I see a ZIP file as shown below,
How did I accomplish this?? Create a new codeunit and declare the following Variables,
Variables
Name DataType Subtype Length
FileMgt Codeunit File Management
ServerFileName Text
ClientFileName Text
ZipFileName Text
Code >>>
CLEAR(FileMgt);
//Get fob file on client machine
ClientFileName := FileMgt.OpenFileDialog('Import a Word file', '', 'Word Files (*.doc)|*.doc|All Files (*.*)|*.*');
//Upload fob file to server and get the full path of the file
ServerFileName := FileMgt.UploadFileSilent(ClientFileName);
//Create a new zip file
ZipFileName := FileMgt.CreateZipArchiveObject();
//Add the fob file to the zip file
FileMgt.AddFileToZipArchive(ServerFileName,FileMgt.GetFileName(ClientFileName));
//Close the zip file
FileMgt.CloseZipArchive;
//Download the zip file onto the client machine, saving it to the same directory where the
//fob file is located, and giving it the same name but with a .zip extension
FileMgt.DownloadToFile(ZipFileName,
FileMgt.CombinePath(FileMgt.GetDirectoryName(ClientFileName),
FileMgt.GetFileNameWithoutExtension(ClientFileName)) + '.zip');
Code <<<
NOTE: For the demo above, I used word file type to import. You may use any other files types like .fob (NAV Object Files) , .txt (Text), .xlsx (Excel Files) etc. You just need to replace the parameters in the OpenFileDialog function in the code above.
If you want to work with other file types replace the line written below in the code above,
//For FOB Files
_clientFileName := _fileMgt.OpenFileDialog('Import a FOB file', '', 'FOB Files (*.fob)|*.fob|All Files (*.*)|*.*');
//For Excel Files
_clientFileName := _fileMgt.OpenFileDialog('Import a Excel file', '', 'Excel Files (*.xlsx)|*.xlsx|All Files (*.*)|*.*');
That's all for this post!
Hope you find this post useful.😊 Do comment your thoughts and doubts in the comments section below.
Keep learning!
I did some R&D on the File Management codeunit (419) which is available in NAV and found out that it has pretty much all the functions related to files available in it.
For example: For zipping a file, we no longer need third party software to do the job for us in NAV.
Like this, there are many more functions available in this codeunit which we can use to our advantage and play with 'em. I have used some of the functions in an example which I will demonstrate below,
Before starting, I want you to know that this post is not limited to just importing and zipping a file. I want to show you the ability of codeunit 419 and the functions available in it. I have used a couple of them in my code.
I have developed a codeunit. When I run this codeunit object, a dialog opens up to select a file and then we may select any file of any type and NAV will import it and export it in the same folder as a ZIP file.
STEP 1: Run the codeunit which opens up a dialog window as shown below,
STEP 2: Check the folder from which I selected the file. I see a ZIP file as shown below,
How did I accomplish this?? Create a new codeunit and declare the following Variables,
Variables
Name DataType Subtype Length
FileMgt Codeunit File Management
ServerFileName Text
ClientFileName Text
ZipFileName Text
Code >>>
CLEAR(FileMgt);
//Get fob file on client machine
ClientFileName := FileMgt.OpenFileDialog('Import a Word file', '', 'Word Files (*.doc)|*.doc|All Files (*.*)|*.*');
//Upload fob file to server and get the full path of the file
ServerFileName := FileMgt.UploadFileSilent(ClientFileName);
//Create a new zip file
ZipFileName := FileMgt.CreateZipArchiveObject();
//Add the fob file to the zip file
FileMgt.AddFileToZipArchive(ServerFileName,FileMgt.GetFileName(ClientFileName));
//Close the zip file
FileMgt.CloseZipArchive;
//Download the zip file onto the client machine, saving it to the same directory where the
//fob file is located, and giving it the same name but with a .zip extension
FileMgt.DownloadToFile(ZipFileName,
FileMgt.CombinePath(FileMgt.GetDirectoryName(ClientFileName),
FileMgt.GetFileNameWithoutExtension(ClientFileName)) + '.zip');
Code <<<
NOTE: For the demo above, I used word file type to import. You may use any other files types like .fob (NAV Object Files) , .txt (Text), .xlsx (Excel Files) etc. You just need to replace the parameters in the OpenFileDialog function in the code above.
If you want to work with other file types replace the line written below in the code above,
//For FOB Files
_clientFileName := _fileMgt.OpenFileDialog('Import a FOB file', '', 'FOB Files (*.fob)|*.fob|All Files (*.*)|*.*');
//For Excel Files
_clientFileName := _fileMgt.OpenFileDialog('Import a Excel file', '', 'Excel Files (*.xlsx)|*.xlsx|All Files (*.*)|*.*');
That's all for this post!
Hope you find this post useful.😊 Do comment your thoughts and doubts in the comments section below.
Keep learning!
Very helpfull
ReplyDelete