【问题标题】:Setting Variable values after reading file contents读取文件内容后设置变量值
【发布时间】:2014-03-21 03:21:21
【问题描述】:

我有一个非常大的查询,它被 3 个不同的页面调用。 我没有在所有 3 个 cfm 文件中编写相同的查询,而是试图找到另一种方法将查询(连同#variable(s)#)保存在 Query.cfm 文件中。

Query.cfm 示例:

SELECT *
    FROM A
    WHERE TRADE_DATE  BETWEEN to_date('#f_startDate#','dd/mm/yyyy') AND to_date('#f_endDate#','dd/mm/yyyy')

变量:#f_startDate# 和 #f_endDate#

然后我读取文件内容,将其存储在一个变量中,并将#variable(s)# 替换为从每个页面运行函数的值。

调用页面(目前无法运行的代码):

<cffile action = "read" file = "#ExpandPath( './Query.cfm')#" variable = "Query">
<cfset Query = #ReplaceList(Query,"#f_startDate#,#f_endDate#", "01/01/2000,01/01/2002")#>   
<cfquery name="Q_DailyPrice" datasource="#f_datasource#">
    #PreserveSingleQuotes(Query)#
</cfquery>

如何将变量值设置到字符串中?

有关每个页面的更多详细信息:

  1. 返回查询的 JSON 以加载图表

  2. 用于在xls中生成查询数据

  3. 进一步用于生成查询数据的子集 (QoQ) 以创建表。

数据库:甲骨文

【问题讨论】:

    标签: coldfusion


    【解决方案1】:

    您的选择包括:

    1. 将查询放入 .cfm 模板并使用 cfinclude 访问它
    2. 将查询放入 .cfm 文件中的用户定义函数中。然后cfinclude文件并调用函数。
    3. 将查询放入 .cfc 文件中的用户定义函数中。然后您可以使用 cfinvoke 运行该函数,或者创建一个对象然后调用该函数。

    可能还有其他选择。我建议查看我建议的三个,然后确定哪一个最能满足您的需求。

    无论您使用什么方法,ColdFusion 都有一个 parsedatetime 函数,可以将您的字符串转换为日期对象。使用这些可能比 oracle 的 to_date 函数更快。您必须测试并查看。无论如何,出于各种原因使用 cfqueryparameter。

    另外,在与 oracle 之间使用时要小心。它的日期字段包括一个时间部分。如果您的任何记录都有记录,那么您会更安全

    where trade_date >= YourStartDate
    and trade_date < TheDayAfterYourEndDate
    

    【讨论】:

    • 谢谢丹。甚至我一直在努力使用&lt;cfinclude&gt; 的第一个选项并且它有效。此外,我必须在 Query.cfm 文件中使用 &lt;cfoutput&gt; 标记来封装查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 2023-03-17
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    相关资源
    最近更新 更多