Basic

<CFQUERY name="local.getBaBusList" datasource="#Request.CompanyEHS_ODBC#">
   SQL……
</CFQUERY>

注意 name 不要加井号

cfqueryparam

<cf_queryparam list="true" separator="|" value="#Attributes.limitToBusinessList#" />

默认分割符是, 逗号分隔 因此特殊情况需要特殊设置 如果遇到这样的列表

GE OneEHS|GE OneEHS|GE Oil and Gas|GE OneEHS 

写成

separator="|"

对于时间用作参数

使用时间作为 cfqueryparam 参数时, 简单的时间可以使用字符串

<cfqueryparam cfsqltype="cf_sql_char" value="#form.datadate#">

但是更好的解决方法:

#CreateODBCDateTime(datadate)#

对于

<cf_queryparam list="true" separator="|" cfsqltype="cfsqlvarchar" value="#Attributes.limitToBusinessList#" />

则相同于 SQL 中

N'here is a string'

的形式


此外使用 cf_queryparam 当 dump 的时候会将参数放到 SQL 详细中 而使用 cfqueryparam 的时候参数会以列表的形式出现

ValueList 相关

有时候如果需要将某些 Result 作为 Query 的条件, 就需要用到 ValueList

例如需要使用如下代码中的 Top5Site 作为搜索条件

<cfquery name="Top5Site" datasource="#ODBC#">
  select top(5) s.location Site
  FROM ……
</cfquery>

大括号相关

有时候 SQL 里面会使用大括号作为搜索名

示例

<cfquery name="q" datasource="CC_TEST">
    select top(10) [CONTACTID] from ltbContact;
</cfquery>

使用方法

CF: 一般搜索结果会有很多行, 因此只需要使用循环输出

<cfloop index="i" from="0" to="10">
  <cfoutput>
    #i# - #q['CONTACTID'][i]#<br>
  </cfoutput>
</cfloop>

如果只需要输出第一行就只需要把第二个 index 改为 1

<td>#bigquery['complete air emission inventory (all sources)'][1]#</td>

关于 recordcount

使用 name 的参数作为变量即可 2016-01-13 14:58:16 星期三

<CFQUERY name="local.getBaBusList" datasource="#Request.CompanyEHS_ODBC#">
   SQL……
</CFQUERY>
……
#local.getBaBusList.recordcount#

动态输出 dynamic output for cfquery

注意输出时的循环不能使用 loop in list

query[col][row]
for (var index = 1; index lte arguments.QuerySuperSet.RecordCount; index++) {
  if (QuerySuperSet["orgname"][index] != "" && QuerySuperSet["suborg"][index] != "!" && QuerySuperSet["location"][index] == "") {
    arrayAppend(labelArray, QuerySuperSet["orgname"][index] & ' / ' & QuerySuperSet["suborg"][index]);
    arrayAppend(sumArray, val(QuerySuperSet[arguments.ColumnName][index]));
  }
}

按列顺序输出 cfloop query with group

  • 仅在 CF11 之后版本有效
  • 注意最后一层我们是按照 Loc 输出,loc 还是要出现在 loop 的 group 里面
  • 必须使用已经排序好的 Query
<cfloop query="sites" group="orgname">
  <optgroup label="#sites.orgname#"></optgroup>
  <cfloop group="suborg">
    <optgroup label="#sites.suborg#">
      <cfloop group="location">
        <option value="#sites.siteid#" orgId="#sites.org#">#sites.location#</option>
      </cfloop>
    </optgroup>
  </cfloop>
</cfloop>