SQL server query uitvoeren vanuit Dynamics AX
24 jun
Vanwege performance overwegingen of indien een query te complex wordt voor Dynamics AX, kun je ook vanuit X++ code rechtstreeks een query uitvoeren op de SQL Server (van Dynamics). Hieronder een voorbeeld van het uitvoeren van sql op de dynamics database vanuit de client.
Method van class Example_SQLQuery:
static server void query_sql_server(Args _args)
{
ResultSet myResult;
Connection connection = new UserConnection();
Statement statement = connection.createStatement();
str sqlCode;
SqlStatementExecutePermission permission;
;
sqlCode = "select top 10 Emplid, CountryRegionId from EmplTable where dataareaid = 'hsz' ";
permission = new SqlStatementExecutePermission(sqlCode);
permission.assert();
myResult = statement.executeQuery(sqlCode);
while (myResult.next())
{
info(strFmt("EmplId %1, CountryRegionId %2", myResult.getString(1), myResult.getString(2) ));
}
}
Job om de method aan te roepen:
static server void executeQuery(Args _args)
{
;
Example_SQLQuery::query_sql_server(_args);
}
Opmerkingen:
- de code moet op de server uitgevoerd worden (static server void …)
- Het ophalen van de waarden uit de resultset gaat op basis van het kolomnummer. Let op bij het aanpassen van de projectie van de query
- Nadeel van deze methode is dat als kolommen in een tabel aangepast worden de query niet meer kan werken terwijl je er geen compile errors op krijgt (wat wel zo is bij het gebruiken van sql in X++)
- Houd rekening met het dataareaid
- Download het voorbeeldproject


No comments yet