Question

I am reading data from a spreadsheet. One of the column in the spreadsheet contains spaces.

For Example, Columns names are [first name,last name,roll].

I am getting a qryObj after reading the spreadsheet. Now when i am trying to read first name from the query

<cfquery dbtype="query" name="getName">
    SELECT [first name]
    FROM   qryObj
</cfquery>

It is throwing db error. I have tried with ['first name'] also but still it is throwing error.

The error is:

Query Of Queries syntax error.
Encountered "[. Incorrect Select List, Incorrect select column
Was it helpful?

Solution

I did crazy stuff like googling to see what people had done in other situations, and tried various SQL approaches to escaping non-standard column names (back ticks, square barackets, double quotes, combos thereof) , and drew a blank. So I agree with @da_didi that QoQ/IMQ does not cater for this. You should raise a ticket in the Adobe bug tracker.

You could do SELECT *, which removes the need to reference the column name. Or you could serialize the query, use a string replace to rename the column, deserialise it again then QoQ on the revised name. I'd only do this with a small amount of data though.

Or you could push back on the owbner of the XLS file and say "no can do unless you revise your column names".

You could also perhaps suppress the column names as they stand from the XLS file using excludeHeaderRow,and then specify your own columns names. How did I find out one could do that? By RTFMing the <cfspreadsheet> docs.

OTHER TIPS

You cannot. Best practices: I always replace all spaces with an underline.

Simple. Just alias the select. Select [FIRST NAME] as FIRSTNAME from qryObj

Thats easy:

Query

Select [FIRST NAME]

in output loop of query

["FIRST NAME"]

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top