2016-09-20 3 views
0

Я использую элемент Apex Текстовое поле с автозаполнением, загружая список результатов с помощью простого SQL-запроса. Я заметил, что если я наложу ограничение на размер списка, тогда как я набираю строку поиска, список перестает отображаться, даже если запрос по-прежнему дает достоверные результаты. Это происходит с отключенной опцией Lazy Loading.Текстовое поле Autocomplete

SQL код:

select PESS_NM from (
SELECT P.PESS_CD, 
    P.PESS_DV, 
    P.PESS_NM, 
    P.PESS_CEFT_CD, 
    C.CEFT_DS 
FROM SP.PESSOAL P, SP.CAREFETIVO C 
WHERE P.PESS_CEFT_CD = C.CEFT_CD 
) where (
instr(upper("PESS_NM"),upper(nvl(:P164_NOME_PARTICIPANTE,"PESS_NM"))) > 0) 

Textfield Autocomplete properties on Page Designer

Я пытался использовать большой предел (999). В таблице содержится достаточное количество записей (около 20000). В тот момент, когда я удалил лимит на число itens в списке, все работает нормально.

В чем причина этого?

ответ

0

Вы не должны включать предложение where-where. instr(upper("PESS_NM"),upper(nvl(:P164_NOME_PARTICIPANTE,"PESS_NM"))) > 0)

Apex сам по себе будет фильтровать значения (скорее всего, он упакует ваш запрос во внутренний запрос, а затем добавит предложение where). Добавив в это where-clause, вы настраиваете себя на проблемы, поскольку сам элемент не будет постоянно передаваться в состояние сеанса. Список, который вы указываете, должен быть полным списком (если нет родительских элементов, которые должны ограничивать выбор).

Например:

SELECT P.PESS_NM 
FROM SP.PESSOAL P, SP.CAREFETIVO C 
WHERE P.PESS_CEFT_CD = C.CEFT_CD 
Смежные вопросы