Pour récupérer les valeurs de filtrages, entrées dans un client AX Dynamics, il m'a fallu tatonner jusqu'à trouver la solution suivante :
public void process(Args args, FormDataSource _formDataSource)
{
QueryRun queryRun;
QueryFilter qf;
QueryBuildRange range;
Query q;
int j;
int k = 1;
int i = 1;
int cnt,filtercnt;
DictTable dictTable;
DictField dictField;
str test;
;
q = _formDataSource.queryRun().query();
queryRun = new QueryRun(q);
if(q)
{
// Récupération de l'appelant et des lignes cochées
info (strFmt("Formulaire appelant %1, Company : %2. Nombre de ligne Selectionné = %3",
args.name(),
curExt(),
_formDataSource.recordsMarked().lastIndex()));
for(i = 1; i <= q.dataSourceCount(); i++)
{
cnt = q.dataSourceNo(i).rangeCount();
filtercnt = 0;
if(!q.dataSourceNo(i).embedded())
{
filtercnt = q.queryFilterCount(q.dataSourceNo(k));
}
dictTable = new DictTable(q.dataSourceNo(k).table());
for (k=1; k<= filtercnt; k++)
{
qf = q.queryFilter(k, q.dataSourceNo(i));
if(qf)
{
// Récupération du filtre
info (strFmt("%1, %2. Range = %3", dictTable.label(), qf.field(), qf.value()));
}
}
ttsCommit;
for (j=1; j<=cnt; j++)
{
range = queryRun.query().dataSourceNo(i).range(j);
if(range.value())
{
// Récupération du filtre
info(strfmt("%1, %2. Range = %3",dictTable.label(), range.AOTname(), range.value()));
}
}
}
}
}
No comments:
Post a Comment