Macros – Definitions and Pitfalls

The X++ language features a macro expansion facility. With it, you can define macros, use macro values, do conditional compilation etc. In this blog I’ll describe the semantics of the constructs and provide some guidance to resolve some of the problems beginners and experts alike are having with this language feature. Macros are unstructured in…

4

Entering sales orders over the phone…

At the convergence conference in Copenhagen I wanted a demo that could demonstrate another way of integrating with Ax: I went ahead and wrote a demo that leverages the Speech Server (2007) to accept spoken commands via the telephone to enter sales orders. As it happens this has some customer value apart from the purely…

3

Pen based form demo

This demo was written for Convergence 2007 to showcase how Dynamics Ax can leverage managed code. In this example it uses a managed API to allow form navigation using tablet gestures, that is small figures drawn with the pen on the tablet screen.   The technology shown here will work in 4.0 as well as…

2

Difference between " and ‘ ?

We have been asked whether there is any difference between the two types of quotes that can be used by Ax. The answer is very simple: X++ makes absolutely no distinction between the two. The reason that there are two quote characters is to facilitate constructs themselves containing quote characters, like str s = ‘<MyTag…

5

SQL improvements in the next version of Dynamics AX

I’d like to share with you a description of some of the features that we’ve finished for the next release. The features described in this blog post are improvements and additions to the X++ data access statements. One deals with ordering and grouping data, another expands the possibilities of the update statement by allowing join…

3

Exception handling and transactions

The runtime semantics of exceptions is peculiar in X++. The difference from the semantics from other languages is that exception handling considers any catch blocks that are in a scope that contains a running transaction as ineligible to handle the exception. Consequently the behavior of exceptions is quite different in the situation where a transaction…

8

Correction guide – Compiler warnings

The following is based on material kindly provided by Michael Fruergaard Pontoppidan. I have edited it substantially and added some new material to make it fit within the context of this blog. Introduction This guide will show you how to resolve compiler warnings in Axapta. Compiler warnings are a strong indication that the code contains…

4

Misusing string concatenations

We still see issues where programmers experience really bad things because they’re misusing the str data type. Mainly people complain about poor performance or memory issues when concatenating large strings. So, let me clarify: When strings are concatenated in X++, by doing myString = myString + “some string”;  the system needs to find the end…

1

X++ Tips and Tricks webinar made available right here…

Hello All I recently had the opportunity to do a webinar for a number of online participants, where I related a lot of issues that people often see with X++, where X++ is coming from, what its role is and so on. I am pleased to provide this as a download to anyone interested. You’ll…

7

Integrating Mappoint into the Customer form…

At today’s webinar, I demonstrated how managed code can be called from a form, to get a bitmap showing the customer’s address. The bitmap is found on the address pane, and is updated as the user steps from one record to another. All the magic happens in the UpdateBitmap method on the form (it is…

1