Wednesday, November 4, 2015

How to repeat Row Header on SSRS Report (AX 2012)

How to repeat Row Header on SSRS Report (AX 2012)


During SSRS report for Dynamics Ax 2012, I found that when report goes on multiple pages, column header did not appear all page except the first one.
I fix this problem by setting some properties to true.

Select the Tablix1 and below right side of columns group header and click there on small arrow head and select the advance Mode.


Now right click on top static in row groups, or Press F4 to open the properties window.

From property window, set propertyRepeatOnNewPage to True. Also set KeepWithGroup property to After

Deploy the report and the header will repeat on each page.
Thanking you and have a nice day!

Regards,
Mr221

Wednesday, October 21, 2015

Access Denied in DMF in ax 2012 R3 While sharing folder

Problem:

When installing DIXF on multiple computers or when changing the user account of the DIXF service sometimes there is a inconsistency the configured user rights.


In your startmenu go to "local users and groups"(lusrmgr.msc)

Check for the existence of a group called "Microsoft Dynamics AX Data Import Export Framework Service Users"

It if does not exist just create it with this exact name.

Make sure your DIXF account and AOS account are members (usually this is the same)

A reboot is required (really it is!) for the changes to take effect.

Have a Nice Day!!!
Regards,
Mr. 221

Access Denied in DMF in ax 2012 R3 While sharing folder

Problem:

When installing DIXF on multiple computers or when changing the user account of the DIXF service sometimes there is a inconsistency the configured user rights.


In your startmenu go to "local users and groups"(lusrmgr.msc)

Check for the existence of a group called "Microsoft Dynamics AX Data Import Export Framework Service Users"

It if does not exist just create it with this exact name.

Make sure your DIXF account and AOS account are members (usually this is the same)

A reboot is required (really it is!) for the changes to take effect.

Have a Nice Day!!!
Regards,
Mr. 221

Tuesday, October 6, 2015

Hi,
If you need to show all the triggers attached with a SQL Database, this is the one way as use the query as follows,

SELECT
     sysobjects.name AS trigger_name
    ,USER_NAME(sysobjects.uid) AS trigger_owner
    ,s.name AS table_schema
    ,OBJECT_NAME(parent_obj) AS table_name
    ,OBJECTPROPERTY( id, 'ExecIsUpdateTrigger')    AS isUpdate
    ,OBJECTPROPERTY( id, 'ExecIsDeleteTrigger')    AS isDelete
    ,OBJECTPROPERTY( id, 'ExecIsInsertTrigger')    AS isInsert
    ,OBJECTPROPERTY( id, 'ExecIsAfterTrigger')     AS isAfter
    ,OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger') AS isInsteadof
    ,OBJECTPROPERTY(id, 'ExecIsTriggerDisabled')   AS [Disabled]
FROM sysobjects
INNER JOIN sysusers
    ON sysobjects.uid = sysusers.uid
INNER JOIN sys.tables t
    ON sysobjects.parent_obj = t.object_id
INNER JOIN sys.schemas s
    ON t.schema_id = s.schema_id
WHERE sysobjects.type = 'TR'

Thanking you &
Have a nice day!!!

Mr. 221

Tuesday, August 11, 2015

Create and implement sequence number

Scenario:
New Reservation code, ST

Step 1:
Create new sequence number into number sequence setting


Step 2:
Insert code into table layer method.

Step 3:
Implement methods into form base datasource methods.




Thanking you and have a nice day!!



How to print the SSRS report in dynamics ax 2012 from code.

SrsReportRun srsReportRun; // initiate the report. 
srsReportRun = new SrsReportRun ("InventTruckTransactionReport.PrecisionDesign1"); 
srsReportRun.init(); 
srsReportRun.reportCaption("InventTruckTransactionReport.PrecisionDesign1"); // set parameters name, value. 
srsReportRun.reportParameter("TruckTransDS_JournalId").value("000161_070"); // suppress the dialog 
srsReportRun.showDialog(false); 
if( srsReportRun ) 
{ // run the report 
       srsReportRun.executeReport(); 
}

Monday, August 10, 2015

How to save the SSRS report to PDF/HTML through code in dynamics ax 2012.

SrsReportRun srsReportRun; srsReportRun = new SrsReportRun("InventTruckTransactionReport.PrecisionDesign1"); 
srsReportRun.init(); 
srsReportRun.reportCaption("InventTruckTransactionReport.PrecisionDesign1"); 
srsReportRun.reportParameter("TruckTransDS_JournalId").value("000161_070"); 
srsReportRun.showDialog(false); // Print to a file named ReportExample in HTML/PDF format.
srsReportRun.printDestinationSettings().printMediumType(SRSPrintMediumType::File); 
srsReportRun.printDestinationSettings().fileFormat(SRSReportFileFormat::PDF); 
srsReportRun.printDestinationSettings().overwriteFile(true); 
srsReportRun.printDestinationSettings().fileName(@"C:\InventTruckTransactionReport.pdf"); 
if( srsReportRun ) 

         srsReportRun.executeReport();
}

Monday, August 3, 2015

Create Progress bars in Dynamics AX [startlengthyoperation, SysOperationProgress,Animations]



This post is again useful for those developers who are new to X++ programming and would like to use progress bars or Hour glass indicators while some business logic is running, hinting the user that something is happening in the background.

Use a progress indicator during operations that take more than 2 seconds.

Use an hourglass mouse pointer if the process takes 2-7 seconds.

Use a progress bar if the process takes 8 seconds or more.

There are many ways to display operations in progress
  1. Hourglass Indicators
  2. Progress Bars
  3. Progress controls on the forms
  4. Animate Controls

Hour Glass Indicators Example:

Use startlengthyoperation() and endlengthyoperation() between your business logic

Example :

static void HourGlassMousePointer(Args _args)

{
   int i;
   str value;
   ;
   startLengthyOperation();
   for( i = 1; i <= 200000; i++)
   {
      value += int2str(i) + ','; // some business logic
   }
   endLengthyOperation();
}
Below is how the hourglass indicator looks
 
Use SysOperationProgress class to show the progress Bars
Initialize a SysOperationProgress variable.
Set a caption for the form by using the SysOperationProgress.setCaption method.
Set an animation to run while the operation is in progress by using the SysOperationProgress.setAnimation method.
A number of animations are provided with Microsoft Dynamics AX. To view them, run the Tutorial_ShowAVIFiles class. If you use one of these animation files, you need to declare the AviFiles macro at the top of your code.
Specify the total number of operation steps.
This is needed for the time-remaining calculation. If you do not set the total number of operation steps, the progress indicator is not shown. The total is often a count of the number of records, and may be time-consuming to calculate. Don't specify the total if the time is taken to calculate the records is comparable to the total time taken for the operation.
Perform the operation. For each step, specify a description and a step number.
During the execution, the progress indicator is updated accordingly. The estimated time remaining is calculated and displayed.
The default update interval is 3 seconds. If the task of updating the display takes more than 10% of the update interval due to latency on the network connection, the update interval is increased by 1 second.
Example :
static void operationProgress_progressBars(Args _args)

{

#AviFiles

SysOperationProgress progress = new SysOperationProgress();

int i;

;

progress.setCaption("Progress bar example…");

progress.setAnimation(#AviUpdate);

progress.setTotal(50000);

for (i = 1; i <= 50000; i++)

{

progress.setText(strfmt("The value of i is %1", i));

progress.setCount(i, 1);

}

}

Below is the output:

Use progress control on the form

Create a new progress control and change the autodeclaration property of the progress control to yes as shown in the figure.
 
In the init() or run() method of the form modify the code as shown below.


SysDictClass        dictClass;

int                           i;

int                           classCount;

classId                   classId;

Dictionary            dictionary;

;

super();

dictionary = new Dictionary();

classCount = dictionary.classCnt();

progress.rangeLo(1);

progress.rangeHi(classCount);

progress.pos(1);

progress.step(1);



for (i=1; i <= classCount; i++)

{

progress.pos(i);

dictClass = new SysDictClass(dictionary.classCnt2Id(i));

info(dictClass.name());

}

 

Animation Control

we can use Animations to let the end users know that process is running at the back ground.
We can use Animate controls to show the progress. Create a new form and add a animate control as shown below. Change the autoDeclaration property of the animate control to Yes.

Override the run() method and paste the below code:


public void run()

{

int i;

#AviFiles

;

super();

for (i = 1 ; i <= 10000; i ++)

{

Animate.animateFile(#AviPrint);

Animate.play(); // autoplay(true);

}



Animate.visible(false);

}



Below is the output
 
Please note: Progress bars are inbuilt in runbase frameworks


Thanking you and 
Have a nice day!!