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

如何使用单独的提交按钮访问coldfusion中的动态查询,coldfusion,Coldfusion,我正在尝试使用网页中动态搜索的查询结果,方法是使用另一个按钮访问它,该按钮将结果导出为逗号分隔的文件。但是,“导出”按钮无法识别由于某种原因而存在的查询。我一直收到这样一个错误:变量查询未定义 我试图做的是,当用户点击导出按钮时,它将把搜索保存在一个逗号分隔的文件中。现在,我正在使用一个函数,它将以逗号分隔的形式将搜索保存在名为strOutput的变量中。然后我要把它写进一个文件 由于它无法识别查询,我尝试在搜索函数中设置变量,并在页面顶部使用cfparam标记,以便在导出函数中访问它。这也不管

我正在尝试使用网页中动态搜索的查询结果,方法是使用另一个按钮访问它,该按钮将结果导出为逗号分隔的文件。但是,“导出”按钮无法识别由于某种原因而存在的查询。我一直收到这样一个错误:变量查询未定义

我试图做的是,当用户点击导出按钮时,它将把搜索保存在一个逗号分隔的文件中。现在,我正在使用一个函数,它将以逗号分隔的形式将搜索保存在名为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>

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

<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>

...

或者应用范围。

感谢您的解释,会话看起来很酷,但无法正常工作。第一个例子完全有道理。