1

次のコードエラー:

<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の引数を動的に設定できるかどうかを本当に知りたいのですが、それとも単に構造体を渡してそれを処理する方がよいのでしょうか。

ありがとう
ロブ

4

2 に答える 2

1

ありそうもない。

あなたが言ったように、2つの方法は、cfargumentタグを定義せず、代わりにStructKeyExists(ARGUMENTS、aDynamicName)で渡されるタグを探すか、コードジェネレーターを作成してこれらのメソッドをファイルに書き込みます。

于 2009-06-12T15:10:41.963 に答える
0

私があなたがしていることと同じようなことをしようとした一つの方法は、これらの線に沿った何かです:

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

次に、潜在的な列のリストをループし、リスト内の各要素をcolumnValues構造体で検索するインデックスとして使用します。その値が構造体に存在する場合は、それで問題ありません。それ以外の場合は、更新でその列を無視します。

次に、関数を次のように呼び出します。

探している列を取得するには

または、potentialColumns引数を無視して、cfcでその情報を取得することもできます。

<cffunction name="doSomethingWithDatabase">
<cfargument name="columnValues" type="struct">
<cfset potentialColumns = getMyColumns()>
.... loop....
于 2009-06-12T16:09:39.560 に答える