2012-10-04 38 views
0

我試圖通過使用另一個按鈕將查詢結果導出到逗號分隔文件,以便在我的網頁中使用動態搜索的查詢結果。但是,出於某種原因,導出按鈕不會識別該查詢存在。我不斷收到一個錯誤消息:變量QUERY未定義。如何使用單獨的提交按鈕訪問coldfusion中的動態查詢

我想要做的就是讓用戶點擊導出按鈕時,它會將搜索保存在逗號分隔文件中。現在我正在使用一個函數將搜索保存在名爲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

查詢需要存在於這兩種情況下作爲查詢不會從一個請求被記住到另一...在下面的例子可以不將第二請求時已經被創建的查詢。

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

或者你可以將它保存在session ...

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

或應用範圍。

+0

感謝您的解釋,會議的事情看起來很酷,但無法讓它工作。第一個例子總是有意義的。 – trueinViso

相關問題