ColdFusionでのクエリ上のcfloopで動的な属性名を取得する方法

StackOverflow https://stackoverflow.com/questions/2581394

  •  24-09-2019
  •  | 
  •  

質問

私は、クエリに対するcfloopの内側です。私は、属性を取得したいが、私はその属性が実行時までどうなるか分からないでしょう。 #qryResult[MyAttr]#を使用すると、エラーで失敗する「複雑なオブジェクトタイプは、単純な値に変換することはできません。」これを行うための構文は何ですか?

ここでは簡略化した例である:

<cfquery datasource="TestSource" name="qryResult">
    SELECT * FROM MyTable
</cfquery>

<cfloop query="qryResult">
    <cfset MyAttr="autoid" />
    <cfoutput>
        Test 1: #qryResult.autoid# <br/>  <!--- succeeds --->
        Test 2: #qryResult[MyAttr]# <br/> <!--- fails --->
    </cfoutput>
</cfloop>
役に立ちましたか?

解決

<cfloop query="qryResult">
  <cfset MyAttr="autoid" />
  <cfoutput>
   Test 1: #qryResult.autoid# <br/>  <!--- succeeds --->
   Test 2: #qryResult[MyAttr][qryResult.CurrentRow]# <br/> <!--- succeeds --->
  </cfoutput>
</cfloop>

CurrentRowはリテラル構文(query.col)で暗黙的です。 (ループ外で使用される場合、または1)それが<cfloop query="..."> / <cfoutput query="...">のインデックスに関連付けられています。

明示的に言及すると、「配列インデックス」構文(query[col][row])に必要である、query[col]のみ返すため(「複合型」エラーが参照している)列オブジェクト

副作用:あなたは(すなわち、多次元アレイのような)ループのクエリ結果の外部へのランダムアクセスのためにこれを使用することができます。あなたが興味あなたは、あなたが直接行にアクセスできることを、行の番号を知っていたら。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top