2017-03-03 73 views
1

我有一個可以返回多個記錄的查詢。我在查詢中有兩列,一列輸出日期值,第二列是類型。我想檢查每一行的類型並輸出列表中的日期。我目前的代碼出於某種原因輸出所有日期值在同一個輸入字段,這不是我想要的。這裏是我的代碼: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> 

查詢將產生的記錄是這樣的:

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個獨立的輸入字段輸出這些記錄:

<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> 

我當前的代碼將輸出所有日期值在相同的隱藏字段,看起來我的cfif語句被忽略/不正確。如果有人看到我的問題或不同的方式來解決這個問題,請讓我知道。

+0

如果你真的需要一個字段爲每種類型的,請嘗試使用分組輸出。雖然爲什麼不用這些名稱生成多個字段?這將在操作頁面上生成所需的CSV列表。另外,哪個DBMS? – Leigh

+0

你能提供任何例子嗎? –

+0

哪一個?您是否確實需要每種類型的單個表單字段,或者在操作頁面上爲每種類型都有單個值列表? – 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的日期,我認爲第二種解決方案將是更好的選擇。謝謝你的幫助! –

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編輯)ValueList()仍將使用所有值填充隱藏字段。 – Leigh

+0

這是正確的,我仍然可以隱藏所有的值。 –

+0

我上面的答案不是我實際提供的答案。這個答案不回答這個問題。請忽略它。 –