Query returns zero records in coldfusion context, but works fine in Navicat
I've got a query that's returning zero records when I load a page. If I copy and paste that same query (from the debug output) into navicat, I get rows returned (as I expect). Has anyone seen this? It happens locally (CF9) AND remotely on our staging server (CF10). Even weirder, it's a query that was previously working fine - I simply added an if statement to the where clause, and all of a sudden...
Here's the query:
SELECT
a.EncounterProductID,
a.DateTime AS ServiceDate,
aa.CartItemID,
aaa.CartID,
aaaaa.CartStatus,
b.ProductID,
b.ProductName,
b.CPTCode,
b.Price,
c.EncounterID,
c.DateTimeClosed AS EncounterClosedDate,
d.FirstName,
d.LastName
FROM
EncounterProducts a
LEFT JOIN CartItemProduct aa ON (a.EncounterProductID = aa.EncounterProductID AND aa.Active = 1)
LEFT JOIN CartItem aaa ON (aa.CartItemID = aaa.CartItemID)
LEFT JOIN Cart aaaa ON (aaa.CartID = aaaa.CartID)
LEFT JOIN CartStatus aaaaa ON (aaaa.CartStatusID = aaaaa.CartStatusID),
Product b,
Encounters c,
Contacts d,
EncounterStatuses e
WHERE
1 = 1
AND (aa.CartItemID IS NULL OR aaaaa.CartStatus = 'Deleted')
AND a.Active = 1
AND a.ProductID = b.ProductID
AND a.EncounterID = c.EncounterID
AND c.PatientID = d.ContactID
AND c.EncounterStatusID = e.EncounterStatusID
AND e.EncounterStatus = 'Closed'
<CFIF IsDefined("ARGUMENTS.encounter") AND IsObject(ARGUMENTS.encounter)>
AND c.EncounterID = <CFQUERYPARAM cfsqltype="cf_sql_integer" value="#ARGUMENTS.encounter.getID()#">
<CFELSE>
AND c.DateTimeClosed >= <CFQUERYPARAM cfsqltype="cf_sql_date" value="#ARGUMENTS.startDate#">
AND c.DateTimeClosed < <CFQUERYPARAM cfsqltype="cf_sql_date" value="#DateFormat(DateAdd('d', 1, ARGUMENTS.endDate), 'yyyy-mm-dd')# 00:00:00">
</CFIF>
AND c.LocationID = <CFQUERYPARAM cfsqltype="cf_sql_integer" value="#ARGUMENTS.locationID#">
AND c.CustomerID = <CFQUERYPARAM cfsqltype="cf_sql_integer" value="#ARGUMENTS.customerID#">
</CFQUERY>
All of this worked just fine before I added the lines:
<CFIF IsDefined("ARGUMENTS.encounter") AND IsObject(ARGUMENTS.encounter)>
AND c.EncounterID = <CFQUERYPARAM cfsqltype="cf_sql_integer" value="#ARGUMENTS.encounter.getID()#">
<CFELSE>
AND c.DateTimeClosed >= <CFQUERYPARAM cfsqltype="cf_sql_date" value="#ARGUMENTS.startDate#">
AND c.DateTimeClosed < <CFQUERYPARAM cfsqltype="cf_sql_date" value="#DateFormat(DateAdd('d', 1, ARGUMENTS.endDate), 'yyyy-mm-dd')# 00:00:00">
</CFIF>
Previously, it had just been:
AND c.DateTimeClosed >= <CFQUERYPARAM cfsqltype="cf_sql_date" value="#ARGUMENTS.startDate#">
AND c.DateTimeClosed < <CFQUERYPARAM cfsqltype="cf_sql_date" value="#DateFormat(DateAdd('d', 1, ARGUMENTS.endDate), 'yyyy-mm-dd')# 00:00:00">
With no IF/ELSE statement.
Anyone seen anything like this before? Any ideas?
Thanks.
