2017-03-03 2 views
1

J'ai une requête qui peut renvoyer plusieurs enregistrements. J'ai deux colonnes dans ma requête, une colonne sort les valeurs de date et la deuxième colonne est le type. Je veux vérifier le type de chaque ligne et afficher les dates dans la liste. Mon code actuel affiche pour une raison quelconque toutes les valeurs de date dans le même champ de saisie et ce n'est pas ce que je veux. Voici mon code:La requête ColdFusion obtient les valeurs de ligne actuelles?

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

requête produire des documents comme celui-ci:

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 

Maintenant, je voudrais sortir de ces enregistrement dans 4 champs d'entrée séparés:

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

Mon code actuel affichera toutes les valeurs de date dans le même champ masqué, semble que mes instructions cfif sont ignorées/incorrectes. Si quelqu'un voit où est mon problème ou une autre façon d'aborder ce problème s'il vous plaît faites le moi savoir.

+0

Si vous avez vraiment besoin d'un seul champ pour chaque type, essayez d'utiliser une sortie groupée. Pourquoi ne pas simplement générer plusieurs champs avec chacun de ces noms? Cela produira les listes CSV désirées sur la page d'action. Aussi, quel SGBD? – Leigh

+0

Pouvez-vous donner un exemple à quoi cela devrait ressembler? –

+0

Lequel? Avez-vous réellement besoin d'un seul champ de formulaire pour chaque type ou d'avoir une seule liste de valeurs pour chaque type sur la page d'action? – Leigh

Répondre

3

Avez-vous réellement besoin de pré-remplir les champs avec une liste des valeurs ou tout simplement produire ce résultat sur la page d'action?

Si vous avez juste besoin de produire ce résultat, alors inutile de faire quelque chose de spécial. Créez simplement plusieurs champs avec le même nom. Le résultat sera une liste csv pour chaque type sur la page d'action.

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

Si vous avez vraiment besoin de pré-remplir les champs avec une liste de valeurs, utilisez une cfoutput groupée. Modifiez votre requête de base de données à order by u_type. (Pas besoin de formater les dates en SQL. Laisser cela au code frontal). Ensuite, utilisez un cfoutput groupé pour créer une liste de valeurs pour chaque type de u.

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

Résultat:

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

Depuis que je dois valider/comparer les dates pour chaque u_type en JavaScript, je pense que la deuxième solution sera meilleure option. Merci de votre aide! –

1

Vous pouvez essayer quelque chose comme ça ...

<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

(Modification typographique) ValueList() remplira toujours les champs cachés avec toutes les valeurs. – Leigh

+0

C'est vrai, j'ai toujours toutes les valeurs cachées. –

+0

Ma réponse ci-dessus n'est pas la réponse que j'ai réellement fournie. Cette réponse ne répond pas à la question. S'il vous plaît ne tenez pas compte. –