2011-01-20 6 views
0

У меня есть CFQUERY, тянущий три столбца. Следующий CFSELECT позволяет пользователю делать выбор из различных результатов на основе параметра «display» и задает значение параметру «значение».Использование CFQUERY и CFSELECT для вытягивания нескольких значений на основе выбора

Я хотел бы передать третье неиспользованное значение этой записи переменной, которая будет использоваться в более позднем запросе. Я не могу установить поле «значение» в столбец, который мне нужен, поскольку это значение необходимо в запросе, следующем за этим (запросы заполняются на основе предыдущих выпадающих вариантов).

Есть ли способ сделать это? Чтобы каким-то образом CFSELECT захватить 2 отдельных значения?

Отображается SubRegionName.

Состояние - значение, которое необходимо пройти.

SubRegionCD для этот выбор необходимо позже.

Пример кода ниже:

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

Теперь мне нужно, чтобы захватить SubRegionCD, связанный с выбором пользователей государственных и SubRegionName и присвоить его переменной, которая может быть использована в окончательном запросе. Я не могу использовать State только для определения SubRegionCD, но я МОГУ использовать SubRegionName, чтобы сделать матч 1-1. Помогите?

ответ

1

Простейшие (с точки зрения Littlest-возможно изменение кода) будет делать:

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

И затем использовать ListFirst(FORM.getSubTurf) и ListLast(FORM.getSubTurf). Кроме того, не забудьте использовать <cfqueryparam>.

+0

Спасибо за ответ так быстро! Я собираюсь попробовать это первым утром и ответить. – FrankDev

+0

К сожалению, приведенный выше код не работает должным образом. Запрос правильно захватывает два значения, а использование ListLast/First также захватывает правильное значение, но теперь моя форма больше не поддерживает его выбор между представлениями страниц (выбор пользователя Region и SubRegion сбрасывается на пустой). Это то, что вы имели в виду, напомнив мне использовать ? Если да, то каков будет синтаксис для обеспечения сохранения этих значений? Благодаря! – FrankDev

0

Для поддержания результата запроса между страницами вы должны разделить возвращаемое значение на страницу действий формы в ... это было ответ предложил ... <cfqueryparam value ="#ListFirst(form.***)#>