0

Webページの動的検索からのクエリ結果を、結果をコンマ区切りファイルにエクスポートする別のボタンでアクセスして使用しようとしています。ただし、エクスポートボタンは、何らかの理由でクエリが存在することを認識しません。次のようなエラーが発生し続けます。変数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

クエリはあるリクエストから別のリクエストに記憶されないため、どちらの場合もクエリが存在する必要があります...次の例では、2番目のリクエストが行われたときにクエリが作成されていない可能性があります。

<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 に答える