Menetapkan nilai Variabel setelah membaca konten file

Saya memiliki pertanyaan yang sangat besar yang dipanggil dari 3 halaman berbeda. Daripada menulis kueri yang sama di ketiga file cfm, saya mencoba mencari cara alternatif untuk menyimpan kueri (bersama #variable(s)#) dalam file Query.cfm.

Contoh Query.cfm :

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

variabel : #f_startDate# dan #f_endDate#

Kemudian saya membaca isi file, menyimpannya dalam variabel dan mengganti #variable(s)# dengan nilai untuk menjalankan fungsi dari setiap halaman.

Halaman panggilan (kode sejauh ini tidak berfungsi):

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

Bagaimana cara mengatur nilai variabel ke dalam string?

Detail lebih lanjut tentang setiap halaman:

  1. Mengembalikan JSON kueri untuk memuat diagram

  2. Digunakan untuk menghasilkan data kueri dalam xls

  3. Digunakan selanjutnya untuk menghasilkan subset data kueri (QoQ) untuk membuat tabel.

Basis Data: Oracle


person Gaurav S    schedule 21.03.2014    source sumber


Jawaban (1)


Pilihan Anda meliputi:

  1. Masukkan kueri ke dalam templat .cfm dan akses dengan cfinclude
  2. Masukkan kueri ke dalam fungsi yang ditentukan pengguna dalam file .cfm. Kemudian cfinclude file tersebut dan panggil fungsinya.
  3. Masukkan kueri ke dalam fungsi yang ditentukan pengguna dalam file .cfc. Kemudian Anda dapat menjalankan fungsinya dengan cfinvoke, atau membuat objek lalu memanggil fungsinya.

Mungkin ada pilihan lain juga. Saya sarankan melihat tiga yang saya sarankan dan tentukan mana yang paling sesuai dengan kebutuhan Anda.

Apapun metode yang Anda gunakan, ColdFusion memiliki fungsi parsedatetime yang akan mengubah string Anda menjadi objek tanggal. Menggunakan ini mungkin lebih cepat dari fungsi to_date Oracle. Anda harus menguji dan melihatnya. Bagaimanapun, gunakan cfqueryparameter karena berbagai alasan.

Juga, berhati-hatilah dalam menggunakan antara dengan Oracle. Bidang tanggalnya mencakup komponen waktu. Jika ada catatan Anda yang memilikinya, Anda lebih aman menggunakannya

where trade_date >= YourStartDate
and trade_date < TheDayAfterYourEndDate
person Dan Bracuk    schedule 21.03.2014
comment
Terima kasih Dan. Bahkan saya telah berupaya menggunakan opsi pertama <cfinclude> dan BERHASIL. Selain itu, saya harus membungkus kueri dengan tag <cfoutput> di file Query.cfm. - person Gaurav S; 21.03.2014