Fix: Dynamics AX windows opening up behind everything else

If you have worked with Dynamics AX 2009, 2012, R2 or R3 for a while, at least more than an hour or so, you’ll have noticed that for some reason it tends to open new windows behind everything else.

You click a button to open a form, and then you wait for a while for the form to open.  Then you wait some more, and a bit more again.   And then you finally notice that the form has actually opened already.  AX just decided to play a bit of hide and seek with you and opened it behind everything else.

Brilliant design decision, that…

Continue reading “Fix: Dynamics AX windows opening up behind everything else”

Adding a colour picker lookup to an AX form

Here’s a quick and easy way to add a colour picker lookup to an AX form.

I’ve seen a number of different ways to add colour picker support to an AX form, but so far, this has been the easiest.  It is not ideal, because the colour picker opens up as a dialog window, something which can’t be easily worked around without resorting to using custom ActiveX or .NET controls.

Continue reading “Adding a colour picker lookup to an AX form”

Filtered form reference group lookup

Dynamics AX 2012 introduces built-in support for resolving and looking up linked records based on reference record IDs.

When adding a reference record ID field to a form, AX will add a reference group control instead of the reference record ID, and will show a selected set of fields from the referenced table.  See the posts about tree lookups for an example.

The reference group control also does lookups into the referenced table for selecting a new value.  However, by default this lookup is not filtered and will show all records in the referenced table.  Adding filtering is quite easy to do and it follows a similar pattern as regular table lookups.

Continue reading “Filtered form reference group lookup”

Too many joins in query

In Dynamics AX 2012, if you are running a query with too many joins you can get an error or warning message saying “The number of joins in the statement is XX.  This exceeds the maximum of 26.  Turn on exception for this warning to see the call stack.”

So what is this, and what can you do about it?

Continue reading “Too many joins in query”

Implementing checkpointing in long-running updates

Occasionally we need to run updates or inserts of large numbers of records, something which has this nasty habit of taking out locks that will prevent other sessions from updating or inserting in the same tables.  Also, if we terminate such an operation, we’ll have to start all over again from the beginning, wasting a lot of time.

Luckily, with Read Committed Snapshot Isolation which is supported by AX, readers will not be blocked by writers, but writes will still be blocked by other writes.  Once SQL Server escalates the row-level locks to table-level locks things start to go downhill rather quickly, and as we’re pretty much guaranteed not to have an outage window in which to run the update operation, someone is going to be on the phone soon.   Quite soon…

The solution is to break the operation into smaller transactions.

Continue reading “Implementing checkpointing in long-running updates”