我正在尝试编写一个查询,该查询将接受从另一个页面传递的4个可能参数中的一个.用户将选择这些参数中的一个进行搜索,然后查询将根据传递的参数评估选择了哪些参数.我正在尝试使用cfif来实现这一点但我必须遗漏一些东西.也许是一个cfelse,和OR,或者我可能会离开.这会像cffunction一样好吗?我得到一个错误"变量DivisionCode"是未定义的.谢谢.
<cfquery name="Summary" datasource="dsn">
SELECT
*
FROM
disposal
WHERE 1=1
<cfif DivisionCode NEQ "false">
AND DivisionCode = <cfqueryparam value="#url.DivisionCode#"
cfsqltype="cf_sql_varchar">
</cfif>
<cfif DistrictCode NEQ "false">
AND DistrictCode = <cfqueryparam value="#url.DistrictCode#"
cfsqltype="cf_sql_varchar">
</cfif>
<cfif SiteCode NEQ "false">
AND SiteCode = <cfqueryparam value="#url.SiteCode#"
cfsqltype="cf_sql_varchar">
</cfif>
<cfif RegionCode NEQ "false">
AND RegionCode = <cfqueryparam value="#url.RegionCode#"
cfsqltype="cf_sql_varchar">
</cfif>
ORDER By
CYear DESC
</cfquery>
Run Code Online (Sandbox Code Playgroud)
我会查看变量范围和检查以确保变量存在.那么,让我们看看你的一个条件.
<cfif StructKeyExists(url,"DivisionCode") AND url.DivisionCode NEQ "false">
AND DivisionCode = <cfqueryparam value="#url.DivisionCode#" cfsqltype="cf_sql_varchar">
</cfif>
Run Code Online (Sandbox Code Playgroud)
添加"网址"."DivisionCode"之前的前缀将指定您查找变量的范围.这不会直接帮助您解决问题,但它会使您的代码更清晰,错误消息更有帮助.
添加StructKeyExists()检查以确保该变量在URL中可用.根据你编写代码的方式,我猜你不想按照未包含的URL变量进行过滤,这样就可以解决这个问题.
在每个cfif做同样的事情你应该是正确的下雨.
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |