Search code examples
batch-processingaxaptareadfiledynamics-ax-2012x++

How to open/operate file in batch classes?


I have to import in a Table from file (csv for example). I used this code:

public void run ()
{ 
    TextIO textIO;

    str filename, fileOpen, folder;
    int handle;
    Io thisMYFile;
    FileIoPermission perm;

    #File
    #avifiles
    #OCCRetryCount

    [handle, filename]  =   WINAPI::findFirstFile(folder + "\\*.csv");

    fileOpen = strFmt (folder + "\\" +  filename);

    perm = new FileIoPermission(fileOpen, 'w');
    perm.assert();

    thisMYFile = new CommaTextIo(fileOpen , 'w');
}

But in Debug the class IO thisMYFile is null and so I can't to read and get information.

In my class declaration I extends RunBaseBarch.

If I used a "normal" classes (not batch) I can read,write,move file etc, but now I can't to open.

I know the WinAPI classes not work in Batch, now I think there is also another way to read/open file in batch? With WinAPIServerclass I can findFirstFile ? A clarification, I have also a same problem if I don't schedule the process batch : flag Batch processing is false, in the batch dialog, and clicked only Ok. (example image)

example image

If you've a tutorial, any advice or help,

Thanks all,

enjoy!


Solution

  • Beware that the batch runs on an other machine, the AOS will not have access to your local files.
    Therefore always use a full UNC file path to the file, ex. \\MyHost\Temp\x.csv

    If new CommaTextIO fails to open the file, it returns null, it does not throw an exception. If you do not test for null your code will fail later.