Hi everyone, I´m having some problems with the ProjSalesPriceHour DataSource.
I´m modifying the data range in the init() method of the DataSource. My code
is the following:
void init()
{
Query query;
QueryBuildDataSource qB;
;
switch(element.args().dataset())
{
case(tableNum(ProjTable)):
projHourSalesPrice_ds.autoQuery(false);
query = new Query();
qB = query.addDataSource(tablenum(ProjHourSalesPrice));
criteriaProjId = qB.addRange(fieldnum(ProjHourSalesPrice, projId));
projHourSalesPrice_ds.query(query);
break;
default:
projHourSalesPrice_ds.autoQuery(false);
query = new Query();
qB = query.addDataSource(tablenum(ProjHourSalesPrice));
criteriaProjId = qB.addRange(fieldnum(ProjTable, GerenteCuenta));
criteriaProjId.value(curUserId());
projHourSalesPrice_ds.query(query);
break;
}
super();
}
The problem is in the default case. I´m trying to show all the records of
ProjHourSalesPrice table where the EmplId of the current session user is the
same as the EmplId of the ProjId table. When I run this I get an invalid
range error.
Basically the SQL query I´m trying to do is this:
SELECT *
FROM PROJHOURSALESPRICE PHS, PROJTABLE P
WHERE P.PROJID = PHS.PROJID AND P.GERENTECUENTA = '**current user Id**'
Any help on how should I write this would be appreciated. Thank you very much!
Hi Alberto,
For filtering records from datasource, we usually put our code in init() or executeQuery() of datasource.
In init(), we put our code after SUPER(). In executeQuery(), we put our code before SUPER().
Thats’ a general concept.
In init(), super() initialises the objects, we used to filter records from datasource.
Put your code after SUPER(), and try for that.
May be your problem will be solved.
Bye…
Hi Manish, thanks for replying to my question. I moved the super() just before the switch, but I´m still getting the same problem. Whenever I try to execute the form with the default case I’m getting an “Invalid range” error message.
As you can see I´m new to Axapta and X++. I don´t know how to program the range I´m trying to get. I´ve already read the documentation and some web pages, but I can´t get it to work. How should I write my query using the Query, QueryBuildRange and QueryDatasource classes? I´m very lost, and I would really appreciate the help, so I can start learning this.
Thank you again, and happy holidays.