2017-03-03 26 views
1

複数のレコードを返すクエリがあります。私は私のクエリで2つの列を、1つの列は日付の値を出力し、2番目の列は型です。私は、各行のタイプをチェックし、リスト内の日付を出力したいと思います。何らかの理由で私の現在のコードが同じ入力フィールドにすべての日付値を出力します。これは私が望むものではありません。ここに私のコードは次のとおりです。ColdFusionクエリは現在の行の値を取得しますか?

<cfquery name="getUserRec" datasource="MyDBone"> 
    SELECT CONVERT(VARCHAR(10), u_begDt, 101) AS u_begDt, u_type  
    FROM Users WITH (NOLOCK) 
    WHERE u_uid = <cfqueryparam value="#uid#" cfsqltype="cf_sql_char" maxlength="15"> 
     AND u_type IN ('A','C','M','S') 
</cfquery> 

クエリは、このようなレコードを生成します:

<cfoutput> 
    <input type="hidden" name="begDtA" id="begDtA" value="<cfif trim(getUserRec.u_type) EQ 'A'>#ValueList(getUserRec.u_begDt,",")#</cfif>" readonly="readonly" /> 
    <input type="hidden" name="begDtC" id="begDtC" value="<cfif trim(getUserRec.u_type) EQ 'C'>#ValueList(getUserRec.u_begDt,",")#</cfif>" readonly="readonly" /> 
    <input type="hidden" name="begDtM" id="begDtM" value="<cfif trim(getUserRec.u_type) EQ 'M'>#ValueList(getUserRec.u_begDt,",")#</cfif>" readonly="readonly" /> 
    <input type="hidden" name="begDtS" id="begDtS" value="<cfif trim(getUserRec.u_type) EQ 'S'>#ValueList(getUserRec.u_begDt,",")#</cfif>" readonly="readonly" /> 
</cfoutput> 

私の現在のコード:

u_begDt  u_type 
03/16/2017 A 
03/01/2017 C 
03/01/2017 S 
03/16/2017 M 
02/01/2013 S 
07/16/2015 A 

今、私は4つの別々の入力フィールドで出力これらのレコードをしたいと思います同一の隠しフィールドにすべての日付値を出力しますが、私のcfif文は無視されます。私の問題がどこにあるのか誰かがこの問題に近づく方法を見たら、私に知らせてください。

+0

あなたが本当にタイプごとに1つのフィールドが必要な場合は、グループ化された出力を使用してみてください。なぜこれらの名前のそれぞれに複数のフィールドを生成するだけではありませんか?これにより、アクションページに目的のCSVリストが作成されます。また、どのDBMS? – Leigh

+0

どのように表示する必要がありますか? –

+0

どちらですか?実際には、それぞれのタイプごとに単一のフォームフィールドが必要ですか、またはアクションページの各タイプごとに1つの値リストが必要ですか? – Leigh

答えて

3

、あなたが実際の値のリストでフィールドに事前または単にアクションページにその結果を生成する必要がありますか?

その結果を生成する必要がある場合は、特別な操作をする必要はありません。同じ名前の複数のフィールドを作成するだけです。結果は、アクションページの各タイプのcsvリストになります。あなたが本当に値のリストでフィールドを事前移入する必要がある場合

<cfoutput query="getUserRec"> 
    <input type="text" name="begDt#getUserRec.u_type#" 
     value="#dateFormat(getUserRec.u_begDt, 'mm/dd/yyyy')#" /> 
</cfoutput> 

は、グループ化されたcfoutputを使用しています。データベースクエリをorder by u_typeに変更します。 (SQLで日付をフォーマットする必要はありません。フロントエンドコードのままにしておきます)。次に、グループ化されたcfoutputを使用して、各u_typeの値のリストを作成します。

<cfoutput query="getUserRec" group="u_type"> 
    <cfset dates = []> 
    <cfoutput> 
     <cfset arrayAppend(dates, dateFormat(getUserRec.u_begDt, "mm/dd/yyyy"))> 
    </cfoutput> 
    <input type="text" name="begDt#getUserRec.u_type#" value="#arrayToList(dates)#" /> 
</cfoutput> 

結果:

BEGDTA 03/01/2015,03/16/2017 
BEGDTC 03/01/2017 
BEGDTM 03/16/2017 
BEGDTS 02/01/2013,03/01/2017 
+0

JavaScriptで各u_typeの日付を検証する/比較する必要があるので、2番目の解決策がより良い選択肢になると思います。ご協力いただきありがとうございます! –

1

あなたはより多くのこのような何かを試してみてください...

<cfoutput> 
<cfloop query="getUserRec"> 
    <cfif trim(u_type) EQ 'A'> 
    <input type="hidden" name="begDtA" id="begDtA" value="#ValueList(u_begDt,",")#" readonly="readonly" /> 
    </cfif> 
    <cfif trim(u_type) EQ 'C'> 
    <input type="hidden" name="begDtC" id="begDtC" value="#ValueList(u_begDt,",")#" readonly="readonly" /> 
    </cfif> 
</cfloop> 
</cfoutput> 
+0

(Typo edit)ValueList()は、隠しフィールドにすべての値を設定します。 – Leigh

+0

それは正しいです、私はまだ1つのすべての値を隠します。 –

+0

私の上記の答えは私が実際に提供した答えではありません。この答えは質問に答えません。それを無視してください。 –

関連する問題