Dynamics AX Blog - Dynamics AX 2009 - Beiträge von 2008

RSS-Feed dieser Version
Dynamics AX: Excel-Datei einlesenVor kurzem musste ich mich gezwungenermaßen damit beschäftigen, wie man aus einer Excel-Datei Daten in AX einliest. Deshalb nun im folgenden ein Job mit einer Art Grundgerüst, wie man so etwas in X++ lösen kann. static void importFromExcel(Args _args) { Filename fileNameExcel = "C:\\temp\\file.xls"; SysExcelApplication sysExcelApplication; SysExcelWorkbooks sysExcelWorkbooks; SysExcelWorksheets sysExcelWorksheets; SysExcelWorksheet sysExcelWorksheet; SysExcelRange sysExcelRange; SysExcelCells sysExcelCells; SysExcelWorkbooks sysExcelWorkBooksCollection; str column_a; str column_b; str column_c; str column_d; int i = 0; #Excel ; sysExcelApplication = SysExcelApplication::construct(); sysExcelWorkbooks = sysExcelApplication.workbooks(); sysExcelWorkbooks.open(fileNameExcel); sysExcelWorksheets = sysExcelApplication.worksheets(); sysExcelWorksheet = sysExcelWorksheets.itemFromNum(1); sysExcelRange = sysExcelWorksheet.rows(); sysExcelCells = sysExcelWorksheet.cells(); try { ttsbegin; while (sysExcelCells.item(i+1, 1).value().variantType() != ComVariantType::VT_EMPTY) // In der Annahme, dass die erste Spalte nicht leer ist { i++; column_a = sysExcelCells.item(i, 1).value().bStr(); column_b = sysExcelCells.item(i, 2).value().bStr(); column_c = sysExcelCells.item(i, 3).value().bStr(); column_d = sysExcelCells.item(i, 4).value().bStr(); // ... do something ... } ttscommit; info("Finished"); sysExcelApplication.quit(); sysExcelApplication = null; } catch (Exception::Error) { sysExcelApplication.quit(); sysExcelApplication = null; } } |
Dynamics AX: Die Aktualisierung muss im Rahmen einer Buchung ausgeführt werden
12.11.2008Microsoft Dynamics AX (Axapta)
...heisst nichts anderes, als daß man beim Entwickeln ttsbegin/ttscommit vergessen hat. Eine nicht ganz glücklich ins Deutsche übersetzte Fehlermeldung ;-) |
Dynamics AX 2009: AxDBUpgrade.exe
29.10.2008Microsoft Dynamics AX (Axapta)
Kleiner Tip zum Microsoft Dynamics AX DB Upgrade Prepartion Tool (AxDBUpgrade.exe): Im Upgrade-Guide wird erwähnt, daß man dieses Tool am Datenbank-Server starten sollte, aus meiner Erfahrung heraus ist dies fast schon ein Muss! Ansonsten begegnet man diversen Fehlermeldungen wie z.B. SqlState 37000, NativeError 8180 |
Dynamics AX 2009: Datenbank-Synchronisation schlägt fehl
25.10.2008Microsoft Dynamics AX (Axapta)
Beim Upgraden einer Dynamics AX 4.0-Installation auf AX 2009 hatte ich beim Schritt "Datenbank synchronisieren" der Aktualisierungscheckliste eine Fehlermeldung, daß vier Tabellen nicht synchronisiert werden konnten. Ein Befehl der Datendefinitionssprache kann nicht für () ausgeführt werden. |
Dynamics AX 2009: Wieviele Leerzeichen sind ein Tab?
11.09.2008Microsoft Dynamics AX (Axapta)
Seit Generation von Entwicklern sind sie ein ewiger Diskussionspunkt: Tabulatoren im Code und aus wievielen Leerzeichen sie bestehen sollen. In den meisten Entwicklungssystemen ist dies frei definierbar, und so hat jeder Entwickler die Möglichkeit, dies nach seiner persönlichen Vorliebe einzustellen, was in Entwicklungsteams nicht selten zu den erwähnten Diskussionen führt. Neu für mich ist, daß sich nun auch die Best-Practice-Prüfung von Dynamics AX 2009 an dieser Stelle einmischt! So wird dem einen oder anderen Entwickler u.U. folgende Fehlermeldung über den Weg laufen: Falsche Einrückung. Einrückung muss ein Vielfaches von 4 sein. Abschließend also nun die Antwort auf die gestellte Frage: 1 Tab = 4 Leerzeichen. Basta! ;-) |
Dynamics AX: Display-Methoden absichern
02.09.2008Microsoft Dynamics AX (Axapta)
Dynamics AX sieht Display-Methoden prinzipiell als Sicherheitsrisiko an. Verständlicherweise, schließlich kann Dynamics AX an dieser Stelle nicht prüfen, ob der Benutzer überhaupt die notwendigen Berechtigungen hat, um die Ausgabe solcher Methoden zu sehen. |
|
|
|
|
|
|
Mit der Debug-Klasse stellt Microsoft dem Dynamics AX-Entwickler eine Klasse zur Seite, mit deren Hilfe man während des Debuggen von Code sich Informationen anzeigen lassen kann, ohne die Infolog-Klasse missbrauchen zu müssen.