Commas in data causing problems in Selectbox Bind
Hi guys, going nuts trying to figure this out....
I'm using a function within a CFC to dynamically populate 3 select boxes with data, which works fine.........
The problem is, anytime one of the dropdowns pulling from the database contains a comma (such as in the phrase DRIVER'S), the page either produces a bind error, or the effected box populates as blank...
This only happens on any data containing a comma.....I've tried using CFQUERYPARAM in the query, but that's not making any difference in this respect.
The CFC:
<!--- GET APPLICATIONS BASED ON LOCATION --->
<cffunction name="getApplications" access="remote" returnType="query">
<cfargument name="Location" type="string" required="no">
<!--- Get data --->
<cfquery name="data_applications" datasource="#application.dsn#">
SELECT DISTINCT (Applicat)
FROM Cklst_source
WHERE Location = <cfqueryparam value="#ARGUMENTS.Location#">
GROUP BY Applicat
UNION ALL
SELECT '' AS Applicat
ORDER BY Applicat ASC
</cfquery>
<cfset session.itemlocation = '#ARGUMENTS.Location#'>
<!--- And return it --->
<cfreturn data_applications>
</cffunction>
<!--- GET CATEGORY BASED ON APPLICATION --->
<cffunction name="getCategories" access="remote" returnType="query">
<cfargument name="Applicat" type="string" required="no">
<!--- Get data --->
<cfquery name="data_categories" datasource="#application.dsn#">
SELECT DISTINCT (Category)
FROM Cklst_source
WHERE Applicat = <cfqueryparam value="#ARGUMENTS.Applicat#"> AND Location = <cfqueryparam value="#session.itemlocation#">
GROUP BY Category
UNION ALL
SELECT '' AS Category
ORDER BY Category ASC
</cfquery>
<cfset session.itemapplication = '#ARGUMENTS.Applicat#'>
<!--- And return it --->
<cfreturn data_categories>
</cffunction>
<!--- GET TRANSACTIONS BASED ON CATEGORY --->
<cffunction name="getTransactions" access="remote" returnType="query">
<cfargument name="Category" type="string" required="no">
<!--- Get data --->
<cfquery name="data_transactions" datasource="#application.dsn#">
SELECT DISTINCT (Transact)
FROM Cklst_source
WHERE Category = <cfqueryparam value="#ARGUMENTS.Category#"> AND Applicat = <cfqueryparam value="#session.itemapplication#"> AND Location = <cfqueryparam value="#session.itemlocation#">
GROUP BY Transact
UNION ALL
SELECT '' AS Transact
ORDER BY Transact ASC
</cfquery>
<cfset session.itemcategory = '#ARGUMENTS.Category#'>
<!--- And return it --->
<cfreturn data_transactions>
</cffunction>
<!--- GET ITEMS BASED ON TRANSACTION --->
<cffunction name="getItems" access="remote" returnType="query">
<cfargument name="Transact" type="string" required="no">
<!--- Get data --->
<cfquery name="data_items" datasource="#application.dsn#">
SELECT DISTINCT (Displayed)
FROM Cklst_source
WHERE Transact = '#ARGUMENTS.Transact#' AND Category = '#session.itemcategory#' AND Applicat = '#session.itemapplication#' AND Location = '#session.itemlocation#'
</cfquery>
<cfset session.transaction = '#ARGUMENTS.Transact#'>
<!--- And return it --->
<cfreturn data_items>
</cffunction>
And the dropdowns themselves:
<tr style="display: none;">
<td width="100" align="right"><strong>LOCATION</strong></td>
<td> </td>
<td align="left">
<div style="display: none;">
<cfif isDefined("form.submit")><cfselect name="Location" display="Location" bind="cfc:webapps.checklist.cfc.queries.getLocations()" bindonload="true" selected="#form.Location#" />
<cfelse><cfselect name="Location" display="Location" bind="cfc:webapps.checklist.cfc.queries.getLocations()" bindonload="true" />
</cfif>
</div>
</td>
</tr>
<tr>
<td width="100" align="right"><strong>APPLICATION</strong></td>
<td> </td>
<td align="left">
<cfif isDefined("session.itemapplication") AND session.itemapplication NEQ "">
<cfselect name="Application" id="Application" selected="#session.itemapplication#" required="yes" size="1" message="Please select an application before continuing." display="Applicat" bind="cfc:webapps.checklist.cfc.queries.getApplications({Location})" bindonload="false" />
<cfelse>
<cfselect name="Application" id="Application" selected="#form.Application#" required="yes" size="1" message="Please select an application before continuing." display="Applicat" bind="cfc:webapps.checklist.cfc.queries.getApplications({Location})" bindonload="false" />
</cfif>
</td>
</tr>
<tr>
<td width="100" align="right"><strong>CATEGORY</strong></td>
<td> </td>
<td align="left">
<cfif isDefined("session.itemcategory") AND session.itemcategory NEQ "">
<cfselect name="Category" id="Category" selected="#session.itemcategory#" required="yes" size="1" message="Please select a category before continuing." display="Category" bind="cfc:webapps.checklist.cfc.queries.getCategories({Application})" bindonload="false" />
<cfelse>
<cfselect name="Category" id="Category" selected="#form.Category#" required="yes" size="1" message="Please select a category before continuing." display="Category" bind="cfc:webapps.checklist.cfc.queries.getCategories({Application})" bindonload="false" />
</cfif>
</td>
</tr>
<tr>
<td width="100" align="right"><strong>TRANSACTION</strong></td>
<td> </td>
<td align="left">
<cfif isDefined("session.transaction") AND session.transaction NEQ "">
<cfselect name="Transact" id="Transact" required="yes" size="1" message="Please select a transaction before continuing." selected="#session.transaction#" value="Transact" display="Transact" bind="cfc:webapps.checklist.cfc.queries.getTransactions({Category})" bindonload="false" />
<cfelse>
<cfselect name="Transact" id="Transact" required="yes" size="1" message="Please select a transaction before continuing." value="Transact" display="Transact" selected="#form.Transact#" bind="cfc:webapps.checklist.cfc.queries.getTransactions({Category})" bindonload="false" />
</cfif>
</td>
<td><cfinput type="submit" id="transsubmit" name="submit" value="Show Items" onclick="submitFormOkay = true;"></td>
<td><cfinput type="button" id="transclear" name="transclear" value="Clear Transaction" onclick="location.href('clear_transaction.cfm?source=original');"></td>
</tr>
<tr><td> </td></tr>
</table>
Thanks in advance guys!
