Dynamics AX Blog - Beiträge vom Dezember 2009

Momentan angezeigt werden nur Beiträge vom »Dezember 2009«. Filter entfernen

Unterschied zwischen weekOfYear() und wkOfYr()

In Dynamixs AX stehen dem Entwickler zwei Methoden zur Verfügung, die zur Berechnung der Kalenderwoche dienen: weekOfYear und wkOfYr.

Der Unterschied zwischen den beiden ist, daß die Methode weekOfYear die Kalnderwoche nach amerikanischem Vorbild berechnet. Dieser Standard legt die erste Woche als jene fest, in die der 1. Januar fällt.

Für den deutschsprachigen Raum sollte die - der ISO 8601 entsprechenden - Methode wkOfYr verwendet werden. Nach dieser Norm ist die erste Woche jene, die den ersten Donnerstag des Jahres enthält.


 
 
 

Was man bei Base Enums beachten sollte

Schon einmal einen Base Enum in Dynamics AX erstellt? Oder einen bestehenden erweitert?

Ja?! Dabei auch auf das folgende geachtet?

.) Das erste Element eines Base Enums sollte den Wert 0 aufweisen und dieser sollte "Undefiniert", "Kein", "Unbekannt" oder ähnlichem entsprechen. Vor allem wenn man den Base Enum später in Tabellen verwenden möchte, die bereits Daten enthalten.
Selbst wenn man davon ausgehen kann, daß man einen solchen undefinierten Zustand nicht benötigt, sollte man die 0 reserviert halten, sprich der erste "echte" Wert des Base Enums sollte 1 entsprechen.


 
 
 

Beispiele für SQL-Statements aus AX heraus

Nachstehend Beispiele für den Zugriff auf die AX-Datenbank per SQL-Statement, diese Zugriffe müssen im übrigen immer serverseitig erfolgen (runOn-Property).

Beispiel für ein SELECT-Statement

public void run()
{
    Connection                      connection = new Connection();
    Statement                       stmt = connection.createStatement();
    sqlStatementExecutePermission   sqlStatementExecutePermission;
    str                             sqlStmt;
    resultSet                       resultSet;
    ;
    
    sqlStmt = "SELECT accountNum, name, creditMax FROM custTable;";
    
    sqlStatementExecutePermission = new SqlStatementExecutePermission(sqlStmt);
    sqlStatementExecutePermission.assert();     resultSet = stmt.executeQuery(sqlStmt);

    while (resultSet.next())
    {
        info(strFmt("%1 %2 %3", resultSet.getString(1), resultSet.getString(2), resultSet.getReal(3)));
    }
    CodeAccessPermission::revertAssert();
}

Übrigens: Wenn folgender Fehler beim Abfragen des resultSets auftritt, kann die Ursache ein ungültiges SQL-Statement sein!

Ein Datensatz in  () kann nicht ausgewählt werden.
Die SQL-Datenbank hat einen Fehler gemeldet.


 
 
 

Bearbeiten von Formularfeldern beschränken

Hinweis: Zu diesem Thema ist eine aktuellere Version verfügbar

Sollen in einem Formular nur bestimmte Felder zur Bearbeitung freigegeben sein, kann man die Eigenschaft allowEdit sämtlicher Felder der DataSource der Tabelle entsprechend umsetzen.

Einfacher geht’s mit folgendem Codebeispiel, welches in der init-Methode der DataSource eingebunden wurde und - im konkreten Fall in der Tabelle SalesLine - nur bei einem einzigen Feld die Bearbeitung erlaubt.

public void init()
{
    sqlDictionary   sqlDictionary;
    ;
   
    super();

    while select sqlDictionary
    where sqlDictionary.tabId   == tableNum(salesLine)
       && sqlDictionary.fieldId != 0
    {
        if(sqlDictionary.name != "dataareaid" &&
           sqlDictionary.name != "recversion" &&
           sqlDictionary.name != "recId"
        )
        {
            salesline_ds.object(sqlDictionary.fieldId).allowEdit(false);
        }
    }
    salesline_ds.object(fieldNum(salesLine, blocked)).allowEdit(true);
}

Getestet in AX 3.0
 


 
 
 

Zertifizierungsprüfung Microsoft Dynamics AX 2009 Trade & Logistics

07.12.2009In eigener Sache

Microsoft Certified Business Management Solutions SpecialistKurzer Eintrag in eigener Sache:

Heute morgen habe ich eine weitere Microsoft Zertifizierungsprüfung - der genaue Titel lautete Microsoft Dynamics AX 2009 Trade & Logistics - erfolgreich abgelegt.


 
 
 

PageFooter sind nicht immer dort, wo sie sein sollten

Ich kenne kein einziges AX-Projekt, in dem nicht zumindest einer der Berichte Auftragsbestätigung, Ausgangslieferschein oder Ausgangsrechnung angepasst worden sind. Und deshalb stolpere ich auch immer wieder über das selbe Problem: Man erweitert einen Bericht (Report) um einen PageFooter, der aber nicht auf jeder Seite angedruckt werden soll.


 
 
 

 

 
 
 
Beiträge des aktuellen Monats
Dezember 2009
MoDiMiDoFrSaSo
 123456
78910111213
14151617181920
21222324252627
28293031 
 
© 2006-2025 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu