Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 4.0
Dynamics AX 4.0
Hallo Heinz, anbei im Link ein weiteres Beispiel. Liebe Grüße, Daniel |
http://jaysaltonaxdev.blogspot.co.at/2009/09/ccadoconnection-tutorial.html |
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 |
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 |
|
|
|
|
|
|
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
{
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
{
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();
}
}