<?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 - Axapta 3.0</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?vtid=ax30" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[Statt Parameter-Listen einen DataContract verwenden]]></title>
<description><![CDATA[
<p>Wer schon einmal die Parameter einer Methode erweitern musste, kennt vielleicht das Problem: Wenn man Gl&uuml;ck hat kann man seinen neuen Parameter am Ende einf&uuml;gen und mit einem Default-Wert vorbelegen.<br />
<br />
Hat man nicht ganz so viel Gl&uuml;ck und muss entweder der Parameter zwischen den vorhandenen einbauen oder darf/kann keinen Default-Wert angeben so muss man den gesamten AOT nach den Aufrufen dieser Methode durchsuchen (die Querverweise helfen hier enorm) und diese entsprechend anpassen.<br />
<br />
Aufgrund dieser Problematik gehe ich bei meinen Methoden nun oft den Weg, da&szlig; ich nur einen einzigen Parameter einf&uuml;ge, und zwar vom Typ einer - nennen wir sie einfach einmal DataContract-Klasse.<br />
<br />
DataContracts sind dem einen oder anderen vielleicht aus dem SSRS-Umfeld bekannt, aber die selbe Logik kann ich auch in vielen anderen Situationen anwenden.<br />
<br />
So sieht eine solche DataContract-Klasse beispielweise wie folgt aus:
</p>


<div class="div_blog_axcode">classDeclaration MyDataContract<br />
{<br />
&nbsp;&nbsp;&nbsp; ItemId itemId;<br />
&nbsp; &nbsp; Qty qty;<br />
}
</div>


<p>&nbsp;
</p>


<div class="div_blog_axcode">Public ItemId parmItemId(ItemId _itemId = itemId)<br />
{<br />
&nbsp;&nbsp;&nbsp; itemId = _itemId;<br />
&nbsp;&nbsp;&nbsp; return itemId;<br />
}
</div>


<p>&nbsp;
</p>


<div class="div_blog_axcode">Public Qty parmQty(Qty _qty = qty)<br />
{<br />
&nbsp;&nbsp;&nbsp; qty = _qty;<br />
&nbsp;&nbsp;&nbsp; return qty;<br />
}
</div>


<p><br />
Eine Methode k&ouml;nnte dann wie folgt aussehen:
</p>


<div class="div_blog_axcode">Public void myMethod(MyDataContract _dataContract)<br />
{<br />
&nbsp;&nbsp;&nbsp; // &hellip; do something&hellip;<br />
&nbsp;&nbsp;&nbsp; info(_dataContract.parmItemId());<br />
}
</div>


<p><br />
Aufrufen muss ich eine solche Methode so:
</p>


<div class="div_blog_axcode">MyDataContract dataContract;<br />
dataContract = new MyDataContract();<br />
dataContract.parmItemId(&quot;A1000&quot;);<br />
dataContract.parmQty(123);<br />
<br />
Object.myMethod(dataContract);
</div>


<p><br />
Kommt nun sp&auml;ter ein neuer Parameter hinzu, muss ich den lediglich entsprechend in der DataContract-Klasse einf&uuml;gen und die Logik in der Methode erweitern. Die Methodenaufrufe k&ouml;nnen u.U. so bleiben wie sie waren, lediglich die Aufrufe wo die ge&auml;nderten Parameter ber&uuml;cksichtigt werden m&uuml;ssen, m&uuml;ssen angepasst werden.<br />
<br />
Und zu guter Letzt kann ich solche DataContract-Klassen nat&uuml;rlich f&uuml;r mehrere Methoden verwenden.<br />
&nbsp;
</p>


<p>&nbsp;
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Tue, 14 Jul 2015 14:57:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=579</link>
<comments>https://www.schweda.net/blog_ax.php?bid=579</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=579</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=579</wfw:commentRss>
</item>
<item>
<title><![CDATA[Eine bestimmte Dimension als Dialogfeld einbinden]]></title>
<description><![CDATA[
<p>Wenn man in Dynamics AX 2009 (oder fr&uuml;heren Versionen) eine bestimmte Dimension als Dialogfeld verwenden m&ouml;chte, kann man sich einen eigenen Extended Datatype (abgeleitet von <em>Criterias</em>) wie im folgenden beschrieben anlegen. Entscheidend sind dabei die Relations dieses EDTs.<br />
<br />
Im Beispiel soll beispielsweise der Kostentr&auml;ger als Dialogfeld angeboten werden.
</p>


<p><img alt="Screenshot EDT" height="93" src="http://www.schweda.net/pictures/blogpics/ax_dimensioncostcenter.jpg" title="Screenshot EDT" width="321" />
</p>


<p>Der Beispiel-Code ist einer von RunBase abgeleitenden Klasse entnommen.
</p>


<pre class="pre_blog_axcode">
protected Object dialog(DialogRunbase dialog, boolean forceOnClient)
{
    Object ret;

    ret = super(dialog, forceOnClient);

    df_project = ret.addField(TypeId(DimensionCostCenter));

    return ret;
}
</pre>


<p>Der so angepasste Dialog sollte wie folgt aussehen:
</p>


<p><img alt="Screenshot Dialog" height="176" src="http://www.schweda.net/pictures/blogpics/ax_dimensioncostcenter_dialog.jpg" title="Screenshot Dialog" width="333" />
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Fri, 19 Dec 2014 19:11:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=555</link>
<comments>https://www.schweda.net/blog_ax.php?bid=555</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=555</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=555</wfw:commentRss>
</item>
<item>
<title><![CDATA[Ursache von Fehlermeldungen ermitteln]]></title>
<description><![CDATA[
<p>In Dynamics AX k&ouml;nnen unterschiedliche (Fehler-)Meldungen auftreten, die meisten kommen von der Applikation, es gibt aber auch Meldungen, die vom AX-Client ausgegeben werden.
</p>

<p>Leider sind nicht alle Meldungen so sprechend, da&szlig; man (als Entwickler) sofort wei&szlig;, was nun zu tun ist. Deshalb gibt es, je nachdem um welche Art von Fehlermeldung es sich handelt, unterschiedliche Herangehensweisen, wie man die Ursache der Meldung findet.
</p>

<h2>Meldung &uuml;ber das Infolog der Applikation
</h2>

<p><a href="http://www.schweda.net/pictures/blogpics/ax_infolog_example_1.jpg"><img title="Screenshot infolog" border="0" alt="Screenshot Infolog" align="right" width="200" height="150" style="padding-bottom: 10px; padding-left: 10px" src="http://www.schweda.net/pictures/blogpics/tb_ax_infolog_example_1.jpg" /></a>Bei manchen Meldungen gen&uuml;gt ein Doppelklick auf die Meldung im <strong>Infolog </strong>und man landet im Code, welcher die Meldung geworfen hat (vorausgesetzt man befindet sich als Benutzer gerade im Entwicklungsmodus).
</p>
<br /><a class="div_blog_category_gotodetail" href="https://www.schweda.net/blog_ax.php?bid=513" target="_self" title="Weiterlesen...">Weiterlesen...</a>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Mon, 09 Jun 2014 18:30:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=513</link>
<comments>https://www.schweda.net/blog_ax.php?bid=513</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=513</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=513</wfw:commentRss>
</item>
<item>
<title><![CDATA[Objekte per Code zu einem Projekt hinzufügen]]></title>
<description><![CDATA[
<p>Nachstehend ein kurzer Job, mit dessen Hilfe man AOT-Elemente zu einem bestehenden Shared Project hinzuf&uuml;gen kann.
</p>

<div class="div_blog_axcode">static void AddNodeToSharedProject(Args _args)<br />
{<br />
&nbsp;&nbsp;&nbsp; projectNode projectNode;<br />
&nbsp;&nbsp;&nbsp; TreeNode treeNode;<br />
&nbsp;&nbsp;&nbsp; #AOT<br />
&nbsp;&nbsp;&nbsp; #AOTExport <br />
<br />
&nbsp;&nbsp;&nbsp; projectNode&nbsp;&nbsp;&nbsp; = infolog.projectRootNode();<br />
&nbsp;&nbsp;&nbsp; projectNode&nbsp;&nbsp;&nbsp; = projectNode.AOTfindChild(#expProjectShared);<br />
&nbsp;&nbsp;&nbsp; projectNode&nbsp;&nbsp;&nbsp; = projectNode.AOTfindChild('MyProject');<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; // Add objects<br />
&nbsp;&nbsp;&nbsp; treenode = TreeNode::findNode(#TablesPath+'\\'+tableid2name(tablenum(CustGroup)));<br />
&nbsp;&nbsp;&nbsp; projectNode.addNode(treenode);<br />
<br />
&nbsp;&nbsp;&nbsp; treenode = TreeNode::findNode(#TablesPath+'\\'+tableid2name(tablenum(VendGroup)));<br />
&nbsp;&nbsp;&nbsp; projectNode.addNode(treenode);<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; treenode = TreeNode::findNode(#ClassesPath+'\\'+classStr(PriceDisc));<br />
&nbsp;&nbsp;&nbsp; projectNode.addNode(treenode);<br />
}
</div>

<p>Das ge&auml;nderte Projekt sieht beispielsweise wie folgt aus:
</p>

<p><img title="Screenshot" alt="Screenshot" style="padding-left: 10px" src="http://www.schweda.net/pictures/blogpics/ax_sharedprojectaddnode.jpg" border="0" align="left" height="158" width="245" />
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Sat, 29 Mar 2014 19:28:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=504</link>
<comments>https://www.schweda.net/blog_ax.php?bid=504</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=504</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=504</wfw:commentRss>
</item>
<item>
<title><![CDATA[Werte eines Base-Enums durchlaufen]]></title>
<description><![CDATA[
<pre class="pre_blog_axcode">
SysDictEnum SysDictEnum = new SysDictEnum(enumNum(SalesStatus));
int i;

for (i=0;i&lt;SysDictEnum.values();i++)
{
    info(SysDictEnum.index2Label(i));
}
</pre>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Tue, 11 Mar 2014 21:20:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=478</link>
<comments>https://www.schweda.net/blog_ax.php?bid=478</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=478</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=478</wfw:commentRss>
</item>
<item>
<title><![CDATA[Makro innerhalb eines SELECT-Statements verwenden]]></title>
<description><![CDATA[
<p>Das Beispiel listet beispielsweise nur aktive St&uuml;cklistenpositionen (Tabelle <em>BOM</em>) auf (aktiv &uuml;ber die Felder <em>FromDate </em>und <em>ToDate</em>). L&auml;sst man den zweiten Parameter des Makros leer (dateNull()), so werden alle St&uuml;cklistenpositionen gelistet.
</p>


<pre class="pre_blog_axcode">
static void useMacroInSelectStatement(Args _args)
{
    bom bom;
    date emptyDate;
    
    // parameters: %1 = table instance, %2 date, %3 empty date value
    #localmacro.bomDateFilter
        &amp;&amp; ( %2 == dateNull() || (
            ((%1.FromDate &lt;= %2) &amp;&amp; (%1.ToDate &gt;= %2)) ||
            ((%1.FromDate == %3) &amp;&amp; (%1.ToDate == %3)) ||
            ((%1.FromDate &lt;= %2) &amp;&amp; (%1.ToDate == %3)) ||
            ((%1.FromDate == %3) &amp;&amp; (%1.ToDate &gt;= %2))
            ))
    #endMacro
    ;
    
    while select bom
    where bom.ItemId == &#39;123&#39;
    #bomDateFilter(bom, systemDateGet(), emptyDate)
    {
        info(bom.bomid);
    }
}
</pre>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Sat, 25 Jan 2014 12:21:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=498</link>
<comments>https://www.schweda.net/blog_ax.php?bid=498</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=498</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=498</wfw:commentRss>
</item>
<item>
<title><![CDATA[Welche Felder werden in einem automatisch generierten Lookup angezeigt?]]></title>
<description><![CDATA[
<p>Mir wurde diese Frage vor&nbsp;kurzem selbst gestellt&nbsp;und konnte diese allerdings nur zum Teil beantworten.
</p>

<p>Ich wusste aber noch, da&szlig; ich schon einmal eine Seite gesehen hatte, wo dies genau erkl&auml;rt wird. Aber ich wusste weder noch wo, noch konnte ich sie &uuml;ber diverse Suchmaschinen finden.
</p>

<p>Aber in alten Unterlagen fand ich die Quelle dann doch, der Trick um die Quelle auch mit Google und Konsorten zu finden ist, mit dem altem Namen von Microsoft Dynamics AX - <strong>Axapta </strong>danach zu suchen!
</p>

<p>Tut man dies, so findet man rasch folgende Seite:
</p>

<p><a title="Axaptapedia" target="_blank" href="http://www.axaptapedia.com/index.php?title=Lookups">http://www.axaptapedia.com/index.php?title=Lookups</a>
</p>
<br /><a class="div_blog_category_gotodetail" href="https://www.schweda.net/blog_ax.php?bid=500" target="_self" title="Weiterlesen...">Weiterlesen...</a>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Thu, 16 Jan 2014 21:43:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=500</link>
<comments>https://www.schweda.net/blog_ax.php?bid=500</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=500</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=500</wfw:commentRss>
</item>
<item>
<title><![CDATA[Beispiel für einen Datumsfilter einer FormDataSource]]></title>
<description><![CDATA[
<p>Im folgenden ein Beispiel, wie man bei einer FormDataSource einen QueryBuildRange aufbaut, welcher nur tagesaktuelle Datens&auml;tze anzeigt.
</p>

<p>Im Beispiel enth&auml;lt unsere FormDataSource namens <em>DataSourceName </em>zwei Datumsfelder namens <em>FromDate </em>und <em>ToDate </em>und es sollen abh&auml;ngig von einer Checkbox nur Datens&auml;tze angezeigt werden, die &quot;heute&quot; g&uuml;ltig sind.
</p>

<div class="div_blog_axcode">public void applyFilter()<br />
{<br />
&nbsp;&nbsp;&nbsp; queryBuildRange qbr;<br />
<br />
&nbsp;&nbsp;&nbsp; qbr = sysQuery::findOrCreateRange(DataSourceName_ds.queryBuildDataSource(), fieldNum(DataSourceName, recId));<br />
<br />
&nbsp;&nbsp;&nbsp; if( !ShowExpiredCheckBox.checked())<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qbr.value(strfmt('('+<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '((%5.%2 &lt;= %1) &amp;&amp; (%5.%3 &gt;= %1)) || ' +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '((%5.%2 == %4) &amp;&amp; (%5.%3 == %4)) || ' +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '((%5.%2 &lt;= %1) &amp;&amp; (%5.%3 == %4)) || ' +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '((%5.%3 &gt;= %1) &amp;&amp; (%5.%2 == %4)) ' +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ')',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Date2StrXpp(systemDateGet()),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fieldstr(DataSourceName, FromDate),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fieldstr(DataSourceName, ToDate),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Date2StrXpp(dateNull()),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tableId2name(tableNum(DataSourceName))));<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qbr.value(SysQuery::valueUnlimited());<br />
&nbsp;&nbsp;&nbsp; }<br />
}
</div>

<p>Der Aufruf obiger Methode kann beispielsweise in der <em>executeQuery()</em> der Datasource erfolgen.
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Sun, 01 Sep 2013 15:43:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=475</link>
<comments>https://www.schweda.net/blog_ax.php?bid=475</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=475</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=475</wfw:commentRss>
</item>
<item>
<title><![CDATA[Text-Datei per X++ drucken]]></title>
<description><![CDATA[
<p>Ein kurzes Beispiel, wie man aus AX heraus via Notepad eine Text-Datei ausdrucken kann.
</p>


<pre class="pre_blog_axcode">
static void printTextFileFromAX(Args _args)
{
    WinAPI::shellExecute(&quot;c:&#092;&#092;windows&#092;&#092;system32&#092;&#092;NOTEPAD.EXE&quot;,  @&#39;/pt &quot;c:&#092;temp&#092;test.txt&quot; &quot;An OneNote 2010 senden&quot;&#39;);
}
</pre>


<p>Hinweise: &quot;An OneNote 2010 senden&quot; ist dabei der Name des Druckers. Das Beispiel wurde in Dynamics AX 2012 verwendet, sollte allerdings auch in fr&uuml;heren Versionen verwendbar sein.
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Thu, 11 Jul 2013 20:50:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=471</link>
<comments>https://www.schweda.net/blog_ax.php?bid=471</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=471</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=471</wfw:commentRss>
</item>
<item>
<title><![CDATA[Fehler beim Aufrufen des ActiveX-Controls NETRONIC VARCHART XGantt in Dynamics AX]]></title>
<description><![CDATA[
<p>Ich habe mich schon seit l&auml;ngerem &uuml;ber&nbsp;zahlreiche Fehlermeldungen gewundert, die immer dann aufgetreten sind, wenn ich ein Formular ge&ouml;ffnet habe wo das ActiveX-Control <strong>NETRONIC VARCHART XGantt</strong> eingebettet war, z.B. das Formular Simultanplanungslauf.
</p>

<p>Folgende Fehlermeldungen hatte ich da am Bildschirm:
</p>

<blockquote>ActXBaseControl::Open failure<br />
<br />
D\Work\Projects\Ganft <br />
4.O\NewGanttChart\NewGanttC ha rt_ActiveXsettings\GanttReqTransExplosioniFD<br />
<br />
Loading the interface with identifier GanttReqTransExplosion failed<br />
<br />
This is an unlicensed version of NETRONIC VARCHART XGantt. 1 Please contact NETRONIC for a Iicensed version.
</blockquote>

<p>Eigentlich ist die L&ouml;sung&nbsp;ganz einfach! Ich arbeite&nbsp;nat&uuml;rlich auf einer Entwickler-Maschine, wo&nbsp;unterschiedlichste Versionen von Dynamcs AX/Axapta parallel installiert sind. Und die zuerst installierte und somit &auml;lteste Version&nbsp;bestimmt die aktuell verwendete Version&nbsp;der&nbsp;ActiveX-Komponente.
</p>

<p>Also ist&nbsp;folgendes zu tun: Deinstallieren der &quot;veralteten&quot;&nbsp;Version und installieren bzw. registrieren einer neueren Version z.B. &uuml;ber die Kommandozeile.
</p>

<blockquote>REM Uninstall old version<br />
regsvr32.exe /u &quot;C:\Program Files\Microsoft Business Solutions\Axapta\Client\Bin\vcgantt.ocx&quot;<br />
<br />
REM Install new version<br />
regsvr32.exe &quot;C:\Program Files\Microsoft Dynamics AX\Common\vcgantt.ocx&quot;
</blockquote>

<p>&nbsp;
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Sat, 09 Oct 2010 11:25:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=392</link>
<comments>https://www.schweda.net/blog_ax.php?bid=392</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=392</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=392</wfw:commentRss>
</item>
<item>
<title><![CDATA[Zugriff auf die Zwischenablage per X++]]></title>
<description><![CDATA[
<p>In Dynamics AX kann man selbstverst&auml;ndlich auch auf die Zwischenablage zugreifen, ein kurzes Codebeispiel dazu im folgenden. Funktioniert &uuml;brigens zumindest seit Axpata 2.5.
</p>

<div class="div_blog_axcode"><span style="color: rgb(0, 0, 255);">static void</span> useClipboard(Args _args)<br />
{<br />
&nbsp;&nbsp;&nbsp; textBuffer&nbsp; textBuffer = <span style="color: rgb(0, 0, 255);">new</span> textBuffer();<br />
&nbsp;&nbsp;&nbsp; ; &nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 102, 0);"><br />
&nbsp;&nbsp;&nbsp; // Write to clipboard</span><br />
&nbsp;&nbsp;&nbsp; textBuffer.appendText(<span style="color: rgb(255, 0, 0);">'Hello world!'</span>);<br />
&nbsp;&nbsp;&nbsp; textBuffer.toClipboard();<br />
<br />
&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 102, 0);">// Read from clipboard</span><br />
&nbsp;&nbsp;&nbsp; textBuffer.fromClipboard();<br />
&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 255);">info</span>(textBuffer.getText());<br />
}
</div>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Fri, 26 Mar 2010 19:49:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=371</link>
<comments>https://www.schweda.net/blog_ax.php?bid=371</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=371</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=371</wfw:commentRss>
</item>
<item>
<title><![CDATA[Notizen zur RecId]]></title>
<description><![CDATA[
<p>Die RecId ist die mehr oder weniger eindeutige Kennung eines Datensatzes in Dynamics AX. Mehr oder weniger deshalb, weil es auf die verwendete Version von Dynamics AX bzw. Axapta ankommt:
</p>


<table class="table_blog_main_content">
	<tbody>
		<tr>
			
<th>Version
</th>
			
<th>Bemerkung
</th>
		</tr>
		<tr>
			
<td>3.0
</td>
			
<td>RecId pro Mandant eindeutig (&uuml;ber alle Tabellen)
</td>
		</tr>
		<tr>
			
<td>4.0
</td>
			
<td>RecId pro Tabelle eindeutig (&uuml;ber alle Mandanten)<br />
			D.h. die selbe RecId kann in zwei oder mehreren Tabellen vorkommen, das ist auch der Grund, warum ein Feld einer Tabelle vom Typ RefRecId als EDT mit einer Relation abgebildet werden muss!
</td>
		</tr>
		<tr>
			
<td>2009
</td>
			
<td>Wie&nbsp;bei Version&nbsp;4.0
</td>
		</tr>
		<tr>
			
<td>2012
</td>
			
<td>Wie&nbsp;bei Version&nbsp;4.0
</td>
		</tr>
	</tbody>

</table>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Thu, 04 Mar 2010 19:37:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=361</link>
<comments>https://www.schweda.net/blog_ax.php?bid=361</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=361</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=361</wfw:commentRss>
</item>
<item>
<title><![CDATA[Eintrag "Einstellungen" im Kontextmenü freischalten]]></title>
<description><![CDATA[
<p style="text-align: left"><img alt="Kontextmen&uuml; von AX2009" align="right" width="223" height="209" style="margin-bottom: 10px; border-top: 1px solid; border-right: 1px solid; border-bottom: 1px solid; margin-left: 10px; border-left: 1px solid" src="http://www.schweda.net/pictures/blogpics/ax2009_contextmenu_settings.jpg" />Jeder Entwickler kennt ihn und die meisten benutzen ihn auch regelm&auml;ssig: Den Eintrag &quot;Einstellungen&quot; im Kontextmen&uuml; eines Formulares.
</p>

<p>Wie man diesen Eintrag &uuml;ber die Berechtigungsverwaltung von Dynamics AX entfernt oder hinzuf&uuml;gt, wusste ich allerdings bis dato nicht. Erst ein Request beim Hersteller, den ein Kollege abgesetzt hat, hat mich auf die richtige Spur gebracht:
</p>

<p>Unter <strong>Sicherheit / Verwaltung / Sonstiges / Fomular &quot;Personalisierung&quot;</strong> muss man die Berechtigung auf mindestens &quot;Bearbeiten&quot; setzen, damit der Eintrag im Kontextmen&uuml; aufscheint.
</p>

<p>Und jetzt erkl&auml;r mir mal einer, wie man das selbst finden soll...
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Thu, 04 Feb 2010 21:00:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=366</link>
<comments>https://www.schweda.net/blog_ax.php?bid=366</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=366</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=366</wfw:commentRss>
</item>
<item>
<title><![CDATA[Was man bei Base Enums beachten sollte]]></title>
<description><![CDATA[
<p>Schon einmal einen Base Enum in Dynamics AX erstellt? Oder einen bestehenden erweitert?
</p>


<p>Ja?! Dabei auch auf das folgende geachtet?
</p>


<p><strong>.) Das erste Element eines Base Enums sollte den Wert 0 aufweisen</strong> und dieser sollte &quot;Undefiniert&quot;, &quot;Kein&quot;, &quot;Unbekannt&quot; oder &auml;hnlichem entsprechen. Vor allem wenn man den Base Enum sp&auml;ter in Tabellen verwenden m&ouml;chte, die bereits Daten enthalten.<br />
Selbst wenn man davon ausgehen kann, da&szlig; man einen solchen undefinierten Zustand nicht ben&ouml;tigt, sollte man die 0 reserviert halten, sprich der erste &quot;echte&quot; Wert des Base Enums sollte 1 entsprechen.
</p>

<br /><a class="div_blog_category_gotodetail" href="https://www.schweda.net/blog_ax.php?bid=345" target="_self" title="Weiterlesen...">Weiterlesen...</a>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Mon, 21 Dec 2009 19:04:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=345</link>
<comments>https://www.schweda.net/blog_ax.php?bid=345</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=345</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=345</wfw:commentRss>
</item>
<item>
<title><![CDATA[Bearbeiten von Formularfeldern beschränken]]></title>
<description><![CDATA[
<p><strong>Hinweis: </strong>Zu diesem Thema ist eine <a title="Bearbeiten von Formularfeldern einschr&auml;nken II" target="_self" href="http://www.schweda.net/blog_ax.php?nid=allowedit2">aktuellere Version</a> verf&uuml;gbar
</p>

<p>Sollen in einem Formular nur bestimmte Felder zur Bearbeitung freigegeben sein, kann man die Eigenschaft <em>allowEdit </em>s&auml;mtlicher Felder der DataSource der Tabelle entsprechend umsetzen.
</p>

<p>Einfacher geht&rsquo;s mit folgendem Codebeispiel, welches in der <em>init</em>-Methode der DataSource eingebunden wurde und - im konkreten Fall in der Tabelle <em>SalesLine </em>- nur bei einem einzigen Feld die Bearbeitung erlaubt.
</p>

<div class="div_blog_axcode"><span style="color: rgb(0,0,255)">public </span><span style="color: rgb(0,0,255)">void </span>init()<br />
{<br />
&nbsp;&nbsp;&nbsp; sqlDictionary&nbsp;&nbsp; sqlDictionary;<br />
&nbsp;&nbsp;&nbsp; ;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,255)">super</span>();<br />
<br />
&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,255)">while </span><span style="color: rgb(0,0,255)">select </span>sqlDictionary<br />
&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,255)">where </span>sqlDictionary.tabId&nbsp;&nbsp; <span style="color: rgb(0,0,255)">==</span> <span style="color: rgb(0,0,255)">tableNum</span>(salesLine)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,255)">&amp;&amp;</span> sqlDictionary.fieldId <span style="color: rgb(0,0,255)">!=</span> 0<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,255)">if</span>(sqlDictionary.name <span style="color: rgb(0,0,255)">!=</span> <span style="color: rgb(255,0,0)">&quot;dataareaid&quot;</span> <span style="color: rgb(0,0,255)">&amp;&amp;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sqlDictionary.name <span style="color: rgb(0,0,255)">!=</span> <span style="color: rgb(255,0,0)">&quot;recversion&quot;</span> <span style="color: rgb(0,0,255)">&amp;&amp;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sqlDictionary.name <span style="color: rgb(0,0,255)">!=</span> <span style="color: rgb(255,0,0)">&quot;recId&quot;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; salesline_ds.object(sqlDictionary.fieldId).allowEdit(<span style="color: rgb(0,0,255)">false</span>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; salesline_ds.object(<span style="color: rgb(0,0,255)">fieldNum</span>(salesLine, blocked)).allowEdit(<span style="color: rgb(0,0,255)">true</span>);<br />
}
</div>

<p>Getestet in AX 3.0<br />
&nbsp;
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Fri, 11 Dec 2009 14:18:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=354</link>
<comments>https://www.schweda.net/blog_ax.php?bid=354</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=354</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=354</wfw:commentRss>
</item>
<item>
<title><![CDATA[PageFooter sind nicht immer dort, wo sie sein sollten]]></title>
<description><![CDATA[
<p>Ich kenne kein einziges AX-Projekt, in dem nicht zumindest einer der Berichte Auftragsbest&auml;tigung, Ausgangslieferschein oder Ausgangsrechnung angepasst worden sind. Und deshalb stolpere ich auch immer wieder &uuml;ber das selbe Problem: Man erweitert einen Bericht (Report) um einen PageFooter, der aber nicht auf jeder Seite angedruckt werden soll.
</p>
<br /><a class="div_blog_category_gotodetail" href="https://www.schweda.net/blog_ax.php?bid=360" target="_self" title="Weiterlesen...">Weiterlesen...</a>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Fri, 04 Dec 2009 17:34:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=360</link>
<comments>https://www.schweda.net/blog_ax.php?bid=360</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=360</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=360</wfw:commentRss>
</item>
<item>
<title><![CDATA[Arbeiten mit dem aufrufenden Objekt einer Form (Caller)]]></title>
<description><![CDATA[
<p>Nachstehende Methode enth&auml;lt einige Snippets, die in einem Formular verwendet werden k&ouml;nnen, um in Dynamics AX diverse Funktionen/Methoden des Aufrufenden Objektes aufzurufen.
</p>


<p>&Auml;ndert man <em>element.args()</em> auf z.b. <em>_args</em> und &uuml;bergibt der Methode diese als Parameter, kann die selbe Logik auch aus einer Klasse heraus verwendet werden.
</p>


<pre class="pre_blog_axcode">
void workWithCallingRecord()
{
    common          common;
    object          object;
    formDataSource  formDataSource;
    formRun         formRun;
    inventDim       inventDim;
    salesTable      salesTable;
    int             i;
    ;
    // Call method from calling record
    if( element.args() &amp;&amp;
        element.args().record() )
    {
        common = element.args().record();
        if(common.isFormDataSource())
        {
            info(tableId2Name(common.TableId));
            if(formDataSourceHasMethod(common.dataSource(), identifierStr(&quot;someMethod&quot;)))
            {
                object = common.dataSource();
                object.someMethod();
            }
        }
    }
 

    // Call method from calling form
    if(element.args() &amp;&amp; element.args().caller() &amp;&amp; element.args().caller().handle() == className2Id(&#39;formRun&#39;))
    {
        formRun = element.args().caller();
        if(sysFormRun::hasMethod(formRun, identifierStr(&quot;someFormMethod&quot;)))
        {
            object = formRun;
            object.someFormMethod();
        }
    }

    // Get value from calling record
    if( element.args() &amp;&amp;
        element.args().record() )
    {
        common = element.args().record();
        if(common.TableId == tableNum(salesTable))
        {
            info(common.(fieldNum(salesTable, salesId)));
        }
    }

    // Get value from calling datasource (form with multiple datasources)
    if(element.args() &amp;&amp; element.args().caller() &amp;&amp; element.args().caller().handle() == className2Id(&#39;formRun&#39;))
    {
        formRun = element.args().caller();
        for (i = 0; i &lt;= formRun.dataSourceCount(); i++)
        {
            formDataSource = formRun.datasource(i);
            if (formDataSource &amp;&amp; formDataSource.table() == tablenum(inventDim))    // Search for specific table
            {
                inventDim = formDataSource.cursor();
                break;
            }
        }
        if(inventDim)
        {
            info(inventDim.InventLocationId);
        }
    }

    // Change data in calling datasource
    if(element.args() &amp;&amp; element.args().caller() &amp;&amp; element.args().caller().handle() == className2Id(&#39;formRun&#39;))
    {
        formRun = element.args().caller();
        for (i = 0; i &lt;= formRun.dataSourceCount(); i++)
        {
            formDataSource = formRun.datasource(i);
            if (formDataSource &amp;&amp; formDataSource.table() == tablenum(salesTable))    // Search for specific table
            {
                salesTable = formDataSource.cursor();
                break;
            }
        }
        if(salesTable)
        {
            // Update data
            salesTable.PurchOrderFormNum = &quot;Some value&quot;;
            salesTable.update();
        }
    }

    // Refresh calling datasource
    if( element.args() &amp;&amp;
        element.args().record() )
    {
        common = element.args().record();
        if(common.isFormDataSource())
        {
            formDataSource = common.dataSource();
            formDataSource.research(true);
        }
    }
}
</pre>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Sun, 15 Nov 2009 16:25:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=351</link>
<comments>https://www.schweda.net/blog_ax.php?bid=351</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=351</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=351</wfw:commentRss>
</item>
<item>
<title><![CDATA[Laufzeitfehler im Enterprise Portal von Axapta 3.0]]></title>
<description><![CDATA[
<p>Vor kurzem lief mir im <strong>Enterprise Portal von Axapta 3.0</strong> folgender Fehler &uuml;ber den Weg (gleich nach dem Login):
</p>

<blockquote>

<p>Laufzeitfehler in Microsoft VBScript Fehler '800a01a8' <br />
<br />
Objekt erforderlich: 'wa' <br />
<br />
/ECW_HBA/i_axaptafunctions.asp, line 117
</p>

</blockquote>
<br /><a class="div_blog_category_gotodetail" href="https://www.schweda.net/blog_ax.php?bid=325" target="_self" title="Weiterlesen...">Weiterlesen...</a>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Tue, 01 Sep 2009 20:00:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=325</link>
<comments>https://www.schweda.net/blog_ax.php?bid=325</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=325</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=325</wfw:commentRss>
</item>
<item>
<title><![CDATA[Leere Seiten im Enterprise-Portal von Axapta 3.0]]></title>
<description><![CDATA[
<p><strong>Szenario:</strong> Man hat in einer Entwicklungsumgebung eine Web page ge&auml;ndert (z.B. unter <strong><span style="font-size: smaller">AOT/Web/Web Pages/HTML Pages/Standard pages</span></strong>) und diese per XPO in eine Zielumgebung eingespielt. Wird diese neu eingespielte Web page nun zum ersten Mal im Enterprise-Portal der Zielumgebung aufgerufen, wird stattdessen nur eine leere Seite angezeigt.<br />
<br />
<strong>L&ouml;sung:</strong> Diese Web page in der Zielumgebung mit dem HTML-Editor von Axapta &ouml;ffnen, irgendeine Kleinigkeit &auml;ndern und die Web page speichern. Danach sollte die Seite wieder korrekt dargestellt werden.<br />
&nbsp;
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Sun, 09 Aug 2009 15:40:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=335</link>
<comments>https://www.schweda.net/blog_ax.php?bid=335</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=335</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=335</wfw:commentRss>
</item>
<item>
<title><![CDATA[Datenquelle eines Formulares aus einer Klasse heraus aktualisieren]]></title>
<description><![CDATA[
<p>Ich wei&szlig; nicht, wie es anderen Entwicklern geht, aber ich habe immer wieder das selbe Thema:
</p>


<p>In einem Formular soll eine Schaltfl&auml;che eingebunden werden, die einen oder mehrere der gerade angezeigten Datens&auml;tze &uuml;ber eine Klasse aktualisiert.
</p>


<p>So ein <em>MenuItemButton </em>ist schnell eingebunden, allerdings sorgt dieser in der Regel nicht daf&uuml;r, da&szlig; die angezeigten Daten nach dem Bet&auml;tigen dieses Buttons (und dem Ausf&uuml;hren der dahinterliegenden Programmlogik) auch aktualisiert werden.
</p>

<br /><a class="div_blog_category_gotodetail" href="https://www.schweda.net/blog_ax.php?bid=328" target="_self" title="Weiterlesen...">Weiterlesen...</a>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Thu, 23 Apr 2009 13:46:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=328</link>
<comments>https://www.schweda.net/blog_ax.php?bid=328</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=328</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=328</wfw:commentRss>
</item>
<item>
<title><![CDATA[#PreFixField und #PreFixFieldValue]]></title>
<description><![CDATA[
<p>Im Standard-Code werden in Verbindung mit dem Befehl <em>setPrefix </em>des &ouml;fteren die Makros <strong>PreFixField </strong>und <strong>PreFixFieldValue </strong>verwendet. Was die Verwendung dieser Makros f&uuml;r eine Auswirkung auf die Darstellung des Infologs hat, m&ouml;chte ich im folgenden anhand einfacher Beispiele demonstrieren.
</p>


<p><u>Beispiel f&uuml;r PreFixField</u>
</p>


<div class="div_blog_axcode">setPrefix(<span style="color:#ff0000">&#39;Beispiel fuer #PreFixField&#39;</span>);<br />
<br />
<span style="color:#0000ff">select firstonly</span> salesTable;<br />
<br />
setPrefix(#PreFixField(salesTable, salesId));<br />
info(<span style="color:#ff0000">&#39;Datensatz in Tabelle &quot;Auftrag&quot; gefunden.&#39;</span>);
</div>


<p><img alt="Screenshot" height="53" src="http://www.schweda.net/pictures/blogpics/ax_prefixfield.jpg" title="Screenshot" width="320" />
</p>


<p>&nbsp;
</p>

<br /><a class="div_blog_category_gotodetail" href="https://www.schweda.net/blog_ax.php?bid=323" target="_self" title="Weiterlesen...">Weiterlesen...</a>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Thu, 26 Mar 2009 17:30:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=323</link>
<comments>https://www.schweda.net/blog_ax.php?bid=323</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=323</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=323</wfw:commentRss>
</item>
<item>
<title><![CDATA[Dynamics AX: Die Debug-Klasse]]></title>
<description><![CDATA[
<p>Mit der Debug-Klasse stellt Microsoft dem Dynamics AX-Entwickler eine Klasse zur Seite, mit deren Hilfe man w&auml;hrend des Debuggen von Code sich&nbsp;Informationen anzeigen lassen kann, ohne die Infolog-Klasse missbrauchen zu m&uuml;ssen.
</p>
<br /><a class="div_blog_category_gotodetail" href="https://www.schweda.net/blog_ax.php?bid=300" target="_self" title="Weiterlesen...">Weiterlesen...</a>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Mon, 15 Dec 2008 19:45:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=300</link>
<comments>https://www.schweda.net/blog_ax.php?bid=300</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=300</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=300</wfw:commentRss>
</item>
<item>
<title><![CDATA[Dynamics AX: Die Aktualisierung muss im Rahmen einer Buchung ausgeführt werden]]></title>
<description><![CDATA[
<p>...heisst nichts anderes, als da&szlig; man beim Entwickeln <strong>ttsbegin/ttscommit</strong> vergessen hat.
</p>


<p>Eine nicht ganz gl&uuml;cklich ins Deutsche &uuml;bersetzte Fehlermeldung ;-)
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Wed, 12 Nov 2008 16:19:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=294</link>
<comments>https://www.schweda.net/blog_ax.php?bid=294</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=294</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=294</wfw:commentRss>
</item>
<item>
<title><![CDATA[AX 3.0: Shrinker.Err beim Kompilieren]]></title>
<description><![CDATA[
<p>Wer unter Windows XP, Windows Server 2003 oder Windows Server 2008 eine Axapta-Applikation der Version 3.0 kompiliert, kann schon mal &uuml;ber nachstehende Fehlermeldung stolpern.
</p>

<p style="text-align: center"><img title="Shrinker.Err" alt="Shrinker.Err" width="391" height="154" style="border-top: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-bottom: rgb(204,204,204) 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: rgb(204,204,204) 1px solid; padding-right: 3px" src="http://www.schweda.net/pictures/blogpics/ax30_gridex20ocx.jpg" />
</p>

<blockquote>

<p>SHRINKER.ERR <br />
C:\Program Files (x86)\Microsoft Business Solutions\Client\Bin\GridEX2O.ocx (3.4) 10/28/08 13:55:44 - Dispatcher initialisation error trapping exceptions
</p>

</blockquote>

<p>Die L&ouml;sung ist einfach einer neuere Version dieser Datei in das Client\Bin-Verzeichnis zu kopieren. Eine solche findet man z.b. unter <a target="_blank" href="http://www.janusys.com/janus/beta/downloads_patches.htm">http://www.janusys.com/janus/beta/downloads_patches.htm</a>.
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Tue, 28 Oct 2008 17:17:00 +0100</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=290</link>
<comments>https://www.schweda.net/blog_ax.php?bid=290</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=290</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=290</wfw:commentRss>
</item>
<item>
<title><![CDATA[Dynamics AX: Illegal property value]]></title>
<description><![CDATA[
<p>Wenn man in Dynamics AX versucht die Eigenschaft <em>AllowDuplicates </em>eines Tabellen-Indexes von <em>No </em>auf <em>Yes </em>zu &auml;ndern, kann folgende Fehlermeldung auftreten:
</p>

<blockquote>Illegal property value 
</blockquote>

<p>In diesem Fall ist vermutlich der betroffene Index als <em>PrimaryIndex </em>oder <em>ClusteredIndex </em>der Tabelle eingetragen. Eigentlich auch logisch :-)
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Wed, 13 Aug 2008 14:23:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=263</link>
<comments>https://www.schweda.net/blog_ax.php?bid=263</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=263</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=263</wfw:commentRss>
</item>
</channel>
</rss>	
