| std.update3.inc confusion [message #2365] | 
			Sat, 14 November 2009 11:30   | 
		 
		
			
				
				
				
					
						  
						ljkbrost
						 Messages: 59 Registered: April 2006 
						
					 | 
					Member  | 
					 | 
		 
		 
	 | 
 
	
		Hi, 
 
I'm trying to use the std.update3.inc pattern to create a dynamic report generation screen and I've run into a problem that I have not seen before and I'm not sure of the fix. 
 
To give an idea of what I'm trying to do: 
 
I have a rpt_report and rpt_parameter table.  The rpt_report table contains the description of the report and the rpt_parameter table contains the description of the parameters (one parameter per row). 
 
1) Display list1 of the reports 
2) Select a report from the list1 screen. 
3) Click the run_report (an update3 screen) 
4) Inside the _cm_changeConfig fuction: 
4.1) Grab a list of all the parameters based on the passed in report_id (populated by the list1->update3 selection process) 
4.2) Build the fieldspec based on the data pulled in from this report. 
   
So this is all pretty simple/straight forward, but I have a problem the somehow my where clause in the query to get the parameters has an extra '=' operator. 
 
Query: 
SELECT * 
FROM 
   rpt_report 
 JOIN 
   rpt_version 
 ON (rpt_report.report_default_version_id =
     rpt_version.version_id) 
 RIGHT JOIN 
   rpt_parameter 
 USING (version_id)
WHERE
 rpt_report.report_id='='060a-7bb8-36e67021fcb81fe-01224c''
 
 
Notice the WHERE clause has an extra "=" in the front. 
 
I've traced the problem to the std.table.class.inc's initialise() method.  Inside this class it there is the following call: 
        // convert $where string to an array
        $fieldarray  = where2array($where, false, false);
   
 
This function ultimately returns a fieldarray with 
Array
(
    [report_id] => ='060a-7bb8-36e67021fcb81fe-01224c'
)
 
 
Stepping through the where2array function everything works upto the point when the function strips the operators.  In this case the function is passed $strip_operators=false, so it leaves the extra '=' in the fieldarray. 
 
Ultimately when I'm in _cm_changeConfig, my $fieldarray is not what I would expect.  Changing the initialise() method to strip the operators fixes the problem. 
 
So, should the where2array be change to strip_operators=true? 
Or, am I missing something? 
 
		
		
		
 |  
	| 
		
	 | 
 
 
 |