如何使用单独的提交按钮访问coldfusion中的动态查询

时间:2012-10-04 18:52:53

标签: coldfusion

我正在尝试使用来自我的网页中的动态搜索的查询结果,方法是使用另一个按钮将其导出到逗号分隔文件。但是,导出按钮将无法识别查询由于某种原因而存在。我不断收到错误消息:变量QUERY未定义。

我要做的是使用户点击导出按钮时将搜索保存在逗号分隔文件中。现在我正在使用一个函数将搜索保存在一个名为strOutput的变量中以逗号分隔的形式。然后我打算把它写成一个文件。

由于它无法识别查询,我尝试在搜索功能中设置变量并在页面顶部使用cfparam标记,以便我可以在导出功能中访问它。这也不起作用。也许有更好的方法来做到这一点?

代码如下所示:

这是我搜索功能的开始:

<cfif structKeyExists(Form, "submit")>

<cfquery datasource="#Session.HousingDataSource#" name="query">
        SELECT *

此代码放在上面运行查询的代码之后并显示结果。

<cfif structKeyExists(Form,"export")>
     <cfset strOutput = QueryToCSV(
          query,"studentFirst,studentLast,studentNumber,Detail1,itemDate") />

<!---cffile
  action="WRITE"
  file="#filename#"
  output="#strOutput#"
/--->


</cfif>

1 个答案:

答案 0 :(得分:1)

在两种情况下都需要存在查询,因为查询不会从一个请求记忆到另一个请求...在下面的示例中,在第二个请求发出时可能尚未创建查询。

<cfif StructKeyExists(form, "submit")>
    <!--- This only gets run on the first request --->
    <cfquery datasource="#session.HousingDataSource#" name="query">
        ...
    </cfquery>
</cfif>

<cfif StructKeyExists(form, "export")>
    <!--- This only gets run on the second request --->
    <cfset output = QueryToCSV(query, "studentFirst,studentLast,studentNumber,Detail1,itemDate")/>
    <cffile action="write" file="#filename#" output="#output#"/>
</cfif>

如果您按如下所示更新代码,那么当您导出代码时,它将再次运行查询以将其导出...

<cfif StructKeyExists(form, "submit") || StructKeyExists(form, "export")>
    <!--- This gets run both times --->
    <cfquery datasource="#session.HousingDataSource#" name="query">
        ...
    </cfquery>
</cfif>

<cfif StructKeyExists(form, "export")>
    <cfset output = QueryToCSV(query, "studentFirst,studentLast,studentNumber,Detail1,itemDate")/>
    <cffile action="write" file="#filename#" output="#output#"/>
</cfif>

或者您可以将其保存在会话中......

<cfif StructKeyExists(form, "submit")>
    <cfquery datasource="#session.HousingDataSource#" name="query">
        ...
    </cfquery>
    <cfset session.query = query/>
</cfif>

<cfif StructKeyExists(form, "export") && StructKeyExists(session, "query")>
    <cfset output = QueryToCSV(session.query, "studentFirst,studentLast,studentNumber,Detail1,itemDate")/>
    <cffile action="write" file="#filename#" output="#output#"/>
</cfif>

或申请范围。