En utilisant CFQUERY et CFSELECT pour tirer plusieurs valeurs basées sur la sélection
-
15-10-2019 - |
Question
J'ai un CFQUERY tirant trois colonnes. Le CFSELECT suivant permet à l'utilisateur d'effectuer une sélection à partir de différents résultats en fonction du paramètre « display », et définit la valeur du paramètre « valeur ».
Je voudrais passer la troisième valeur inutilisée de ce disque à une variable à utiliser dans une requête ultérieure. Je ne peux pas définir le champ « valeur » à la colonne I besoin puisque cette valeur est nécessaire dans une requête suivante celui-ci (requêtes basées sur POPULATE baisse précédente baisse des sélections).
Est-il possible de le faire? Pour avoir en quelque sorte les CFSELECT saisir 2 valeurs distinctes?
SubRegionName est affiché.
État est la valeur à transmettre.
SubRegionCD cette sélection effectuée est nécessaire plus tard.
Exemple de code ci-dessous:
<cfquery name="qrySubTurf"
DATASOURCESTUFF>
SELECT SubRegionName, SubRegionCd, State
From dbo.tblRegions
where Region='#form.getRegion#' <!---Previous CFSELCT value--->
order by SubRegionName
</cfquery>
<cfselect name="getSubTurf"
style="width:220px"
size=1
multiple="no"
query="qrySubTurf"
value="state" <!---Value passed to the next CFQUERY--->
display="SubRegionName" <!---Value displayed to user--->
queryPosition="below"
onChange="AddForm.submit();">
<option value=""></option>
</cfselect>
Maintenant, je dois saisir l'SubRegionCD associée à la sélection des utilisateurs d'Etat et SubRegionName et l'assigner à une variable qui peut être utilisé dans la requête finale. Je ne peux pas utiliser seul Etat pour déterminer le SubRegionCD, mais je peux utiliser SubRegionName pour faire un match 1-1. Aide?
La solution
Simplest (en termes de Littlest-possible changement de code) serait de le faire:
<cfquery name="qrySubTurf"
DATASOURCESTUFF>
SELECT SubRegionName, SubRegionCd + ',' + State AS Key
From dbo.tblRegions
where Region=<cfqueryparam value="#form.getRegion#" cfsqltype="CF_SQL_VARCHAR">
order by SubRegionName
</cfquery>
<cfselect name="getSubTurf"
style="width:220px"
size=1
multiple="no"
query="qrySubTurf"
value="Key"
display="SubRegionName"
queryPosition="below"
onChange="AddForm.submit();">
<option value=""></option>
</cfselect>
puis utilisez ListFirst(FORM.getSubTurf)
et ListLast(FORM.getSubTurf)
. En outre, ne pas oublier d'utiliser <cfqueryparam>
.
Autres conseils
Pour maintenir le résultat de la requête dans les pages que vous devez diviser la valeur retournée à la page d'action de la forme ... ceci est la réponse a été suggéré ... <cfqueryparam value ="#ListFirst(form.***)#>