0

我正在尝试使用网页中动态搜索的查询结果,方法是使用另一个按钮访问它,该按钮会将结果导出到逗号分隔的文件中。但是,导出按钮由于某种原因无法识别查询存在。我不断收到一条错误消息:变量 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>
4

1 回答 1

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>

或者应用范围。

于 2012-10-04T19:10:48.973 回答