Dynamics AX: Zugriff auf externe Datenbank via ADO

Um aus AX4 auf eine externe Datenbank zugreifen zu können, kann man sich der Klasse CCADOConnection bedienen, nachstehend findet Ihr zwei Beispiele wie diese verwendet werden kann.

 

Aufruf über DSN

static void TestADO_via_DSN(Args _args)
{
    CCADOConnection     adoConnection;
    CCADORecordSet      adoRecordSet = new CCADORecordSet();
    str                 SQLstring = "SELECT * FROM table";
    ;
    adoConnection = new CCADOConnection();
    adoConnection.connectionString("Dsn=NameOfDSN");                // Am lokalen PC installierte System-DSN
    adoConnection.open();

    adoRecordSet.open(SQLstring, adoConnection);

    while (!adoRecordSet.EOF())
    {
        info(adoRecordSet.fields().itemIdx(1).value());             // Erstes Feld
        info(adoRecordSEt.fields().itemName("fieldname").value());  // Bestimmtes Feld
        
        adoRecordSet.moveNext();
    }
}

Aufruf ohne DSN

static void TestADO(Args _args)
{
    CCADOConnection     adoConnection;
    CCADORecordSet      adoRecordSet = new CCADORecordSet();
    str                 SQLstring = "SELECT * FROM table";
    ;
    adoConnection = new CCADOConnection();
    adoConnection.connectionString("Driver={SQL Server};Server=servername;Database=databasename;UID=user; PWD=pass");
    adoConnection.open();

    adoRecordSet.open(SQLstring, adoConnection);

    while (!adoRecordSet.EOF())
    {
        info(adoRecordSet.fields().itemIdx(1).value());             // Erstes Feld
        info(adoRecordSEt.fields().itemName("fieldname").value());  // Bestimmtes Feld
        
        adoRecordSet.moveNext();
    }
}
Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 4.0

Daniel 10.10.2013 14:27 | #1

Hallo Heinz, anbei im Link ein weiteres Beispiel. Liebe Grüße, Daniel

Daniel 10.10.2013 14:28 | #2

http://jaysaltonaxdev.blogspot.co.at/2009/09/ccadoconnection-tutorial.html

Max 24.06.2014 13:49 | #3

Hallo Heinz, benutze CCADO schon eine Zeit lang. Und es läuft gut um Daten abzuholen. Jetzt ist aber ein DateTime Feld hinzugekommen und ich ich bekomme leider nur das value Datum und nicht die Zeit. Gibt es hierfür eine Lösung? Danke mfg Max

Heinz Schweda 26.06.2014 09:33 | #4

Hallo Max,
eine Lösung habe ich jetzt grade nicht parat, aber wie wärs wenn du bereits beim SELECT-Statement die Konvertierungsfunktionen der jeweiligen Datenbank-Engine nutzt?
Also beispielsweise bei einem SQL Server würde ich ein DateTime-Feld wie folgt (entweder mit CAST oder CONVERT) in einen String konvertieren und im AX mit String-Funktionen mir die notwendigen Informationen extrahieren.

Nicht unbedingt die eleganteste Variante, aber eine Möglichkeit.

SELECT cast([dateTimeFieldName] as nvarchar(20)) as DateTimeAsStr
,convert(varChar(23), [dateTimeFieldName] , 121) as DateTimeAsStr2
FROM tableName

Grüsse Heinz

 
 

 

 
 
 
Beiträge des aktuellen Monats
November 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
252627282930 
 
© 2006-2024 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