<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="https://www.schweda.net/style_feed.css" ?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:atom="http://www.w3.org/2005/Atom"	
	xmlns:dc="http://purl.org/dc/elements/1.1/" > 
<channel>
    <title>schweda.net - Blog</title>
    <link>https://www.schweda.net/</link>
    <description>schweda.net - Blog - Blog-Beitraege</description>
    <language>de-at</language>
    <copyright>Copyright 2006-2026</copyright>
    <generator>schweda.net</generator>
    <managingEditor>heinz.schweda@schweda.net (Heinz Schweda)</managingEditor>
    <webMaster>heinz.schweda@schweda.net (Heinz Schweda)</webMaster>
    <category>Blog</category>
	<atom:link href="https://schweda.net/blog_rss.php?bid=181" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[Fehlermeldungen in AX aussagekräftiger gestalten]]></title>
<description><![CDATA[
<p>Info, warning und error sind das t&auml;glich Brot des AX-Entwicklers. Schlie&szlig;lich kann er &uuml;ber diese Befehle dem Benutzer mitteilen, was er getan hat, zu tun hat oder nicht h&auml;tte tun sollen. Und dies erfolgt in der Regel mit einer mehr oder weniger aussagekr&auml;ftigen Fehlermeldung. Unterst&uuml;tzen kann man diese auf einfache Art und Weise mit dem zus&auml;tzlichen Parameter sysInfoAction. Anbei einige Beispiele, wie man diesen einsetzen kann:
</p>


<pre class="pre_blog_axcode">
static void InfoWarningErrorExamples(Args _args)
{
    query query;
    CustTable CustTable;
    sysInfoAction_MenuFunction sysInfoAction_MenuFunction;
    ;

    // &Ouml;ffnet ein Formular mit einer Auswahl an Datens&auml;tzen (&uuml;ber eine Query)
    // Zus&auml;tzlich kann man hier ein FormControl angeben, welches nach dem &ouml;ffnen den Fokus erh&auml;lt
    query = new query();
    query.addDataSource(tableNum(CustTable)).addRange(fieldNum(CustTable, AccountNum)).value(&#39;401*&#39;);
    info(   &#39;Bitte &uuml;berpr&uuml;fen Sie, ob bei allen betroffenen Debitoren die selbe Debitorengruppe eingetragen ist&#39;,
             &#39;APPLDOC://Tables/CustTable/CustGroup&#39;,
             sysInfoAction_FormRunQuery::newFormnameControlnameQuery(formStr(CustTable),&#39;Posting_CustGroup&#39;, query));

    // &Ouml;ffnet nur das Formular ohne einen bestimmten Datensatz auszuw&auml;hlen, man kann aber den Names
    // eines FormControl angeben, welches den Fokus zu &ouml;ffnenden Formular erhalten soll
    warning(   &#39;Bitte &uuml;berpr&uuml;fen Sie die Einstellungen der am Debitoren hinterlegten Debitorengruppe&#39;,
                &#39;APPLDOC://Tables/CustTable/CustGroup&#39;,
                sysInfoAction_FormRun::newFormnameControlnameDesc(  formStr(CustTable),
                                                                    &#39;Posting_CustGroup&#39;
                                                                    &#39;Debitorengruppe anzeigen&#39;));

    // &Ouml;ffnet das Formular mit einem bestimmten Datensatz und setzt den Fokus auf ein bestimmtes Feld
    CustTable = CustTable::find(&#39;4011&#39;);
    error(  &#39;Bitte &uuml;berpr&uuml;fen Sie die Einstellungen der am Debitoren hinterlegten Debitorengruppe&#39;,
            &#39;APPLDOC://Tables/CustTable/CustGroup&#39;,
            sysInfoAction_TableField::newBufferField(CustTable, fieldNum(CustTable, custGroup)));


    // &Ouml;ffnet ein Formular &uuml;ber die Angabe des entsprechenden MenuItems
    // Dabei kann ein Datensatz ausgew&auml;hlt werden, welcher angezeigt werden soll
    // ACHTUNG: Funktioniert nicht bei allen Formularen (Tabellenrelationen werden ben&ouml;tigt)
    sysInfoAction_MenuFunction = new sysInfoAction_MenuFunction();
    sysInfoAction_MenuFunction.parmDataAreaId(curext());
    sysInfoAction_MenuFunction.parmMenuItemType(MenuItemType::Display);
    sysInfoAction_MenuFunction.parmMenuItemName(identifierStr(CustTable));
    sysInfoAction_MenuFunction.parmCallerBuffer(CustTable::find(&#39;4011&#39;));

    info(&#39;Bitte &uuml;berpr&uuml;fen Sie die Stammdaten des Debitoren&#39;, &#39;&#39;, sysInfoAction_MenuFunction);
}
</pre>


<p>Nachstehend die &auml;quivalenten Befehle in AX 3.0.
</p>


<pre class="pre_blog_axcode">
static void InfoWarningErrorExamples(Args _args)
{
    query query;
    CustTable CustTable;

    sysInfoAction_FormRunQuery sysInfoAction_FormRunQuery;
    sysInfoAction_FormRun sysInfoAction_FormRun;
    sysInfoAction_TableField sysInfoAction_TableField;
    ;

    // &Ouml;ffnet ein Formular mit einer Auswahl an Datens&auml;tzen (&uuml;ber eine Query)
    // Zus&auml;tzlich kann man hier ein FormControl angeben, welches nach dem &ouml;ffnen den Fokus erh&auml;lt
    query = new query();
    query.addDataSource(tableNum(CustTable)).addRange(fieldNum(CustTable, AccountNum)).value(&#39;401*&#39;);
    sysInfoAction_FormRunQuery = new sysInfoAction_FormRunQuery(formStr(CustTable),&#39;Posting_CustGroup&#39;, query);
    info(   &#39;Bitte &uuml;berpr&uuml;fen Sie, ob bei allen betroffenen Debitoren die selbe Debitorengruppe eingetragen ist&#39;,
             &#39;APPLDOC://Tables/CustTable/CustGroup&#39;,
             sysInfoAction_FormRunQuery);

    // &Ouml;ffnet nur das Formular ohne einen bestimmten Datensatz auszuw&auml;hlen, man kann aber den Names
    // eines FormControl angeben, welches den Fokus zu &ouml;ffnenden Formular erhalten soll
    sysInfoAction_FormRun = new sysInfoAction_FormRun(formStr(CustTable),
                                                      &#39;Posting_CustGroup&#39;,
                                                      &#39;Debitorengruppe anzeigen&#39;);
    warning(   &#39;Bitte &uuml;berpr&uuml;fen Sie die Einstellungen der am Debitoren hinterlegten Debitorengruppe&#39;,
                &#39;APPLDOC://Tables/CustTable/CustGroup&#39;,
                sysInfoAction_FormRun);

    // &Ouml;ffnet das Formular mit einem bestimmten Datensatz und setzt den Fokus auf ein bestimmtes Feld
    CustTable = CustTable::find(&#39;4011&#39;);
    sysInfoAction_TableField = new sysInfoAction_TableField(CustTable, fieldNum(CustTable, custGroup));
    error(  &#39;Bitte &uuml;berpr&uuml;fen Sie die Einstellungen der am Debitoren hinterlegten Debitorengruppe&#39;,
            &#39;APPLDOC://Tables/CustTable/CustGroup&#39;,
            sysInfoAction_TableField);
}
</pre>


<p>Aussehen tun solche Fehlermeldungen dann zum Beispiel wie folgt
</p>


<p><img alt="" src="http://www.schweda.net/pictures/blogpics/ax_infolog.jpg" />
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Mon, 10 Dec 2007 20:14:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=181</link>
<comments>https://www.schweda.net/blog_ax.php?bid=181</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=181</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=181</wfw:commentRss>
</item>
</channel>
</rss>	
