Fiz um formulário que pede um select de uma tabela muito extensa. Impossível carregar em um select comum, e seria inviável solicitar ao usuário que selecionasse um ítem entre tantos. Solução: ou autocomplete, ou onlinesearch...
Fui ao autocomplete primeiro, que parecia já ter uma solução para o que eu pretendia, pois é a tabela de táxons (espécies). Eis uma de tantas tentativas que fiz:
<código>
frm->addTextField( 'SEQ_TAXONOMIA', 'Espécie:', 60,true )->setExampleText( 'Digite os 3 primeiros caracteres.')->addEvent('onblur','validarEspecie(this)');
$frm->setAutoComplete( 'SEQ_TAXONOMIA' // nome do campo
, 'sistaxon' // '(select SEQ_TAXONOMIA, NOM_CIENTIFICO from sistaxon) as taxredux' // tabela ou pacote
, 'NOM_CIENTIFICO' // campo de busca
, null // campo de atualização
, true // desabilita campo de atualização
, null // campo de busca extra
, null // chama javascript
, 3 // caracteres mínimos a digitar para iniciar busca automática
, 1000 // atrazo para iniciar busca
, 50 // máximo de ítens a mostrar
, null // tempo de cache
, null // remover máscara
, null // url que devolverá os dados para o autocomplete no formato "descriçao|chave\n"
, null // chama os parâmetros
, true ); //hint
<código>
Os arquivos salvar e dao não apresentam quaisquer modificações a partir do padrão. Já tentei várias outras combinações, colocando um campo hidden com o nome da coluna a ser carregada (acusa erro ao clicar no botão salvar, dizendo que o valor está nulo) e outras, mas nada surte efeito.
Nesta forma, e em outras semelhantes, o campo é preenchido com zero (0), o que encontra correspondência na tabela, salvando sempre como se estivesse sido escolhida a mesma espécie, não importa qual espécie o usuário escolher ao preencher o formulário.
Qualquer sugestão é bem vinda. Obrigada.
Autor: Cláudia de Aguiar
44 comentários
$frm->addTextField( 'nom_cientifico', 'Espécie:', 60,true )->setExampleText( 'Digite os 3 primeiros caracteres.')->addEvent('onblur','validarEspecie(this)');
$frm->setAutoComplete( 'nom_cientifico' // nome do campo
, 'sistaxon' // '(select SEQ_TAXONOMIA, NOM_CIENTIFICO from sistaxon) as taxredux' // tabela ou pacote
, 'NOM_CIENTIFICO' // campo de busca
, 'SEQ_TAXONOMIA' // campo de atualização
, true // desabilita campo de atualização
, null // campo de busca extra
, null // chama javascript
, 3 // caracteres mínimos a digitar para iniciar busca automática
, 1000 // atrazo para iniciar busca
, 50 // máximo de ítens a mostrar
, null // tempo de cache
, null // remover máscara
, null // url que devolverá os dados para o autocomplete no formato "descriçao|chave\n"
, null // chama os parâmetros
, true ); //hint Abraço.