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] -


Comments are closed.
Über/Kontakt

  




© Copyright 2012 Mathias Füßler
Sign In
Categories
Archiv
<February 2012>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
26272829123
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)