web
You’re offline. This is a read only version of the page.
close
Skip to main content
Community site session details

Community site session details

Session Id :
Finance | Project Operations, Human Resources, ...
Unanswered

Execute Query Filter Not Working

(0) ShareShare
ReportReport
Posted on by 118

Hi Experts,

Can anyone please help me on this. I am writing one code on ExecuteQuery method of Datasource, it is not working. 

Here is the code, I am using

QueryBuildDataSource qbds,qbds_Asset;
TableB tableB;
Query queryloc = new Query();
str setqueryvalue, getstatusCode;

getstatusCode = 'XYZ';
qbds = queryloc.addDataSource(TableNum(TableA));
qbds.clearRanges();
// SelectedGood is a checkbox, for which we have set AutoDeclaration property to YES
if(Selectedgoods.value() == NoYes::Yes)
{
setqueryvalue = strfmt('(%1.%2 != %3) || (%1.%2 != %4)', qbds.name(),fieldStr(TableA, StatusCode),
'ABC', 'XYZ');
qbds.addRange(fieldnum((TableA, , StatusCode)).value(queryValue(setqueryvalue));
}
else
{
setqueryvalue = strfmt('(%1.%2 != %3)', qbds.name(), fieldStr(TableA, StatusCode), getstatusCode);
qbds.addRange(fieldnum(TableA, StatusCode)).value(queryvalue(setqueryvalue));
}
qbds.addRange(fieldNum(TableA, TemporaryFlag)).value("N");
qbds_Asset = qbds.addDataSource(tableNum(tableB));
qbds_Asset.relations(false);
qbds_Asset.joinMode(JoinMode::InnerJoin);
qbds_Asset.addLink(fieldNum(TableA, ContNumber),fieldNum(tableB, ContNumber));
qbds_Asset.addLink(fieldNum(TableA, ItemId),fieldNum(tableB, SetCode));
qbds_Asset.addLink(fieldNum(TableA, SerialNumber),fieldNum(tableB, SetCodeSerialNumber));

I even tried to execute below code also, But it also didn't work

QueryBuildDataSource qbds,qbds_Asset;
TableB tableB;
Query queryloc = new Query();
str setqueryvalue, getstatusCode;

getstatusCode = 'XYZ';
qbds = queryloc.addDataSource(TableNum(TableA));
qbds.clearRanges();
// SelectedGood is a checkbox, for which we have set AutoDeclaration property to YES
if(Selectedgoods.value() == NoYes::Yes)
{
setqueryvalue = strfmt('(%1.%2 != %3) || (%1.%2 != %4)', qbds.name(),fieldStr(TableA, StatusCode),
'ABC', 'XYZ');
qbds.addRange(fieldnum((TableA, , StatusCode)).value(queryValue(setqueryvalue));
}
else
{
setqueryvalue = strfmt('(%1.%2 != %3)', qbds.name(), fieldStr(TableA, StatusCode), getstatusCode);
qbds.addRange(fieldnum(TableA, StatusCode)).value(queryvalue(setqueryvalue));
}
qbds.addRange(fieldNum(TableA, TemporaryFlag)).value("N");

Can anyone please help me, what is wrong in this code.

Thanks in advance

I have the same question (0)
  • Martin Dráb Profile Picture
    236,503 Most Valuable Professional on at
    RE: Execute Query Filter Not Working

    Unfortuntely "it's not working" tells us nothing about your problem. Please give us more information about what happends, e.g. what error you get.

    Also, use your code is difficult to read, because you didn't use Insert > Code to paste it and you lost line indentation. Please don't forget it next time.

    Let me format it.

    First snippet:

    QueryBuildDataSource qbds,qbds_Asset;
    TableB tableB;
    Query queryloc = new Query();
    str setqueryvalue, getstatusCode;
    
    getstatusCode = 'XYZ';
    qbds = queryloc.addDataSource(TableNum(TableA));
    qbds.clearRanges();
    // SelectedGood is a checkbox, for which we have set AutoDeclaration property to YES
    if(Selectedgoods.value() == NoYes::Yes)
    {
    	setqueryvalue = strfmt('(%1.%2 != %3) || (%1.%2 != %4)', qbds.name(),fieldStr(TableA, StatusCode), 'ABC', 'XYZ');
    	qbds.addRange(fieldnum((TableA, , StatusCode)).value(queryValue(setqueryvalue));
    }
    else
    {
    	setqueryvalue = strfmt('(%1.%2 != %3)', qbds.name(), fieldStr(TableA, StatusCode), getstatusCode);
    	qbds.addRange(fieldnum(TableA, StatusCode)).value(queryvalue(setqueryvalue));
    }
    qbds.addRange(fieldNum(TableA, TemporaryFlag)).value("N");
    qbds_Asset = qbds.addDataSource(tableNum(tableB));
    qbds_Asset.relations(false);
    qbds_Asset.joinMode(JoinMode::InnerJoin);
    qbds_Asset.addLink(fieldNum(TableA, ContNumber),fieldNum(tableB, ContNumber));
    qbds_Asset.addLink(fieldNum(TableA, ItemId),fieldNum(tableB, SetCode));
    qbds_Asset.addLink(fieldNum(TableA, SerialNumber),fieldNum(tableB, SetCodeSerialNumber));

    Second snippet:

    QueryBuildDataSource qbds,qbds_Asset;
    TableB tableB;
    Query queryloc = new Query();
    str setqueryvalue, getstatusCode;
    
    getstatusCode = 'XYZ';
    qbds = queryloc.addDataSource(TableNum(TableA));
    qbds.clearRanges();
    // SelectedGood is a checkbox, for which we have set AutoDeclaration property to YES
    if(Selectedgoods.value() == NoYes::Yes)
    {
    	setqueryvalue = strfmt('(%1.%2 != %3) || (%1.%2 != %4)', qbds.name(),fieldStr(TableA, StatusCode),'ABC', 'XYZ');
    	qbds.addRange(fieldnum((TableA, , StatusCode)).value(queryValue(setqueryvalue));
    }
    else
    {
    	setqueryvalue = strfmt('(%1.%2 != %3)', qbds.name(), fieldStr(TableA, StatusCode), getstatusCode);
    	qbds.addRange(fieldnum(TableA, StatusCode)).value(queryvalue(setqueryvalue));
    }
    qbds.addRange(fieldNum(TableA, TemporaryFlag)).value("N");

    One very suspious thing in your code is that you aren't using form data sources at all. You shouldn't add TableA and TableB data source in code - you should them as the form data sources and then refer to them in code. Like this:

    QueryBuildDataSource tableAQbds = TableA_ds.queryBuildDataSource();
    QueryBuildDataSource tableBQbds = TableB_ds.queryBuildDataSource();

    Also, what is the type of TableA.TemporaryFlag? I guess that it's an enum (NoYes), but then your filter value ("N") is wrong and the query will never return anything.

    Another problem - don't use the extended query syntax. For example, this is overcomplicated and error-prone:

    setqueryvalue = strfmt('(%1.%2 != %3)', qbds.name(), fieldStr(TableA, StatusCode), getstatusCode);
    qbds.addRange(fieldnum(TableA, StatusCode)).value(queryvalue(setqueryvalue));

    The right solution is much easier:

    qbds.addRange(fieldnum(TableA, StatusCode))
        .value(SysQuery::valueNot(YourStatusCodeEnum::Xyz));

  • D365_FO_Technical_Te Profile Picture
    118 on at
    RE: Execute Query Filter Not Working

    Martin  I am not getting any error, but my data is not getting filtered as expected.

    Table A & Table B both are datasource of my grid's Fields. Some fields having Datasource as TableA and some has Table B. I have only 1 grid on a form.

    Temporary Flag is a string Type field.

  • Martin Dráb Profile Picture
    236,503 Most Valuable Professional on at
    RE: Execute Query Filter Not Working

    All right, so your intention is adding ranges to your form data sources. But you don't do that in your code. You ignore form data sources and you add two new QueryBuildDataSource objects, completely unrelated to your form data sources. Then you filter those two and leaving QueryBuildDataSources for your form data sources without any filter. I gave you a solution in the previous reply.

    Also, the fact that you didn't notice your problem suggests that you don't know how to debug form queries. Do you know that you can see the query in Form information form and in debugger?

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Abhilash Warrier – Community Spotlight

We are honored to recognize Abhilash Warrier as our Community Spotlight honoree for…

Leaderboard > Finance | Project Operations, Human Resources, AX, GP, SL

#1
CA Neeraj Kumar Profile Picture

CA Neeraj Kumar 1,882

#2
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 794 Super User 2025 Season 2

#3
Sohaib Cheema Profile Picture

Sohaib Cheema 525 User Group Leader

Last 30 days Overall leaderboard

Product updates

Dynamics 365 release plans