DAX Dude: AX 2009 Batch Job Stuck In Executing:
'via Blog this'
Tuesday, December 13, 2011
Monday, December 12, 2011
Wai Keat Ng's Dynamics AX Blog: Create Alert using X++ codes
Wai Keat Ng's Dynamics AX Blog: Create Alert using X++ codes: "EventInbox inbox;
;
inbox.initValue();
inbox.ShowPopup = NoYes::Yes;
inbox.Subject = "This is the Alert subject";
inbox.Message = "This is the Alert message";
inbox.AlertedFor = "This alert is just information no links are available";
inbox.SendEmail = false;
inbox.UserId = curuserid();
inbox.TypeId = classnum(EventType);
inbox.AlertTableId = tablenum(Address);
inbox.AlertFieldId = fieldnum(Address, Name);
inbox.TypeTrigger = EventTypeTrigger::FieldChanged;
inbox.CompanyId = curext();
inbox.InboxId = EventInbox::nextEventId();;
inbox.AlertCreatedDateTime = DateTimeUtil::getSystemDateTime();
inbox.insert();"
'via Blog this'
;
inbox.initValue();
inbox.ShowPopup = NoYes::Yes;
inbox.Subject = "This is the Alert subject";
inbox.Message = "This is the Alert message";
inbox.AlertedFor = "This alert is just information no links are available";
inbox.SendEmail = false;
inbox.UserId = curuserid();
inbox.TypeId = classnum(EventType);
inbox.AlertTableId = tablenum(Address);
inbox.AlertFieldId = fieldnum(Address, Name);
inbox.TypeTrigger = EventTypeTrigger::FieldChanged;
inbox.CompanyId = curext();
inbox.InboxId = EventInbox::nextEventId();;
inbox.AlertCreatedDateTime = DateTimeUtil::getSystemDateTime();
inbox.insert();"
'via Blog this'
Dynamics AX Custom ALerts
Query :
How can i add custom alerts in dynamics ax?
Answer :
void createAction()
{
EventNotificationSource _source;
EventNotificationBatch event = EventNotification::construct(EventNotificationSource::Batch);
;
event.parmUserId(curuserid());
event.parmSubject(subject);
event.parmMessage(message);
event.parmNotificationType(EventNotificationType::Action);
event.parmShowPopup(NoYes::Yes);
event.parmSendEmail(sendemail);
event.create();
}
How can i add custom alerts in dynamics ax?
Answer :
void createAction()
{
EventNotificationSource _source;
EventNotificationBatch event = EventNotification::construct(EventNotificationSource::Batch);
;
event.parmUserId(curuserid());
event.parmSubject(subject);
event.parmMessage(message);
event.parmNotificationType(EventNotificationType::Action);
event.parmShowPopup(NoYes::Yes);
event.parmSendEmail(sendemail);
event.create();
}
Monday, December 5, 2011
Monday, November 28, 2011
The thing about the .NET Business Connector and the number of online users - Microsoft Dynamics AX Technical Support Blog - Site Home - MSDN Blogs
The thing about the .NET Business Connector and the number of online users - Microsoft Dynamics AX Technical Support Blog - Site Home - MSDN Blogs:
'via Blog this'
'via Blog this'
Sunday, November 20, 2011
Dynamics AX 2009 + SSRS Lessons Learned
Following are the lessons i have learned when configuring SSRS for AX 2009,
1- Always use IP address for connecting to SSRS
2- Add both the business connector user and the client connecting user as AX users, for instance if your bc user is proxy and the client connecting is newclient both the ID's should be in AX.
3- Make sure the business connector is configured properly.
4 -Make sure that SSRS URL is under trusted sites.
1- Always use IP address for connecting to SSRS
2- Add both the business connector user and the client connecting user as AX users, for instance if your bc user is proxy and the client connecting is newclient both the ID's should be in AX.
3- Make sure the business connector is configured properly.
4 -Make sure that SSRS URL is under trusted sites.
Tuesday, November 15, 2011
app.config editor
Question:
Is there any application around which I can use to update app.config files associated with .Net applications.
Answer:
The best application I have found is hosted on code project, http://www.codeproject.com/KB/files/AppConigEditor.aspx
Is there any application around which I can use to update app.config files associated with .Net applications.
Answer:
The best application I have found is hosted on code project, http://www.codeproject.com/KB/files/AppConigEditor.aspx
Wednesday, November 9, 2011
Dynamics AX 2009 Known Issues
Question :
Is there a place to review all the knows Dynamics AX 2009 Issues ?
Answer:
Yes, kindly review the following link.
http://dynamicspost.blogspot.com/2011/04/ax-2009-known-issues-solutions.html
Is there a place to review all the knows Dynamics AX 2009 Issues ?
Answer:
Yes, kindly review the following link.
http://dynamicspost.blogspot.com/2011/04/ax-2009-known-issues-solutions.html
Tuesday, November 8, 2011
RPC 5 Exception
Question :
I am running SSRS 2008 R2 with Dynamics ax under network services user. Issue is sometimes the reports show up and sometimes they do not. I notice that i have few error with RPC 5 exception in my event log.
Answer :
This is a know issue. To fix this for SSRS 2008 remove the execution account from SSRS configuration manager and run the SSRS service under BC Proxy account.
I am running SSRS 2008 R2 with Dynamics ax under network services user. Issue is sometimes the reports show up and sometimes they do not. I notice that i have few error with RPC 5 exception in my event log.
Answer :
This is a know issue. To fix this for SSRS 2008 remove the execution account from SSRS configuration manager and run the SSRS service under BC Proxy account.
Dynamics AX SSRS The request failed with HTTP status 401
Question :
I am receiving a 401 error when connecting to AX Reports hosted on SSRS 2008 R2.
Answer :
true
I am receiving a 401 error when connecting to AX Reports hosted on SSRS 2008 R2.
Answer :
The solution that worked for me was to open rsreportserver.config file placed in the reporting services instalaltion directory, finding authentication group and commenting WindowsNegotiate tag as shown below.
Monday, October 24, 2011
Dynamics AX Log On Failed on Reporting Services
Query:
I am getting a logon failure when running reporting services for dynamics.
Answer:
Make sure the business connector credentials are correct.
I am getting a logon failure when running reporting services for dynamics.
Answer:
Make sure the business connector credentials are correct.
Sunday, October 23, 2011
Seconds to actual time in C#
I always used to have issues when debugging time related issues in AX. Time is saved in seconds so many time when you want to know the actual time associated with it in hh : mm : ss, you will either have to do it in mind or use a calculator. In order to simplify debugging I have created a small C# based console application that takes seconds as input and returns the time in actual format.
The code is below and you can compile it in visual studio to make it work.
Enjoy!
Download the application from here.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Decimal2Hours
{
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.WriteLine(Program.ConvertSecondsToHoursMinutes(Console.ReadLine()));
}
}
public static string ConvertDecimalToHours(string paramHours)
{
int realPart;
int decimalPart;
decimal hours;
string hoursStr;
string minStr;
int decimalLocation;
string finalMinutes;
decimal _hours = decimal.Parse(paramHours);
;
try
{
hours = _hours;
hoursStr = hours.ToString();
decimalLocation = hoursStr.IndexOf(".");
hoursStr = hoursStr.Substring(0, decimalLocation);
hoursStr = hoursStr.Trim(new char[] { '.' });
minStr = hours.ToString();
minStr = minStr.Substring(decimalLocation);
minStr = minStr.Trim(new char[] { '.' });
realPart = Convert.ToInt32(hoursStr);
decimalPart = Convert.ToInt32(Math.Floor((decimal)Convert.ToDecimal("0." + minStr) * 60));
finalMinutes = (realPart.ToString().Length == 1 ? "0" + realPart.ToString() : realPart.ToString())
+ ":" +
(decimalPart.ToString().Length == 1 ? "0" + decimalPart.ToString() : decimalPart.ToString());
return finalMinutes;
}
catch
{
return paramHours;
}
}
public static string ConvertSecondsToHoursMinutes(string paramSeconds)
{
string finalTime;
int seconds = Convert.ToInt32(paramSeconds);
int result;
int hours = Math.DivRem(seconds, 60 * 60, out result);
seconds = result;
int minutes = Math.DivRem(seconds, 60, out result);
seconds = result;
finalTime = hours.ToString() + " : " + minutes.ToString() + " : " + seconds.ToString();
return finalTime;
}
}
}
The code is below and you can compile it in visual studio to make it work.
Enjoy!
Download the application from here.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Decimal2Hours
{
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.WriteLine(Program.ConvertSecondsToHoursMinutes(Console.ReadLine()));
}
}
public static string ConvertDecimalToHours(string paramHours)
{
int realPart;
int decimalPart;
decimal hours;
string hoursStr;
string minStr;
int decimalLocation;
string finalMinutes;
decimal _hours = decimal.Parse(paramHours);
;
try
{
hours = _hours;
hoursStr = hours.ToString();
decimalLocation = hoursStr.IndexOf(".");
hoursStr = hoursStr.Substring(0, decimalLocation);
hoursStr = hoursStr.Trim(new char[] { '.' });
minStr = hours.ToString();
minStr = minStr.Substring(decimalLocation);
minStr = minStr.Trim(new char[] { '.' });
realPart = Convert.ToInt32(hoursStr);
decimalPart = Convert.ToInt32(Math.Floor((decimal)Convert.ToDecimal("0." + minStr) * 60));
finalMinutes = (realPart.ToString().Length == 1 ? "0" + realPart.ToString() : realPart.ToString())
+ ":" +
(decimalPart.ToString().Length == 1 ? "0" + decimalPart.ToString() : decimalPart.ToString());
return finalMinutes;
}
catch
{
return paramHours;
}
}
public static string ConvertSecondsToHoursMinutes(string paramSeconds)
{
string finalTime;
int seconds = Convert.ToInt32(paramSeconds);
int result;
int hours = Math.DivRem(seconds, 60 * 60, out result);
seconds = result;
int minutes = Math.DivRem(seconds, 60, out result);
seconds = result;
finalTime = hours.ToString() + " : " + minutes.ToString() + " : " + seconds.ToString();
return finalTime;
}
}
}
Thursday, October 20, 2011
How can I add sql server account from command prompt?
Query :
How can I add sql server account from command prompt?
Answer :
http://blogs.ameriteach.com/chris-randall/2009/12/11/sql-server-2008-forgot-to-add-an-administrator-account.html
Monday, October 17, 2011
Dynamics AX Excel Sheet Import, In Correct Time Values
Query
Whenever I import an excel sheet containing a timing point, it is converted to 1 second less than the actual value.
Answer
This is a known issue and you can look at http://support.microsoft.com/kb/969186 for the resolution and workaround.
Whenever I import an excel sheet containing a timing point, it is converted to 1 second less than the actual value.
Answer
This is a known issue and you can look at http://support.microsoft.com/kb/969186 for the resolution and workaround.
Wednesday, October 12, 2011
SharePoint Database Configuration Failed
Query :
I changed the DNS IP today and was unable to connect to SharePoint database. The error that i am getting is "Failed to connect to the configuration database"
Answer :
There can be many factors to cause this issue. You can read about this issue at "http://support.microsoft.com/kb/823287/en-us".
One more issue can be the change of the IP of your DNS Server. In order to resolve most of the issues you can create a new database using the following command,
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\PSCONFIG.EXE" -cmd configdb -create -database
I changed the DNS IP today and was unable to connect to SharePoint database. The error that i am getting is "Failed to connect to the configuration database"
Answer :
There can be many factors to cause this issue. You can read about this issue at "http://support.microsoft.com/kb/823287/en-us".
One more issue can be the change of the IP of your DNS Server. In order to resolve most of the issues you can create a new database using the following command,
"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\PSCONFIG.EXE" -cmd configdb -create -database
Tuesday, August 23, 2011
Excel Value to String
Query: How can i create a generic method for returning string values from excel.
Answer:
// convert into str from excel cell value
str COMVariant2Str(COMVariant _cv,
int _decimals = 0,
int _characters = 0,
int _separator1 = 0,
int _separator2 = 0)
{
switch (_cv.variantType())
{
case (COMVariantType::VT_BSTR):
return _cv.bStr();
case (COMVariantType::VT_R4):
return num2str(_cv.float(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_R8):
return num2str(_cv.double(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_DECIMAL):
return num2str(_cv.decimal(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_DATE):
return date2str(_cv.date(),123,2,1,2,1,4);
case (COMVariantType::VT_EMPTY):
return "";
default:
throw error(strfmt("@SYS26908", _cv.variantType()));
}
return "";
}
Answer:
// convert into str from excel cell value
str COMVariant2Str(COMVariant _cv,
int _decimals = 0,
int _characters = 0,
int _separator1 = 0,
int _separator2 = 0)
{
switch (_cv.variantType())
{
case (COMVariantType::VT_BSTR):
return _cv.bStr();
case (COMVariantType::VT_R4):
return num2str(_cv.float(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_R8):
return num2str(_cv.double(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_DECIMAL):
return num2str(_cv.decimal(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_DATE):
return date2str(_cv.date(),123,2,1,2,1,4);
case (COMVariantType::VT_EMPTY):
return "";
default:
throw error(strfmt("@SYS26908", _cv.variantType()));
}
return "";
}
Wednesday, August 17, 2011
Corrupted applicationHost.config
Query:
The IIS file applicationHost.config got corrupted today, is there any way i can regenerate?
Answer:
You can restore from the backup placed at C:\inetpub\history
The IIS file applicationHost.config got corrupted today, is there any way i can regenerate?
Answer:
You can restore from the backup placed at C:\inetpub\history
Tuesday, August 16, 2011
Monday, August 15, 2011
ssrs unable to load client print control on windows 2003
Query:
I am getting an issue when trying to print the SSRS reports. It keeps saying "unable to load client print control".
Answer:
I am getting an issue when trying to print the SSRS reports. It keeps saying "unable to load client print control".
Answer:
Uninstall KB KB956390
Sunday, July 24, 2011
Dynamics AX Workflow Purchase Requistion
Queries:
I can not create purchase requisition on behalf of other users?
Answer:
Go to HR->Employee Details->Setup->on behalf of to setup employees on behalf of whom you want to create PR's.
I can not create purchase requisition on behalf of other users?
Answer:
Go to HR->Employee Details->Setup->on behalf of to setup employees on behalf of whom you want to create PR's.
Thursday, July 21, 2011
How to check configuration key in X++
Query:
How can i check if the configuration key is enabled through x++?
Answer:
How can i check if the configuration key is enabled through x++?
Answer:
if (isConfigurationKeyEnabled(configurationkeynum(keyname))) { //insert code here }
Sunday, July 17, 2011
Sunday, July 10, 2011
Sunday, June 26, 2011
Call webservice using SQL Server
Query:
How can I call an AIF service using SQL Server 2008?
Answer:
You can use http://technet.microsoft.com/en-us/sqlserver/ff686773.aspx to see how it is done.
How can I call an AIF service using SQL Server 2008?
Answer:
You can use http://technet.microsoft.com/en-us/sqlserver/ff686773.aspx to see how it is done.
Wednesday, June 22, 2011
Dynamics AX Run Time Dialog
Query:
Can I create a dialog on run time?
Answer:
/// This is a class to create dynamic dialog on the fly
///
///
/// Usage
/*
static void testDynamicDialog(Args _args)
{
CustomDialog diag;
List types = new List(Types::Integer); // typeId is an integer
List fields;
ListEnumerator enum;
DialogField field;
;
// the dialog shall contain fields for the following types
types.addEnd(typeId(EmplId));
types.addEnd(typeId(Itemid));
types.addEnd(typeId(ProdId));
types.addEnd(typeId(CustAccount));
// crate and show
diag = new CustomDialog(types,"Dynamic Dialog");
diag.run();
// show values in the Infolog
fields = diag.parmFieldList();
enum = fields.getEnumerator();
while(enum.moveNext())
{
field = enum.current();
info(field.value());
}
} */
///
class MSTACustomDialog extends Dialog
{
List fieldList;
}
void new(List typeList, Caption _caption = '', Object _caller = null, str _parmstr = '', Form _form = new Form(formStr(Dialog)))
{
ListEnumerator enum;
;
if(typeList == null)
error("@BCS3969");
super(_caption, _caller, _parmStr, _form);
fieldList = new List(Types::Class);
enum = typeList.getEnumerator();
while(enum.moveNext())
{
fieldList.addEnd(this.addField(enum.current()));
}
}
Can I create a dialog on run time?
Answer:
Use the following class
/// /// This is a class to create dynamic dialog on the fly
///
///
/// Usage
/*
static void testDynamicDialog(Args _args)
{
CustomDialog diag;
List types = new List(Types::Integer); // typeId is an integer
List fields;
ListEnumerator enum;
DialogField field;
;
// the dialog shall contain fields for the following types
types.addEnd(typeId(EmplId));
types.addEnd(typeId(Itemid));
types.addEnd(typeId(ProdId));
types.addEnd(typeId(CustAccount));
// crate and show
diag = new CustomDialog(types,"Dynamic Dialog");
diag.run();
// show values in the Infolog
fields = diag.parmFieldList();
enum = fields.getEnumerator();
while(enum.moveNext())
{
field = enum.current();
info(field.value());
}
} */
///
class MSTACustomDialog extends Dialog
{
List fieldList;
}
public List parmFieldList()
{
return fieldList;
}
{
return fieldList;
}
{
ListEnumerator enum;
;
if(typeList == null)
error("@BCS3969");
super(_caption, _caller, _parmStr, _form);
fieldList = new List(Types::Class);
enum = typeList.getEnumerator();
while(enum.moveNext())
{
fieldList.addEnd(this.addField(enum.current()));
}
}
Tuesday, June 14, 2011
Monday, June 13, 2011
Reading CSV File in AX
Query:
How can I read a csv file in AX?
Answer:
use the following code,
public void run()
{
#File
CommaTextIo commaTextIo;
FileIOPermission permission;
container containFromRead;
int x;
int cols;
PurchIdBase purchId;
LineNum lineNum;
;
super();
if(!this.validate())
{
return;
}
try
{
permission = new FileIOPermission(filePath, #io_read);
permission.assert();
commaTextIo = new CommaTextIO(filePath, #io_read);
containFromRead = commaTextIo.read();
while(containFromRead)
{
cols = conLen(containFromRead);
for(x=1; x <= cols; x++)
{
info(any2str(conpeek(containFromRead, x)));
}
containFromRead = commaTextIo.read();
}
commaTextIo = null;
}
catch(Exception::Error)
{
}
}
How can I read a csv file in AX?
Answer:
use the following code,
public void run()
{
#File
CommaTextIo commaTextIo;
FileIOPermission permission;
container containFromRead;
int x;
int cols;
PurchIdBase purchId;
LineNum lineNum;
;
super();
if(!this.validate())
{
return;
}
try
{
permission = new FileIOPermission(filePath, #io_read);
permission.assert();
commaTextIo = new CommaTextIO(filePath, #io_read);
containFromRead = commaTextIo.read();
while(containFromRead)
{
cols = conLen(containFromRead);
for(x=1; x <= cols; x++)
{
info(any2str(conpeek(containFromRead, x)));
}
containFromRead = commaTextIo.read();
}
commaTextIo = null;
}
catch(Exception::Error)
{
}
}
CommaTextIO not initialized error
Query:
I am getting commatextio not initialized error and it is not going away. I am sure my code is right.
Answer:
Make sure you are on the correct tier (client or server) and make sure you have permission on that file for the specific tier.
Hint: see the main and construct methods make sure they don't have only server keyword.
I am getting commatextio not initialized error and it is not going away. I am sure my code is right.
Answer:
Make sure you are on the correct tier (client or server) and make sure you have permission on that file for the specific tier.
Hint: see the main and construct methods make sure they don't have only server keyword.
Wednesday, June 8, 2011
Passing arguments between two forms
Query:
How can I pass information from 1 form to another?
Answer:
IN the clicked button of form A write following code,
void clicked()
{
Args args;
FormRun formRun;
;
super();
args = new Args(formstr(FormName));
args.parm(parameters);
formRun = classFactory.FormRunClass(args);
formRun.init();
formRun.run();
formRun.wait();
formRun.detach();
parenttable_ds.refresh(); // Refreshing parent table DataSourceTable
parenttable_ds.executeQuery(); // Refreshing Parent DataSourceTable Query
}
IN form B init method write following code
args = element.args();
args.parm()
How can I pass information from 1 form to another?
Answer:
IN the clicked button of form A write following code,
void clicked()
{
Args args;
FormRun formRun;
;
super();
args = new Args(formstr(FormName));
args.parm(parameters);
formRun = classFactory.FormRunClass(args);
formRun.init();
formRun.run();
formRun.wait();
formRun.detach();
parenttable_ds.refresh(); // Refreshing parent table DataSourceTable
parenttable_ds.executeQuery(); // Refreshing Parent DataSourceTable Query
}
IN form B init method write following code
args = element.args();
args.parm()
Sunday, June 5, 2011
Converting Real Number to TIme
public static str 5 num2Time(real _hours)
{
int realPart;
int decimalPart;
real hours;
str hoursStr;
str minStr;
int decimalLocation;
str finalMinutes;
;
try
{
hours = _hours;
hoursStr = num2str(hours, 0, 2, 1, 0);
decimalLocation = strfind(hoursStr, ".", 0, strlen(hoursStr));
hoursStr = substr(hoursStr, 0, decimalLocation);
hoursStr = trimString(hoursStr, ["."]);
minStr = num2str(hours, 0, 2, 1, 0);
minStr = substr(minStr, decimalLocation, strlen(minStr) - strlen(hoursStr));
minStr = trimString(minStr, ["."]);
realPart = str2int(hoursStr);
decimalPart = str2int(minStr);
finalMinutes = hoursStr + ":" + (int2str(60 * decimalPart / 100) == "0" ? "00" : int2str(60 * decimalPart / 100));
return finalMinutes;
}
catch
{
return num2str(_hours, 0, 2, 1, 0);
}
}
{
int realPart;
int decimalPart;
real hours;
str hoursStr;
str minStr;
int decimalLocation;
str finalMinutes;
;
try
{
hours = _hours;
hoursStr = num2str(hours, 0, 2, 1, 0);
decimalLocation = strfind(hoursStr, ".", 0, strlen(hoursStr));
hoursStr = substr(hoursStr, 0, decimalLocation);
hoursStr = trimString(hoursStr, ["."]);
minStr = num2str(hours, 0, 2, 1, 0);
minStr = substr(minStr, decimalLocation, strlen(minStr) - strlen(hoursStr));
minStr = trimString(minStr, ["."]);
realPart = str2int(hoursStr);
decimalPart = str2int(minStr);
finalMinutes = hoursStr + ":" + (int2str(60 * decimalPart / 100) == "0" ? "00" : int2str(60 * decimalPart / 100));
return finalMinutes;
}
catch
{
return num2str(_hours, 0, 2, 1, 0);
}
}
Wednesday, June 1, 2011
CLR Exception Catch
Query: How to catch CLR Exception?
Answer:
catch (Exception::CLRError) { info("Caught 'Exception::CLRError'."); netExcepn = CLRInterop::getLastException(); info(netExcepn.ToString()); }
Tuesday, May 31, 2011
How to open an exe from Dynamics AX
WinAPI::shellExecute(path);
SSRS A4 Print Layout
If you use Reporting Services, I bet you have spent a while trying to get the reports to print out as expected! I'm not sure why something that wastes so much of everybodies time (printing things out properly) is not well-known and fixed in software now - it should be impossible to get it wrong. The print knows its paper size, the software knows the paper size yet it prints out most of your document on one sheet and then a little strip on the next - obviously what you wanted!
Anyway, in reporting services there are some quirks that you need to know about in order to get your report correct.
1) Select Report - Report Properties and the Layout tab. There are paper sizes and margins in here. Note that the page sizes here need to match the physical paper size. I'm not sure what effect they have because it doesn't draws these on your report design!
2) You might think that is it BUT you then need to right-click on the grid area of the report in the layout view and choose properties (properties of the body of the report) and lo and behold there is another field here called "Size" which consists of width,height in measurement units (mm, inches etc) which defines the area of the report body. For some reason this is not restricted by the page size in report properties and you won't know if you make this too big! Anyway, this needs to equal the page size minus margins if you want it to fit on one sheet.
Example A4 paper is 210mm by 297mm so you set the report layout (in Report -> Report Properties) to these figures and then suppose you set the margins to 10mm all the way round. The report body should be set to 210 - 20 (for width) and 297 - 20 (for height) when in portrait or 297 - 20 (width) x 210 - 20 (height) when in landscape mode. It sounds really simple but it still takes time to find these things out!
More Links: http://blogs.msdn.com/b/bwelcker/archive/2005/08/19/454043.aspx
Anyway, in reporting services there are some quirks that you need to know about in order to get your report correct.
1) Select Report - Report Properties and the Layout tab. There are paper sizes and margins in here. Note that the page sizes here need to match the physical paper size. I'm not sure what effect they have because it doesn't draws these on your report design!
2) You might think that is it BUT you then need to right-click on the grid area of the report in the layout view and choose properties (properties of the body of the report) and lo and behold there is another field here called "Size" which consists of width,height in measurement units (mm, inches etc) which defines the area of the report body. For some reason this is not restricted by the page size in report properties and you won't know if you make this too big! Anyway, this needs to equal the page size minus margins if you want it to fit on one sheet.
Example A4 paper is 210mm by 297mm so you set the report layout (in Report -> Report Properties) to these figures and then suppose you set the margins to 10mm all the way round. The report body should be set to 210 - 20 (for width) and 297 - 20 (for height) when in portrait or 297 - 20 (width) x 210 - 20 (height) when in landscape mode. It sounds really simple but it still takes time to find these things out!
More Links: http://blogs.msdn.com/b/bwelcker/archive/2005/08/19/454043.aspx
SSRS Direct Printing
http://blogs.msdn.com/b/brianhartman/archive/2009/02/27/manually-printing-a-report.aspx
http://connect.microsoft.com/SQLServer/feedback/details/573997/with-ssrs-2008-r2-microsoft-reporting-winforms-serverreport-render-method-returns-no-stream-identifiers-for-image-format
http://ouaesjamali.blogspot.com/2011/01/printing-ssrs-2008-r2-reports-from-c.html
http://connect.microsoft.com/SQLServer/feedback/details/573997/with-ssrs-2008-r2-microsoft-reporting-winforms-serverreport-render-method-returns-no-stream-identifiers-for-image-format
http://ouaesjamali.blogspot.com/2011/01/printing-ssrs-2008-r2-reports-from-c.html
Thursday, May 19, 2011
SSRS: Changing Ruler Settings
Change Regional Settings from English (United States) to English (Australia)
ie through Start > Control Panel > Regional and Language Settings.
ie through Start > Control Panel > Regional and Language Settings.
Printing Dynamics AX Company Logo using in SRS
Query: Can I display company logo / image in SRS
Answer:
In order to do that create one metod in AX, X++ as following.
static public str getImage()
{
CompanyInfo info = CompanyInfo::find();
BinData binData = new BinData();
str ret;
;
//conver image to base64String as .net requirement
bindata.setData(CompanyImage::find(curext(), info.TableId, info.RecId).Image);
ret = binData.base64Encode();
return ret;
}
Call this method in SRS and set the source of the image to be this method.
[DataMethod(), AxSessionPermission(SecurityAction.Assert)]
public static System.Byte[] GetCompanyLogo()
{
string logoImage = (string)SessionManager.GetSession().CallStaticRecordMethod("CompanyInfo", "getImage");
byte[] imageBytes = Convert.FromBase64String(logoImage);
return imageBytes;
}
Answer:
In order to do that create one metod in AX, X++ as following.
static public str getImage()
{
CompanyInfo info = CompanyInfo::find();
BinData binData = new BinData();
str ret;
;
//conver image to base64String as .net requirement
bindata.setData(CompanyImage::find(curext(), info.TableId, info.RecId).Image);
ret = binData.base64Encode();
return ret;
}
Call this method in SRS and set the source of the image to be this method.
[DataMethod(), AxSessionPermission(SecurityAction.Assert)]
public static System.Byte[] GetCompanyLogo()
{
string logoImage = (string)SessionManager.GetSession().CallStaticRecordMethod("CompanyInfo", "getImage");
byte[] imageBytes = Convert.FromBase64String(logoImage);
return imageBytes;
}
Wednesday, May 18, 2011
ssrs unable to load client print control
Our Server environment : SQL2008 x64 SP2 Reporting Services on Windows Server 2008 x64,
Client PC environment: Windows XP SP2 with IE6 or higher, all users are login to Active Directory, users are not members of local Administrator or power user group.
Error: When a user printing a report getting an error as "Unable to load client print control"
Solution that work for us: replace following files in sql 2008 with SQL 2008 R2
Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\bin
RSClientPrint-x86.cab
RSClientPrint-x64.cab
RSClientPrint-ia64.cab
Once you replace files on server side users wont get above error but it is required to do one time installation of this Active X component as a local Administrator or power user. If you are having large number of computers running on Active Directory environment you may create a MSI file with rsclientprint.dll and deploy using AD or SMS. Also I'm recommending to add report server URL as a trusted site (add to Trusted sites) via Active Directory GP.
Hope this will help for somebody to sort out this "hectic" problem. We had very tough time to find out a proper solution for this "bug".
Client PC environment: Windows XP SP2 with IE6 or higher, all users are login to Active Directory, users are not members of local Administrator or power user group.
Error: When a user printing a report getting an error as "Unable to load client print control"
Solution that work for us: replace following files in sql 2008 with SQL 2008 R2
Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\bin
RSClientPrint-x86.cab
RSClientPrint-x64.cab
RSClientPrint-ia64.cab
Once you replace files on server side users wont get above error but it is required to do one time installation of this Active X component as a local Administrator or power user. If you are having large number of computers running on Active Directory environment you may create a MSI file with rsclientprint.dll and deploy using AD or SMS. Also I'm recommending to add report server URL as a trusted site (add to Trusted sites) via Active Directory GP.
Hope this will help for somebody to sort out this "hectic" problem. We had very tough time to find out a proper solution for this "bug".
Monday, May 16, 2011
Reporting Services Client-Side Printing and Silent Deployment of RSClientPrint.cab ActiveX file.
http://www.kodyaz.com/articles/client-side-printing-silent-deployment-of-rsclientPrint.aspx
Wednesday, May 4, 2011
Dynamics AX Reporting Services Error: AX_CompanyName parameter issue
If you are getting a AX_CompanyName parameter issue when running a report, this is because your business connector configuration does not have a company name. Create a custom configuration and set the company ID to resolve the error.
PS: Make sure to restart reporting services, service.
PS: Make sure to restart reporting services, service.
Tuesday, May 3, 2011
Dynamics AX Reporting Services Error : Could Not Load Assembly
Query:
I am getting the following error when deploying reports,
Could not load or find Microsoft.Dynamics.Kernel.Client.dll
Answer:
Make sure the Microsoft.Dynamics.Setup.ReportingServices.dll has been copied as per KB957312 before you do the reporting extensions installation was done.
Do the installation of KB957312
Run the application component of the KB957312 was applied to the AOS server.
Applied the Kernel component of KB 957312 to the server where the reporting extensions are applied.
Ran the installation and it worked properly.
Another option instead of copying the missing DLL's is to copy the AxReports.exe file from the c:\program files\Microsoft Dynamics AX\50\Reporting Services directory to the client directory where your Ax32.exe is located, and run it (AxReports.exe) from the client directory.
Hope this helps someone.
PS: KB957312 refers to a 32 bit opearating system ony, but is works for a 64 bit operating system as well.
I am getting the following error when deploying reports,
Could not load or find Microsoft.Dynamics.Kernel.Client.dll
Answer:
Make sure the Microsoft.Dynamics.Setup.ReportingServices.dll has been copied as per KB957312 before you do the reporting extensions installation was done.
Do the installation of KB957312
Run the application component of the KB957312 was applied to the AOS server.
Applied the Kernel component of KB 957312 to the server where the reporting extensions are applied.
Ran the installation and it worked properly.
Another option instead of copying the missing DLL's is to copy the AxReports.exe file from the c:\program files\Microsoft Dynamics AX\50\Reporting Services directory to the client directory where your Ax32.exe is located, and run it (AxReports.exe) from the client directory.
Hope this helps someone.
PS: KB957312 refers to a 32 bit opearating system ony, but is works for a 64 bit operating system as well.
Dynamics AX Message Box
Query:
I need to ask a confirmation from the user for a operation. How can we achieve it?
Answer:
You can use the Box class available in Dynamics for it.
Box::
I need to ask a confirmation from the user for a operation. How can we achieve it?
Answer:
You can use the Box class available in Dynamics for it.
Box::
Sunday, May 1, 2011
Dynamics AX SRS Browser Not Showing up
Query:
I am getting a blank SRS report viewer using I try to view any report.
Answer:
This is because you might have select to hide the Active X control by right clicking and selecting hide. In order to show it back, open SRSReportView form from AOT, add another Active X control and now open the form. After opening the form right click on the form and select setup, select the first browser control from left and select visible to true.
I am getting a blank SRS report viewer using I try to view any report.
Answer:
This is because you might have select to hide the Active X control by right clicking and selecting hide. In order to show it back, open SRSReportView form from AOT, add another Active X control and now open the form. After opening the form right click on the form and select setup, select the first browser control from left and select visible to true.
Dynamics AX 2012 Unleashed
Found out today that my good friend David Weiner is writing book on Dynamics AX 2012, pre order it at http://www.amazon.com/Microsoft-Dynamics-AX-2012-Unleashed/dp/0672335484
Thursday, April 28, 2011
Wednesday, April 27, 2011
Tuesday, April 26, 2011
Wednesday, April 20, 2011
Tuesday, April 19, 2011
Sunday, April 17, 2011
Thursday, April 14, 2011
Recording Issue in windows 7 with PSR
Queries:
1- Is there any way in windows 7 I can record the issue I am having and send it to the authorities.
Answer:
There is a program called psr that you can open using Run window and using it for recording and entering comments.
1- Is there any way in windows 7 I can record the issue I am having and send it to the authorities.
Answer:
There is a program called psr that you can open using Run window and using it for recording and entering comments.
Thursday, April 7, 2011
How to get SID to be used with AX Administration?
Question:
I have reinstalled my windows but want to use the same AX. The issue is my AX needs to be configured based on new SID. How to get the new SID?
Answer:
There is a very simple program that can be used to retrieve your new SID and then you can use it for configuration.
http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx
Another way of doing it is by using the following command,
C:\> whoami /user
I have reinstalled my windows but want to use the same AX. The issue is my AX needs to be configured based on new SID. How to get the new SID?
Answer:
There is a very simple program that can be used to retrieve your new SID and then you can use it for configuration.
http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx
Another way of doing it is by using the following command,
C:\> whoami /user
Wednesday, April 6, 2011
Monday, April 4, 2011
Sunday, April 3, 2011
Subscribe to:
Posts (Atom)