The code is applied using OnInitialized data source event handler ans using main data source pay statement in my case .
There is not condition , please find the code below :
[FormDataSourceEventHandler(formDataSourceStr(PayrollPayStatement, PayrollPayStatement), FormDataSourceEventType::QueryExecuting)]
public static void PayrollPayStatement_OnInitialized(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource PayrollPayStatement_ds;
QueryBuildDataSource QBD1,QBD2;
QueryBuildRange QBR1;
PayrollPayStatement_ds = sender.formRun().dataSource("PayrollPayStatement");
QBD1=PayrollPayStatement_DS.query().dataSourceName("PayrollPayStatement");
QBD2=QBD1.addDataSource("MyTable");
QBD2.name("MyTableFilter");
QBD2.joinMode(JoinMode::InnerJoin);
QBD2.relations(false);
QBD2.addLink(fieldNum(PayrollPayStatement,Worker),fieldNum(MyTable,Worker));
QBR1= QBD2.addRange(fieldNum(MyTable,Field1));
QBR1.value(FilterValue);
QBR1.status(RangeStatus::Hidden);
}
Field1 is string field , FilterValue is string value