ColdFusionの関数として用意されている QueryNew()関数、QueryAddRow()関数、QuerySetCell()関数を使用して仮想のクエリオブジェクトを作成することができます。仮想クエリオブジェクトは、通常のデータベースから取得したクエリオブジェクトと同様にレコード数分のループやクエリオブクエリによる絞り込みが可能ですので便利な機能ですが、一点注意事項があります。
それはQueryNew()関数を使用して空のクエリオブジェクトを作成する際、必須のパラメーターである列名(カラム)リストとともに、オプションパラメーターであるカラムタイプリストを指定しないと、こちらが想定しているデータ型とは異なるデータ型でColdFusion内部で取り扱われてしまう可能性がある事です。
カラムタイプリストはColdFusion MX 7 から追加された項目で、空のクエリオブジェクトを作成する際に、それぞれの列(カラム)に格納する値(データ)の型を事前に指定しておくための項目となります。もし、この項目を指定していないとColdFusionは自動でデータ型を割り当てます。そのため、文字を入れようと思った列(カラム)がColdFusionでは数字型として扱われていたり、クエリオブクエリが正しく行えないなどの問題が発生する場合があります。
ColdFusion MX 7 よりも前の古いバージョンで動かしていたプログラムを最新のバージョンで動作させた際に、QueryNew()の動きがおかしい場合はカラムタイプリストを指定して動作をご確認下さい。
#QueryNew(columnlist [, columntypelist])#
<cfset qEmp = QueryNew("ID, Name, Advanced", "Integer, VarChar, Bit")> <cfset QueryAddRow(qEmp, 2)> <cfset QuerySetCell(qEmp, "ID", "1001", 1)> <cfset QuerySetCell(qEmp, "Name", "サムライズ太郎", 1)> <cfset QuerySetCell(qEmp, "Advanced", False, 1)> <cfset QuerySetCell(qEmp, "ID", "1002", 2)> <cfset QuerySetCell(qEmp, "Name", "サムライズ花子", 2)> <cfset QuerySetCell(qEmp, "Advanced", True, 2)> <cfdump var="#qEmp#">
ColdFusion 10では、上記の書き方に加えて QueryNew()関数の初期化のタイミングでクエリデーターの値の指定が可能です。詳しくは下記の「参考情報」のリンク先の「使用方法」をご覧ください。
記事公開日:2013年01月28日
最終更新日:2013年01月31日
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.
Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.