Auch in Microsoft Dynamics AX kann man mittels ADO (ActiveX Data Objects) auf praktisch jede Art von Datenbanken zugriffen. Die Benutzung ist denkbar einfach und wird durch folgende Objekte gehandhabt.
- CCADOConnection (Datenbankverbindung)
- CCADORecordSet (Datensatzsammlung)
- CCADOFields (Feldsammlung)
- CCADOField (Datenfeld)
Wurde schon eine ODBC Verbindung konfiguriert ist die Verwendung der CCADOConnection denkbareinfach und könnte für eine ODBC Verbindung mit dem Name "altDatenKunden" die Beispielsweise auf eine mySQL Datenbank verweist wie folgt aussehen.
CCADOConnection adoConnection = new CCADOConnection(); adoConnection.open("DNS=altDatenKunden"); Die Parameter werden hier immer als string übergeben und können sich Unterscheiden je nachdem auf welche Datenbank zugegriffen werden soll. Um CCADORecordSet zu inizialisieren muss vorher erst noch eine SQL Anweisung definiert werden. Die SQL Anweisung wird als String zusätzlich zur CCADOConnection dem Konstruktor übergeben.
str SQLstring = "SELECT * From Artikeltabelle"; CCADORecordSet adoRecordSet = new CCADORecordSet();
adoRecordSet.open(SQLstring, adoConnection);
Über adoRecordSet enthält man nun Zugriff auf alle Datensätze aus der Tabelle "Artikeltabelle". Mittels einer Schleifen kann man nun auf jeden einzelen Datensatz zugreifen.
while (!adoRecordSet.EOF()) { adoRecordSet.moveNext(); }
Um nun Zugriff auf die Daten zu erhalten brauchen wir noch CCADOFields, bzw. CCADOField
CCADOFields adoFields; CCADOField adoField;
adoFields = adoRecordSet.fields(); adoField = adoFields.itemName("Artikelnummer");
print adoField.value();
Durch diese Anweisungen wird nun das Feld "Artikelnummer" des aktuellen Datensatzes ausgegeben.
Direkte Zuweisungen zum Datenfeld:
- Über den Feldnamen
adoField = adoFields.itemName("Artikelnummer");
- Über die Feldnummer
adoField = adoFields.itemIDx(1);
Über die Methode
adoFields.count()
erhält man die gesamte Anzahl der Felder, der aktuellen Tabelle und erhält so Zugriff auf jedes einzelne Tabellenfeld auch ohne deren Benennung und/ oder Anzahl zu kennen..
for( i =1 ; i<= adoFields.count() ; i++) { adoField = adoFields.itemIdx(i); print adoField.value(); }
Die Methode value() der Klasse CCADOField gibt den Wert des Feldes immer als den richtigen Axapta Basis Wertetyp (str, int, real usw.) zurück. Somit muss man sich über eine Typenwandlung in der Regel keine Gedanken machen.
Zum Abschluss noch ein komplettes Bespiel.
CCADOConnection Connection; str SQL; CCADORecordSet adoRecordSet; ; // Neue ADO Connection Connection = new CCADOConnection();
// Verdingung zur Datenbank öffnen Connection.open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\altDatenKunde.mdb");
// Neuer RecordSet adoRecordSet = new CCADORecordSet();
// SQL Anweisung sql = strfmt("SELECT * FROM %1","Artikeltabelle");
// Datensatzsammlung mit Verbindung zur Datenbank und anhand der SQL Anweisung adoRecordSet.open(sql, connection);
// Alle Datensätze while (!adoRecordSet.EOF()) { // Ausgabe des Erstfeldes print adoRecordSet.fields().itemIdx(1).value(); // Ausgabe des Feldes "Artikelbestand" print adoRecordSEt.fields().itemName("Artikelbestand").value();
// Nächster Datensatz adoRecordSet.moveNext(); } adoRecordSet.close(); //Recordset schließen Connection.close(); //Connection schlißen pause;
Möchte man nach einem Upgrade von Microsoft Dynamics AX 4.0 auf Microsoft Dynamics AX 4.01 einen neuen Benutzer anlegen erhält man die Fehlermeldung "".
Dies läßt erst einmal auf ein Problem im Quellcode von Microsoft Dynamics AX schließen.
Grund für die Fehlermeldung ist aber kein Fehler im Quellcode, sondern ein fehlerhafter Datensatz in der Tabelle "SysPerimeterNetworkParms". In diesem Datensatz steht im Feld "PNType" ein ungültiger Wert.
Wird dieser Wert auf einen gültigen Wert (None) geändert, können auch wieder neue Benutzer im System angelegt werden.
Folgender Job kann zur Behebung des Problems verwendet werden: (Verwendung auf eigene Gefahr. Es wird keine Garantie oder Haftung für die Funktion und Richtigkeit des Quellcodes gegeben. )
static void CorrectAxaptaUserImportError(Args _args) { SysPerimeterNetworkParams p; DataArea a; ; while select a { changecompany(a.Id) { p = null; ttsbegin; while select forupdate p { p.PNType = PerimeterNetworkType::None; p.update(); } ttscommit; } } }
Im Microsoft PartnerSource ist ein Dokument erhältlich, welchen den Updateprozess beschreibt, der durchzuführen ist, wenn man ein Update von Microsoft Dynamics AX 4.0 auf Microsoft Dynamics AX 4.01 durchführen möchte. Alles in allem ist dieses Dokument eine sehr gute Informationsquelle, die fast alle Einzelheiten, die bei dem Update zu beachten sind, erläutert. Bedauerlich ist nur, dass eine sehr wichtige "Kleinigkeit" nicht in diesem Dokument erwähnt wird. Hält man sich strickt an die Dokumentation, so wird man leider feststellen, dass sich der AOS nach der Installation von Microsoft Dynamics AX 4.01 nicht mehr starten lässt. Es wird zwar ein Eintrag im EventLog erzeugt, dieser ist aber nicht besondern hilfreich (Error 110). Grund für diese Fehlermeldung sind die beiden StoredProzedures die ab Microsoft Dynamics AX Version 4.0 in jeder Microsoft Dynamics AX Datenbank vorhanden sein müssen. Da die Datenbank an sich nicht "geupdatet" wird, werden diese SP`s ebenfalls nicht geändert und bleiben damit auf dem Stand von Microsoft Dynamics AX 4.0. Und leider scheint Microsoft Dynamics AX 4.01 genau mit diesen SP`s nicht zusammen arbeiten zu können. Die Lösung des Problems gestaltet sich zum Glück recht einfach: Die SP's müssen einfach nur gegen die beiden SP's einer Microsoft Dynamics AX 4.01 Datenbank ausgetauscht werden und schon funktioniert der AOS wie erwartet.
Wie schon unter "Screenshots von Dynamics AX Masken erstellen" beschrieben, war es auch schon zu Dynamics AX 3.0 möglich, automatisierte Screenshots von Dynamics AX Masken erzeugen zu lassen, um diese dann später in seinen Dokumentationen zu verwenden. Leider enthält Dynamics AX 4.0 die hierfür benötigten Klassen nicht mehr. Allerdings soll bald ein Tool für Dynamics AX 4.0 erscheinen (TaskRecorder), welches diese und noch weitaus mehr Funktionalitäten bietet. Wer sich dieses Toll einmal genauer ansehen möchte und einen PartnerSource-Zugang besitzt, der kann sich im PartnerSource eine Beta Version dieses Tools downloaden. Genaue Informationen über den TaskRecoder (Features, Installation, etc.) können ebenfalls über das PartnerSource bezogen werden. Nach meinen ersten Erfahrungen wird hiermit eine gute Basis geschaffen um eine einheitliche und schnell zu erstellende Dokumentation von Prozessen und Anpassungen zu erstellen.
Wenn die MSDB Datenbank eines SQL Servers einen Datenbankfehler meldet und man keine funktionierende / fehlerfreie Sicherung hat, stellt dies meist ein größeres Problem dar, da diese nicht mit DBCC CHECKDB repariert werden kann.
Abhilfe schafft meist nur das neu Erstellen der gesamten MSDB Datenbank.
(Leider gehen hierbei unter anderem die eingerichteten Sicherungsjobs verloren)
Die MSDB kann wie folgt beschrieben neu erstellt werden (SQL Server 2000):
- Im SQL Server Enterprise Manager die Eigenschaften des Datenbankservers öffnen.
(Rechtsklick auf den Datenbankserver -> Eigenschaften)
- Auf dem Reiter „Allgemein“ auf den Button „Startparameter“ klicken.
- Den Parameter "-T3608" hinzufügen.
- Den Datenbankserver stoppen und neu starten.
- Überprüfen, dass der SQL Server Agent gestoppt ist.
- Die MSDB Datenbank auswählen und über „Extras -> SQL Query Analyzer“ den QueryAnalyzer starten.
- Die MSDB Datenbank mit folgendem Skript abhängen
use master go sp_detach_db ‚msdb’ go
- Die defekte MSDB Datenbank (msdbdata.mdf, msdblog.ldf) löschen oder umbenennen (auf Fileebene).
- Das "instmsdb.sql" Skript mit dem QueryAnalyzer ausführen.
(Liegt unter: …\Microsoft SQL Server\MSSQL\Install)
- Im SQL Server Enterprise Manager wieder den Startparameter "-T3608" entfernen.
- Den Datenbankserver stoppen und neu starten.
Jetzt sollte wieder eine funktionierende und fehlerfreie MSDB Datenbank vorliegen.
Bei einem SQL Server 2005 sollte dies genau so funktionieren.
Ein weiteres Problem beim Update auf die neue Version Microsoft Dynamics AX 4.0 kann der Name des Unternehmenskontos sein. Wird ein Unternehmenskonto verwendet, dass in seinem Namen ein „&“ enthält, z.B. „A&B“, werden einige Prozesse beim „Datenaktualisierung nachsynchronisieren“ mit einem Fehler abgebrochen. Im Ereignislog ist dann ein Eintrag des Dynamics AX 4.0 Servers zu finden, der wie folgt lautet (Ausschnitt): „…[Microsoft][ODBC SQL Server Driver][SQL Server]Falsche Syntax in der Nähe von '&'.. The SQL statement was…“ Daraus wird ersichtlich, das dass „&“ Zeichen als SQL Statement erkannt wird und die SQL Anweisung so fehlerhaft interpretiert wird. Dieses Problem kann nur gelöst werden, indem man in dem zu updatenden Microsoft Dynamics AX 3.0 ein neues Unternehmenskonto erstellt das kein „&“ Zeichen beinhaltet (Am einfachsten geht dies mit der Dublizierfunktion der Unternehmenskonten).
Für die Planung und Durchführung eines Updates stehen folgende Informationsquellen zur Verfügung:
- Microsoft Dynamics AX Upgrade Tools Guide (PDF Dokument, Erhältlich im PartnerSource)
- Microsoft Dynamics AX 4.0 Implementation Guide (CHM File, Dynamics AX 4.0 Dokumentation)
- Inside Microsoft Dynamics AX 4.0 (Buch, Microsoft Press)
Diese enthalten eine gute Beschreibung der einzelnen Schritte die erforderlich sind, um von der Version 3.0 auf die Version 4.0 von Microsoft Dynamics AX zu updaten.
Allerdings können noch einige Probleme bei dem Updateprozess entstehen, die leider nicht Besprochen werden und für die auch in den bekannten Newsgroup, Blogs und Communitys noch keine Lösungsvorschläge gibt.
So sollte ein Upgrade immer in dem Layer durchgeführt werden, in dem die Anpassungen durchgeführt wurden (z.B. CUS oder VAR). Dies hat zur Folge das man u.U. die Anwendung mehrfach kompilieren muss, da man erst nach dem einlesen der Lizenzdatei zugriff auf diese Layer erhält.
Weiterhin kann man beim Durchführen der Synchronisierung folgenden Fehler erhalten: "Cannot execute a data definition language command on (). The SQL database has issued an error."
Ursache hierfür kann sein, dass der ConfigurationKey "CSESpain" ist in dem Microsoft Dynamics AX 3.0 System, welches geupdatet werden soll, nicht angeschaltet ist/war. Dadurch sind drei Felder ("Action", "CustVendParameter", "CustVendAccount") der Tabelle "SalesPurchaseCycle" deaktiviert, die allerdings den eindeutigen Index "SalesPurchaseCycle" bilden. Dadurch werden Datensätze in die Tabelle geschrieben, die nicht dem eindeutigen Index entsprechen. Beim Update auf Microsoft Dynamics AX 4.0 wird dieser Index überprüft bzw. neu geschrieben und das Synchronisieren wird mit einem Fehler abgebrochen, da die Datensätze der Tabelle nicht eindeutig sind.
Das Problem kann gelöst werden, indem man auf der Tabelle "SalesPurchaseCycle" den eindeutigen Index "SalesPurchaseCycleIdx" auf "Enabled = NO" setzt. Anschließend sollten alle Datensätze in dieser Tabelle in allen Unternehmen gelöscht werden und der Index "SalesPurchaseCycleIdx" wieder auf "Enabled = YES" gesetzt werden.
Die Deaktivierung des ConfigurationKey "CSESpain" reicht leider nicht aus, da es dann zu Problemen beim "Datenaktualiserung nachsynchronisieren" kommen kann, da dort die einzelnen Datensätze überprüft werden (5 Prozesse werden deswegen mit einem Fehler beendet).
Weiterhin sei noch angemerkt, dass alle Anpassungen in Bereich der "Forms" zu erheblichen Problemen beim Codeupgrade führen können. Viele Formelemente wurden in der neuen Version 4.0 unbenannt, was dazu führen kann, dass eine einzige Anpassung (z.B. Änderung nur einer Formproperty) mehrere hundert Fehler erzeugen kann.
Bsp.: Änderung einer Property der Form "CompanyInfo" im upzudatenden Microsoft Dynamics AX 3.0 System führte zu 126 Fehlern im Microsoft Dynamics AX 4.0 System.
Deswegen sollte man vor einem Update genauestens überlegen/überprüfen, ob es überhaupt Sinn macht die getätigten Anpassungen mit zur neuen Version (4.0) zu migrieren.
Oft können getätigte Anpassungen durch Erweiterungen im Standard abgelöst werden, die eine ähnliche Funktionalität bieten. In machen Fällen ist es unter Berücksichtigung der benötigten Zeit sogar Sinnvoller, die Anpassung erneut im Microsoft Dynamics AX 4.0 System vorzunehmen.
Eine Migration der Anpassungen sollte nur in Erwägung gezogen werden, wenn keine andere Lösung gefunden werden kann.
Auszug aus der aktuellen Pressemitteilung von Microsoft:
Microsoft gibt Startschuss für Microsoft Dynamics AX 4.0
Microsoft bietet die neue Version der kaufmännischen Software Microsoft Dynamics AX ab sofort auf dem deutschen Markt an. Microsoft Dynamics AX 4.0 ist eine anpassbare Businessmanagementlösung, die Unternehmen hilft, fundierte und profitable Geschäftsentscheidungen zu treffen. Die Software, deren Nutzeroberfläche allen anderen Produkten von Microsoft gleicht, lässt sich nahtlos mit Microsoft Office 2003 und der Microsoft Windows Server System-Familie verzahnen. Microsoft Dynamics AX 4.0 richtet sich an mittelständische Unternehmen und den gehobenen Mittelstand.
mehr unter:
http://www.microsoft.com/germany/presseservice/detail.mspx?id=531742
Im Mai 2007 soll im Vieweg Verlag ein neues Buch über Microsoft Dynamics AX 4.0 erscheinen.
Der Schwerpunkt des Buches soll auf den Grundlagen von Dynamics Ax 4.0 und den Neuerungen zur Vorgängerversion liegen. Genaueres ist noch nicht bekannt.
Oft wird ein Export von Dynamics AX Daten in ein Exceldokument benötigt. Z.B. für einfache Auswertungen oder für Datenimporte in andere Systeme.
Hier ein kurzes Beispiel, wie man aus Dynamics AX ein neues Exceldokument per Code erstellen kann.
static void CreateExcelDokument(Args _args) { SysExcelApplication xlsApplication; SysExcelWorkBooks xlsWorkBookCollection; SysExcelWorkBook xlsWorkBook; SysExcelWorkSheets xlsWorkSheetCollection; SysExcelWorkSheet xlsWorkSheet; SysExcelRange xlsRange; CustTable custTable; int row = 1; str fileName; ; // Name des Exceldokuments. fileName = "C:\\test.xsl";
// Excel initalisieren und öffnen. xlsApplication = SysExcelApplication::construct(); xlsApplication.visible(true);
// Neues Excel Worksheet erzeugen. xlsWorkBookCollection = xlsApplication.workbooks(); xlsWorkBook = xlsWorkBookCollection.add(); xlsWorkSheetCollection = xlsWorkBook.worksheets(); xlsWorkSheet = xlsWorkSheetCollection.itemFromNum(1);
// Zellenüberschriften in das Worksheet schreiben. xlsWorkSheet.cells().item(row,1).value('Account Num'); xlsWorkSheet.cells().item(row,2).value('Name');
row++;
// Excel Worksheet mit Daten füllen (Excel-Zellen füllen). while select custTable { xlsWorkSheet.cells().item(row,1).value(custTable.AccountNum); xlsWorkSheet.cells().item(row,2).value(custTable.Name); row++; }
// Prüfen ob das Dokument schon existiert. if(WinApi::fileExists(fileName)) { WinApi::deleteFile(fileName); }
// Excel Dokument speichern. xlsWorkbook.saveAs(fileName);
// Excel schließen. xlsApplication.quit(); xlsApplication.finalize(); }
Seit ende Juli / Anfang August steht auch die lokalisierten Versionen von Microsoft Dynamics AX 4.0 für Microsoft Partner bereit, die einen PartnerSource Zugang haben.
Lokalisierungen stehen u.a. für volgende Länder zur Verfügung
Denmark France Germany Great Britain Ireland
Eine ausführliche Liste ist ebenfalls im PartnerSource erhältlich.
Wer auf der Suche nach Dokumentation zu / über Dynamics Ax 4.0 ist, sollte mal einen Blick auf diese Seite werfen: Using Microsoft Dynamics AX
Um den Text, der in der Titelleiste des Dynamics AX Clients angezeigt wird, zu ändern muss man folgendes machen:
- Auf dem Clientrechner in das Axapta Client Installationsverzeichnis wechseln.
- Im Unterverzeichnis "Client\Bin" die Datei "Axsys$$.KTD" mit einem Texteditor öffnen.
($$ steht hierbei für das entsprechde Länderkürzel. Z.B. de)
- Das Label "#1076" wie gewünscht anpassen.
Nach einem (Neu)Start des Dynamics AX Clients wird nun der in dem Label eingetragene Text in der Titelleiste des Dynamics AX Clients angezeigt.
Mit dieser Property lässt sich bestimmen, ob ein Feld ein Eingabe- oder Suchfeld sein soll. Dies ist gerade bei der Verwendung von Gridcontrols hilfreich, da keine zusätzlichen Filter- oder Suchfunktionen eingebaut werden müssen.
Die Property kann folgende Werte annehmen:
Eingaben in diesem Feld ist möglich. Das Feld ist somit ein Eingabe und kein Suchfeld
Das Feld ist ein Suchfeld. Eingaben in die Datenbank sind über dieses Feld nicht mehr möglich.
Wird in dem Feld eine Eingabe vorgenommen, wird nach dem Verlassen des Datensatzes eine Abfrage der Datenbank durchgeführt. Es werden der Feldeingabe entsprechende Datensätze angezeigt. Es wird auf den eingegebenen Wert gefiltert.
Das Feld ist ein Suchfeld. Eingaben in die Datenbank sind über dieses Feld nicht mehr möglich.
Sobald in diesem Feld eine Eingabe erfolgt, wird automatisch zu dem der Eingabe entsprechenden Datensatz gesprungen. Gleiches verhalten wie im AOT.
Es ist nicht gerade einfach, einen Screenshot einer einzelnen Maske (z.B. Debitoren) von Dynamics Ax zu erstellen.
Verwendet man die Windows-Boardmittel, ist in dem erzeugten Screenshot immer der gesamte Dynamics AX Bildschirm enthalten. Da Dynamics AX eine MDI Anwendung ist, erkennt Windows immer nur den gesamten Dynamics AX Bildschirm und nicht wie gewollt, die in diesem "Hauptbildschirm" aktive Dynamics AX Maske (z.B. Debitoren).
Abhilfe kann hier mit zahlreichen zusätzlichen Tools geschaffen werden, die es ermöglichen, nur einen bestimmten Bildschirmausschnitt in den Screenshot zu übernehmen (z.B. Hardcopy oder Paintshop Pro).
Aber geht das nicht doch etwas einfacher?
Klare Aussage: Ja es geht einfacher! Dynamics AX ist in der Lage, automatisch von einer oder mehreren Masken gleichzeitig (natürlich einzeln und nacheinander) Screenshots zu erzeugen.
Der AOT von Dynamics AX beinhaltet unter dem Zweig "Forms" die Form "sysDocCaptureForm" sowie im Zweig "Menuitems/Display" das gleichnamige MenuItem. Öffnet man eines dieser beiden Objekte, öffnet sich die Maske "Erfassungsserie", die stark an ein übliches Journal erinnert. Hier kann eine Art "Erfassungsjournal für Screenshots" angelegt werden. Es können allgemeine Informationen wie Ablageverzeichnis für die Screenshots im Dateisystem oder deren Format bestimmt werden. Über den Button "Schritte" kommt man zu der Maske "Schritte erfassen", auf der die einzelnen Masken bestimmt werden können, von denen automatisch Scrennshots erstellt werden sollen. Die Screenshots können schließlich über den Button "Erfassen" auf der Maske "Erfassungsserie" erstellt werden. Hilfreich für die Erstellung automatischer Screenshots ist die Funktion, von jedem Reiter einer Maske einen neuen Screenshot zu erstellen. Dies kann mit dem Haken "Erfassen" auf der Maske "Schritte erfassen" eingestellt werden.
Nach meiner Meinung ein nettes kleines Feature, was die Arbeit durchaus erleichtern kann. Schade ist nur, dass der Dynamics AX Standard keine "direkte" Aufrufmöglichkeit hierfür bietet.
Es gilt aber noch anzumerken, dass man für die Verwendung dieses Tools die Berechtigung auf dem SecurityKey "SysDevelopmentMorphX" braucht.
Jeder der sich mit Entwicklung von Software auf mobilen Geräten beschäftigt, hat sich bestimmt schon einmal die Frage gestellt, warum die Enterprise Library, nicht auch für das .NET Compact Framework erhältlich ist.
Nun ja, es wird wohl daran gelegen haben, dass die eine oder andere Funktion die man hierfür brauchte gerade mal wieder nicht im .NET Compact Framework enthalten war, oder dass man sein Problem gar nicht damit lösen konnte, weil man auf einem mobilen Gerät doch eine etwas andere Architektur verwenden sollte.
Von der patterns & practices group von Microsoft wurde nun die Mobile Client Software Factory als CTP veröffentlicht.
Einen ersten Überblick verschafft dieser Artikel des MSDN.
Ein kleiner Auszug aus dem Artikel:
"With the Mobile Client Software Factory, architects and developers can quickly incorporate many of the proven patterns and practices of mobile client development. The offering provides you with a set of proven practices that are exposed through patterns, How-to topics, reference implementations, Visual Studio Guidance Automation Toolkit packages, reusable components, and documentation. The factory content guides you through the development of mobile applications based on the Compact Composite User Interface Application Block architecture. By using the factory, architects and developers can focus more of their efforts on implementing business requirements."
So wie ich finde, sind darin einige sehr gut zu verwendende Blocks enthalten, die sich jeder "mobile" Entwickler genauer ansehen sollte.
Das erste Buch über das neue Microsoft Dynamics AX 4.0 soll so im August-September 2006 über Microsoft Press veröffentlicht werden.
Sprache: englisch ISBN: 0-7356-2257-4 Preis: ca. 60-70 EUR
Das Buch soll folgende Themen behandeln (engl. Orginalauszug):
Dive deep in to the architectural details of Microsoft Dynamics AX to make relationships clear and development tasks easier. The first part of the book is aimed at consultants and developers who are new to Microsoft Dynamics AX but have backgrounds in business application development using traditional languages, frameworks, and tools.
It describes the architecture and development environment and explains key application frameworks that developers need for their customization, extension, and integration projects. The second part of the book is a reference guide for developers who work with Microsoft Dynamics AX deployments, with information on developing new functionality and supporting users.
It covers more complex development concepts such as advanced forms and reports, reflection over the application metadata, performance, upgrades, migration, and setup. This is the first book written by the Microsoft product group architects and the first to take developers deep inside Microsoft Dynamics AX.
Wie auf den Webblogs von Tom Braekeleirs (MBS), Pale Agermark (MBS) sowie Satya Nadella (MBS) zu lesen ist, ist die neue Version von Microsoft Dynamics Ax (endlich) fertig (Microsoft Dynamics Ax 4.0).
Für alle MBS Partner, die Zugang zum PartnerSource oder MSDN haben, soll diese dann ab Montag zum download bereit stehen.
Seit Heute ist das Microsoft Dynamics AX 3.0 Kernel Rollup 2 verfügbar. Es kann über die PartnerSource Webseite bezogen (download) werden.
Ein kurzer Auszug aus der Fix- bzw. Änderungsliste:
- Erweiterte PDF Funktionalität
- SQL 2005 Stabilisierung
- AOS/COM Stabilisierungen
- Memofelder und Unicode
Eine ausführliche Fixliste ist in dem Download des Kernel Rollup 2 enthalten.
Wichtig ist aber, dass das Kernel Rollup 2 nur auf Dynamics Ax 3.0 Systemen installiert werden darf, die mindestens das Service Pack 2 installiert haben.
Um auf einen Dynamics Ax Object Server, der durch eine Firewall gesichert ist, zugreifen zu können müssen in der Firewall folgende Regeln vorhanden sein.
1. Allow all incoming TCP traffic on AOS Port to AOS IP. 2. Allow all outgoing TCP traffic. 3. Allow all incoming UDP traffic on Port 2712 to AOS IP.* 4. Allow all outgoing UDP traffic.*
Weiterhin muss die Firewall UDP NAT unterstützen.*
Möchte man weiterhin noch eine lokale Firewall auf den jeweiligen Clients betrieben sollte diese wie folgt Konfiguriert sein.
1. Allow all outgoing TCP traffic on AOS Port to AOS IP. 2. Allow all incoming TCP traffic for Dynamics Ax Client (ax32.exe). 3. Allow all outgoing UDP traffic on Port 2712 to AOS IP.* 4. Allow all incoming UDP traffic for Dynamics AX Client (ax32.exe).*
* Sollte die verwendete Firewall kein UDP NAT untestützen bzw. sollten die entsprechenden UDP Regeln nicht eingepflegt werden können, besteht noch die Möglichkeit, dass man dem Dynamics Ax Client mittels -aos=host:port direkt einem AOS zuweißt. Damit versendet der Dynamics AX Client keine Broadcast mehr über UDP, um die im Netz befindlichen Dynamics AX Object Server zu ermitteln, sondern Verbindet sich direkt mit dem über "host:port" angegebenen AOS. Allerdings gibt es hierbei die Einschränkung, dass keine AOS Cluster verwendet werden können, da der Client sich immer auf den angegebenen AOS verbindet.
Dynamics Ax erlaubt das mehrmalige Anmelden unter einer Benutzerkennung. So kann ein Benutzer eine beliebige Anzahl an Sitzungen mit seiner Benutzerkennung öffnen.
Möchte man aber die mögliche Anzahl an Sitzungen unter einer Benutzerkennung begrenzen, ist dafür eine Anpassung der Info Klasse notwendig.
Fred Shen beschreibt in seinem Blog, wie diese Anpassung auszusehen hat.
Langsam ist der Zeitpunkt gekommen, zu dem sich auch ein Dynamics Ax Entwickler mit dem Thema .NET beschäftigen sollte.
Ich stimme fast jedem zu der sagt, dass man bei Dynamics Ax 3.0 eigentlich keinerlei .NET Kenntisse benötigt. Allerdings wird sich das mit Dynamics Ax 4.0, durch die erweiterte Integration zwischen Dynamics Ax und .NET, ändern.
Deshalb sollte man nicht auf den Release von Dynamics Ax 4.0 warten, sondern sein Wissen schon jetzt erweitern.
Einen guten Einstieg in die .NET Welt bietet die MSDN Webcast-Serie von Bernd Marquardt, Get Sharper Now! - C# für Einsteiger und Umsteiger (ich gehe davon aus, dass die Sprache C# die erste Wahl sein wird, jedenfalls für die meisten Dynamics Ax Entwickler).
Oft muss von Dynamics Ax aus z.B. auf eine Datei zugegriffen werden. Hierbei muss man beachten, dass die Pfadangabe zu der Datei eine Escape-Sequenz darstellt/enthält.
Bsp.: str file = "C:\\test\\test.csv";
Es existiert aber eine, soweit mir bekannt allerdings undokumentierte, Möglichkeit den Dateipfad auch ohne Escapezeichen anzugeben (raw string).
Bsp.: str file = @"C:\Test\test.csv";
Zusätzlich kann man bei Verwendung von @"" auch Zeilenumbrüche innerhalb des String zu verwenden/schreiben.
Bsp.: str text = @"Das ist ein Text mit mehr als einer Zeile";
Hallo und Willkommen auf meinem gerade frisch eingerichteten Blog.
Ich möchte diesen Blog nutzen, um ein paar Informationen und Tips aus den verschiedensten Bereichen, allerdings mit Schwerpunkt auf Microsoft Dynamics Ax (ehemals Microsoft Business Solutions Axapta), zu geben.
Kommentare, Meinungen und Anregungen sind immer willkommen.
|