2009-06-12 18 views
2

次のコードのエラー:CFCに引数を動的に設定することはできますか?

<cfdbinfo datasource="#Application.DSN#" name="getCols" type="columns" table="#this.tableName#"> 
<cftry> 
    <cfquery name="getColumnDetails" dbtype="query"> 
    SELECT COLUMN_NAME,TYPE_NAME 
    FROM getCols 
    WHERE IS_PRIMARYKEY = 'NO' 
    </cfquery> 
    <cfcatch> 
    <cfset this.ErrorState = true> 
    <cfthrow message="General DB Error"> 
    </cfcatch> 
</cftry> 

<cfloop query="getColumnDetails"> 
    <cfargument name="#getColumnDetails.COLUMN_NAME#" displayName="values" type="Any" required="false" /> 
</cfloop> 

が、私は実際に動的にCFC —の引数を設定することが可能であるか、それは単に構造体を渡すと、その対処した方がよいかどうかを知りたいですか?

おかげ
ロブ

+0

質問のタイトルの入力ミスのためのお詫び - 金曜日のようなものが起こることになっているようなものです! –

+0

@robdudley:ここであなた自身のものをいつでも編集できます。十分な評判があれば、他人のものも編集できます。 ;-) CFCは議論をすることができませんが、私はあなたがを参照していると思いますか? – Tomalak

答えて

0

一つの方法私は、これらの線に沿って何かで何をやっているのと同様のことを行うことを試みてきましたcolumnValues構造体で検索するインデックス。その値が構造体に存在する場合、yo'ure good;それ以外の場合は、更新の列を無視します。

あなたは、このような何か関数を呼び出したい:あなたは

交互

探している列を取得するには、あなたがpotentialColumns引数を無視し、ただでその情報を得ることができる

あなたのcfc:

<cffunction name="doSomethingWithDatabase"> 
<cfargument name="columnValues" type="struct"> 
<cfset potentialColumns = getMyColumns()> 
.... loop.... 
1

ないチャンス!

2通りの方法で、cfargumentタグを定義せずに、それらをStructKeyExists(ARGUMENTS、aDynamicName)で渡すか、コードジェネレータを作成してファイルに書き込んでください。リストとしての各要素を使用して、潜在的な列のリストの上に

<cffunction name="doSomethingWithDatabase"> 
<cfargument name="potentialColumns" type="string"> 
<cfargument name="columnValues" type="struct"> 

、その後ループ: