Monday, 28 April 2014

CIL Errors : CIL generation, Database Synchronize in AX 2012

1.) "A parameter could not be serialized":
For a quick resolve: uncheck option "Excute business operations in CIL"  under Tools-> Options -> Development tab.

The reason is that you haven't been able to do a successful FULL CIL compile.
Run again and try to fix the error in CIL.

2.)"CIL generation: source array was not long enough...":

1. Stop the AOS.
2. Delete all of the source in the C:\Program Files\Microsoft Dynamics AX\60\Server\MicrosoftDynamicsAX\bin\XppIL directory.
3. Start the AOS.
4. Perform a full CIL generation.
5.(Only do if errors are still there and you have no error when compile X++, just comment the code notice in Compiler output with /*..*/, recompile CIL and delete comment tag)

3.) "CIL generation error : The given key was not present in the dictionary":

1. Check the CIL log file, generally located at "C:\Program Files\Microsoft Dynamics AX\60\Server\MicrosoftDynamicsAX\bin\XppIL\Dynamics.Ax.Application.dll.log"
2. You will find the AOT object for which the CIL generator found the error.
3. Compile that object, fix the error, or delete (if needed) and then regenerate the IL.
4. (Only do if errors are still there : Stop AOS > Delete the .auc file from users\\Appdata  folder > Restart AOS)

4.) DB synchronize error: "Field mismatch in union query. Field ... is not compatible with field ..."

Check your EDT concern to that field ( in query, table, view). They have different size.
So you just change the size to be the same.
Or check someone changed size of standard EDT. It's the reason cause this error

5.) "Duplicate type with name 'Dynamics.Ax.application.' in assembly 'Dynamics.Ax.application "

1. Stop the ax service.
2. Truncate the SysXPPAssembly in db model
3. Delete all the files in below directory in server where AOS hosted:
C:\Program Files\Microsoft Dynamics AX\60\Server\MicrosoftDynamicsAX\bin\XppIL
4. Start the service
5. Compile full CIL

Thursday, 3 April 2014

Use resource files in Axapta

In Application Object Tree, you can find resources node.
Select resources node and right click; select Create from File, specify the file location for the new resource file. After that you can use this resource file in Axapta without specifying an absolute file path in your local/server system.

First, pick up the resource node from AOT;


Then generate a temporary file for this resource file;


Finally specify the temporary file path for controls.
Here comes an example to show how to use a resource file as a background image of  a given form.

ResourceNode            resourceNode;
FilePath  imagename;
resourceNode = SysResource::getResourceNode(resourcestr(ResourceName));
if (resourceNode)
resourceNode. AOTload();
imagename =  SysResource::saveToTempFile(resourceNode);
throw Error(“No file exists.”)

You can try This also
Add a resource file in Resource node under AOT, Right click on Resource Node -> select "Create From File"

Select a file  from your your local drive.

 You can change the label and name of this file as require.


To use this image file in your code just add following code