Problem:
While creating a new Web Intelligence report, these errors might occur: "AHD12002", "AHD03053", "IES 10901" and "WIS 10901". How to resolve this?
Database error: [DataDirect][ODBC OpenAccess SDK driver][OpenAccess SDK SQL Engine]AHD12002: Error in QueryHandler ServiceDesk-2008868447-5 in method fetch_response: AHD03053:Bad where clause: Parse error at : "xxxxxxxx" (syntax error). (IES 10901) (WIS 10901)
You can also see the following appearing at the SDM log files after setting below traces:
pdm_logstat -f sqlquery.c TRACE
pdm_logstat -f odbc_backend.c TRACE
AHD12002:Error in QueryHandler ServiceDesk-2008868447-5 in method fetch_response: AHD03053:Bad where clause: Parse error at : "( ( (open_date) BETWEEN '2016-03-01 12:00:00 am' AND '2016-03-17 12:54:02 pm' ) )" (syntax error)
Environment:
SDM 14.1 / CABI 4.1
SDM 12.9 / CABI 3.1
Cause:
An error like this may happen when using some local variable (local variable on the webengine) but there is no database column at the MDB table. Whenever domsrvr encounters a local variable, it tries to do a sync_fetch call to bpvirtdb_srvr with arguments. It tries to do sync_fetch for the local variable with the argument provided, and since this is not a valid argument it throws a parse error.
For example: Try to create a report against cr.mintime, which is a local variable on the webengine and there is no database column mintime for Call_Req table. When you try to run such a report, you would see errors like below in the SDM log files:
SDMSERVER domsrvr 11364 MILESTONE sqlquery.c 838 Submitting SQL query ( ( (open_date) BETWEEN '2016-03-01 12:00:00 am' AND '2016-03-17 12:54:02 pm' ) ) to domsrvr cr sync_fetch: AHD12016:Attribute cr.mintime is a local VALUE
SDMSERVER domsrvr 11364 ERROR where.y 908 Parse error at : "( ( (open_date) BETWEEN '2016-03-01 12:00:00 am' AND '2016-03-17 12:54:02 pm' ) )" (syntax error)
SDMSERVER web:local 10864 TRACE odbc_backend.c 1007 Query 5 failed: AHD12002:Error in QueryHandler ServiceDesk-2008868447-5 in method fetch_response: AHD03053:Bad where clause: Parse error at : "( ( (open_date) BETWEEN '2016-03-01 12:00:00 am' AND '2016-03-17 12:54:02 pm' ) )" (syntax error)
You might not see the error when there is no query filter, because the argument is NULL and domsrvr accepts it.
Resolution:
Local variables are only for usage at webengine level and not for the usage in a reporting scenario. You need to make sure that attributes created in the universe have a corresponding column in the database
Note: The attribute name in the database maybe different than the object name. Refer to SDM Technical Reference Guide for this mapping