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));