Dynamics AX Blog - Beiträge von 2008 - Seite 3
Dynamics AX 2009: Bug im Datenbank synchronisieren-Formular
18.08.2008Microsoft Dynamics AX (Axapta)
|
Dynamics AX 2009: Tip für die Installation
17.08.2008Microsoft Dynamics AX (Axapta)
Da es mir leider passiert ist: Während der Installation von Dynamics AX 2009 muss man ein Konto für den AOS eingeben. Dieses Benutzer-Konto muß unbedingt der SecurityAdmin-Rolle des SQL-Servers angehören! Steht zwar eh genauso im Upgrade Guide, habs aber trotzdem beim ersten Mal überlesen... |
Dynamics AX 2009: Fehler bei AxDBUpgrade.exe
14.08.2008Microsoft Dynamics AX (Axapta)
Im Rahmen eines Upgrades einer Dynamics AX 3.0-Installation auf Dynamics AX 2009 trat folgender Fehler während des Ausführens des Microsoft Dynamics AX DB Upgrade Prepartion Tools (AxDBUpgrade.exe) auf: The application failed to initialize properly (0xc0150002). Click on OK to terminate the application. Die Lösung für dieses Problem war, das auf der Installations-CD von AX 2009 enthaltenen Microsoft Visual C++ Redistributeable Package (x86) zu installieren. Dieses wird übrigens spätestens beim eigentlichen Setup von AX 2009 mitinstalliert.
|
Dynamics AX: Illegal property valueWenn man in Dynamics AX versucht die Eigenschaft AllowDuplicates eines Tabellen-Indexes von No auf Yes zu ändern, kann folgende Fehlermeldung auftreten: Illegal property value In diesem Fall ist vermutlich der betroffene Index als PrimaryIndex oder ClusteredIndex der Tabelle eingetragen. Eigentlich auch logisch :-) |
Dynamics AX: Das RunBaseBatch-Framework
09.08.2008Microsoft Dynamics AX (Axapta)
Man braucht es immer wieder, und genau darum findet Ihr im folgenden eine kurze - und bestimmt auch nicht ganz vollständige - Übersicht, wie dieses RunBaseBatch-Framework benutzt werden kann. Erste Anlaufstelle sollte übrigens in jedem Fall die Klasse Tutorial_RunBaseBatch sein, dort werden die wichtigsten Methoden verwendet und man kann sich so zumindest einen groben Überblick verschaffen, was wie möglich ist. Um eine stapelverarbeitungsfähige Klasse zu schaffen, ist diese in erster Linie von RunBaseBatch abzuleiten. Dadurch stehen eine Reihe von Methoden zur Verfügung, von welchen ich einige versuche im Folgenden zu erklären. |
Dynamics AX: Warten auf das Vorhandensein einer Datei
29.07.2008Microsoft Dynamics AX (Axapta)
Manchmal ist es notwendig, in AX externe Programme (zb. per WinApi::shellExecute) aufzurufen und deren Rückmeldung abzuwarten. Mir ist z.B. in letzter Zeit immer wieder der Fall untergekommen, daß ich über ein externes Programm eine Datei erstellen musste, und diese anschließend in AX einlesen bzw. weitervearbeiten musste. Für diesen Fall habe ich eine ganz simple Logik gebastelt, die eine bestimmte Anzahl Sekunden lang prüft, ob es die benötigte Datei schon gibt und erst dann mit den weiteren Schritten fortfährt. static void WaitForFileExists(Args _args) { int startTime; int endTime; int seconds2Wait = 5; boolean fileExists = false; fileName searchFileName = "c:\\temp\\ax.txt"; ; startTime = timeNow(); endTime = startTime + seconds2Wait; while (!fileExists && timeNow() <= endTime) { fileExists = WinApi::fileExists(searchFileName); } // ...continue... if(fileExists) { info(strFmt("File '%1' exists", searchFileName)); } else { warning(strFmt("File '%1' does not exist and time is up", searchFileName)); } } |
Dynamics AX: Container Quicktipp
24.07.2008Microsoft Dynamics AX (Axapta)
Container sind ja was feines, und aus diesem Grund verwende ich sie immer wieder gerne beim Programmieren unter Dynamics AX. Durch einen Blog-Beitrag bei SysDictCoder bin ich auf einen kleinen Trick gestossen, der mir in Zukunft etwas Tipp-Arbeit ersparen wird. Und zwar habe ich bisher Container immer ähnlich wie im folgenden befüllt: container fieldCon = conNull();
; fieldCon = conIns(fieldCon, conLen(fieldCon)+1, "accountNum"); fieldCon = conIns(fieldCon, conLen(fieldCon)+1, "name"); fieldCon = conIns(fieldCon, conLen(fieldCon)+1, "zipcode"); fieldCon = conIns(fieldCon, conLen(fieldCon)+1, "countryregionid"); fieldCon = conIns(fieldCon, conLen(fieldCon)+1, "county"); Wesentlich rascher ist die folgende Schreibweise: container fieldConFast = conNull();
; fieldConFast += "accountNum"; fieldConFast += "name"; fieldConFast += "zipcode"; fieldConFast += "countryregionid"; fieldConFast += "county"; SysDictCoder geht in seinem Artikel etwas mehr ins Detail, deshalb meine Empfehlung dort mal vorbeizuschauen. |
|
|
|
|
|
|
Während des Upgrades einer bestehenden Dynamics AX-Installation kommt man zwangsläufig mit der Maske Datenbank synchronisieren in Berührung. In dieser Maske werden einem pro Tabelle alle Fehler, Warnungen und Infos angezeigt, die während der Synchronisierung auftreten können. Und dazu gibt es meist einen recht aussagekräftigen Text.
So bleibt einem also nichts anderes übrig, als sich die Ergebnisse der Synchronisierung auszudrucken. In meinerm Fall wären das über 350 Seiten gewesen...
Da hat leider die Qualitätsicherung versagt.