การตั้งค่าตัวแปรหลังจากอ่านเนื้อหาไฟล์

ฉันมีคำถามจำนวนมากซึ่งได้รับการเรียกจาก 3 เพจที่แตกต่างกัน แทนที่จะเขียนแบบสอบถามเดียวกันในไฟล์ cfm ทั้ง 3 ไฟล์ ฉันกำลังพยายามหาวิธีอื่นในการบันทึกแบบสอบถาม (พร้อมกับ #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) เพื่อสร้างตาราง

ฐานข้อมูล : ออราเคิล


person Gaurav S    schedule 21.03.2014    source แหล่งที่มา


คำตอบ (1)


ตัวเลือกของคุณได้แก่:

  1. ใส่คำค้นหาในเทมเพลต .cfm และเข้าถึงด้วย cfinclude
  2. ใส่แบบสอบถามลงในฟังก์ชันที่ผู้ใช้กำหนดในไฟล์ .cfm จากนั้น cfinclude ไฟล์และเรียกใช้ฟังก์ชัน
  3. ใส่แบบสอบถามลงในฟังก์ชันที่ผู้ใช้กำหนดในไฟล์ .cfc จากนั้นคุณสามารถรันฟังก์ชันด้วย cfinvoid หรือสร้างอ็อบเจ็กต์แล้วเรียกใช้ฟังก์ชันก็ได้

อาจมีตัวเลือกอื่นเช่นกัน ฉันขอแนะนำให้ดูสามสิ่งที่ฉันแนะนำและพิจารณาว่าอันไหนตรงกับความต้องการของคุณมากที่สุด

ไม่ว่าคุณจะใช้วิธีใดก็ตาม ColdFusion มีฟังก์ชัน parsedatetime ที่จะแปลงสตริงของคุณให้เป็นวัตถุวันที่ การใช้สิ่งเหล่านี้อาจเร็วกว่าฟังก์ชัน to_date ของ oracle คุณจะต้องทดสอบและดู ไม่ว่าในกรณีใด ให้ใช้ cfqueryparameter ด้วยเหตุผลหลายประการ

นอกจากนี้ควรระมัดระวังในการใช้ between กับ oracle ฟิลด์วันที่ประกอบด้วยส่วนประกอบเวลา หากบันทึกใดของคุณมี คุณจะปลอดภัยยิ่งขึ้น

where trade_date >= YourStartDate
and trade_date < TheDayAfterYourEndDate
person Dan Bracuk    schedule 21.03.2014
comment
ขอบคุณแดน แม้ว่าฉันเคยพยายามใช้ตัวเลือกที่ 1 ของ <cfinclude> และมันก็ได้ผล นอกจากนี้ ฉันยังต้องห่อข้อความค้นหาด้วยแท็ก <cfoutput> ในไฟล์ Query.cfm - person Gaurav S; 21.03.2014