Verwenden von CFQuery und CFSEct, um mehrere Werte basierend auf der Auswahl zu ziehen
-
15-10-2019 - |
Frage
Ich habe einen CFQuery, der drei Säulen zieht. Mit dem folgenden CFSelect kann der Benutzer eine Auswahl aus verschiedenen Ergebnissen basierend auf dem Parameter "Anzeige" treffen und den Wert auf den Parameter "Wert" festlegt.
Ich möchte den dritten nicht verwendeten Wert dieses Datensatzes an eine Variable übergeben, die in einer späteren Abfrage verwendet werden soll. Ich kann das Feld "Wert" nicht auf die Spalte einstellen, die ich benötige, da dieser Wert in einer folgenden Abfrage benötigt wird (Abfragen füllen basierend auf früheren Dropdown -Auswahlen).
Gibt es eine Möglichkeit, dies zu tun? Um den CfSelect 2 separate Werte zu greifen?
Subregionname wird angezeigt.
Bundesland ist der Wert zu bestehen.
Subregioncd zum Dies Die Auswahl wird später benötigt.
Codebeispiel unten:
<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>
Jetzt muss ich die Subregioncd greifen, die der Benutzerauswahl von Zustand und Subregionnamen ausgewählt und einer Variablen zuweisen, die in der endgültigen Abfrage verwendet werden kann. Ich kann den Zustand nicht allein verwenden, um die Subregioncd zu bestimmen, aber ich kann einen Subregionnamen verwenden, um ein 1: 1-Übereinstimmung zu erzielen. Hilfe?
Lösung
Einfachste (in Bezug auf die Änderung des kleinsten Code-Codes) wäre vorhanden:
<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>
Und dann verwenden ListFirst(FORM.getSubTurf)
und ListLast(FORM.getSubTurf)
. Vergessen Sie auch nicht zu verwenden <cfqueryparam>
.
Andere Tipps
Um das Abfrageergebnis über Seiten aufrechtzuerhalten, müssen Sie den auf die Aktionsseite des Formulars zurückgegebenen Wert aufteilen ... Dies war die vorgeschlagene Antwort ... <cfqueryparam value ="#ListFirst(form.***)#>