something about Microsoft Dynamics AX RSS 2.0
 Monday, February 19, 2007

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;


 

Monday, February 19, 2007 6:05:42 PM (Mitteleuropäische Zeit, UTC+01:00)  Mathias Füßler  #    Comments [0] -


 Monday, February 12, 2007

Wird eine DTAUS Kreditorenzahlung erzeugt, werden im Bericht "Zahlungsavis" (Report "VendOutCoveringLetter_DEDTAUS" scheinbar immer die möglichen Skonti und damit auch der Zahlungsbetrag abzüglich möglicher Skonti gedruckt und nicht die tatsächlich gewährten Skonti. Das Problem scheint nur in diesem Bericht für die DTAUS zu bestehen.

Durch einfache Anpassungen in den Reportmethoden, die ich anhand des Berichts "Zahlungsavis" für die DTAZV (Report "VendOutCoveringLetter_DEDTAZV") genommen habe, werden diese Fehler behoben.

Folgende Methoden sind im Report VendOutCoveringLetter_DEDTAUS anzupassen:

 

paymentAmount()

//BP Deviation Documented
display TempReal paymentAmount()
{

// Original
// return element.invoiceAmount() + element.cashDiscAmountIfPossible();

// Korrektur
return specTrans.Balance01 * -1;
}


 

chashDiscAmountIfPossible()

display VendCashDiscAmount cashDiscAmountIfPossible()
{
// Original
// return VendTransOpen::find(specTrans.RefRecId).PossibleCashDisc;
// Korrektur
return specTrans.vendCashDiscAmountIfPossible(ledgerJournalTrans.TransDate,
VendPaymModeTable::discGraceDays(ledgerJournalTrans.PaymMode)) * -1;
}


Nun werden die gewährten Skonti und nicht die möglichen Skonti auf dem Bericht gedruckt.

 

 

Monday, February 12, 2007 12:00:07 PM (Mitteleuropäische Zeit, UTC+01:00)  Mathias Füßler  #    Comments [0] -


 Sunday, February 11, 2007

der erste Schritt ist getan, dasBlog wurde installiert.

Und wenn ich nicht die Lust verlieren sollte, werden hier zukünfigt all meine Probleme/ Erfolge/ Tips+Tricks und was es sonst noch so gibt rund um Microsoft Dynamcis AX der Welt kundgetan.

 

Bis dahin

Gruß

jinx

Sunday, February 11, 2007 9:34:18 PM (Mitteleuropäische Zeit, UTC+01:00)  Mathias Füßler  #    Comments [0] -


 Saturday, January 01, 2005
Abgeschlossene kaufmannischen Ausbildung zum Industriekaufmann und anschliessender Beschäftigung in der Buchhaltung und Arbeitsvorbereitung.
Fortbildung zum staatlich geprüften Techniker für Informatik.

Mit Microsoft Dynamics Ax beschäftige ich mich nun seit Anfang 2000. In jeder Version, angefangen mit Axapta 2.1, über Axapta 2.5 und 3.0 bis zur aktuellen Version Dynamcis Ax 4.0 bin ich als Entwickler tätig gewesen und hab mich mit folgenden Modulen sowohl in der Entwicklung als auch von der Applikation beschäftigt: Debitoren, Kreditoren, Lager, Projekt, CRM, Produktgenerator, Finanzbuchhaltung.

Folgende Zertifizierung habe ich bisher erreicht.

Microsoft Certified Business Management Solutions Professional in Microsoft Dynamics AX Developer
Microsoft Certified Business Management Solutions Professional in Microsoft Dynamics AX Application

Microsoft Business Solutions Certified Master in Axapta Application
Microsoft Business Solutions Certified Professional in Axapta 3.0 Programming
Microsoft Business Solutions Certified Professional in Axapta 3.0 Trade & Logistics
Microsoft Business Solutions Certified Professional in Axapta 3.0 Financials
Microsoft Business Solutions Certified Professional in Axapta 3.0 Sales & Marketing
Microsoft Business Solutions Certified Professional in Axapta 3.0 Product Builder

Saturday, January 01, 2005 7:59:54 PM (Mitteleuropäische Zeit, UTC+01:00)  Mathias Füßler  #    Comments [0] -


Inhaltsverantwortlich für dieses Blog  ist:

Mathias Füßler
Schaftrift 10 B
38108 Braunschweig
 
Deutschland

E-Mail an den Autor E-mail

Saturday, January 01, 2005 7:18:05 PM (Mitteleuropäische Zeit, UTC+01:00)  Mathias Füßler  #    Comments [0] -


Über/Kontakt

  




© Copyright 2012 Mathias Füßler
Sign In
Categories
Archiv
<February 2007>
SunMonTueWedThuFriSat
28293031123
45678910
11121314151617
18192021222324
25262728123
45678910
Blogroll
Statistik
Total Posts: 107
This Year: 0
This Month: 0
This Week: 0
Comments: 19





All Content © 2012, Mathias Füßler
DasBlog theme 'Business' created by Christoph De Baene (delarou)