Alterar a SQL(consulta) da Lista dinâminca.



  • Como faço para Alterar a SQL(consulta) do componente da Lista dinâminca,ou então, passar um parametro para filtrar aquela Consulta que a gente define lá nas propriedade. Queria passar um paramentro ou alterar aquela consulta usuando o fluxo.
    Sei que tem como filtar passsa uma contanstante "Componente_Campo", mas isso não me serve. Preciso alterar via fluxo, quem poder me ajudar agradeço.


  • A função "Ao preencher lista" não serve para você? Pode chamar um fluxo e preencher de acordo com a necessidade.


  • Não tem uma função para alterar dinamicamente a consulta da Lista dinâmica, o que pode ser feito é utilizar o evento "Ao preencher lista", que é executado ao clicar na seta dessa lista. O fluxo associado a este evento deve retornar um objeto lista de lista ou um mapa, a função "Tabela para Lista" já retorna no formato correto. Utilizando este evento, as propriedades SQL, campo lista e campo chave não deverão ser utilizados.

    Link do manual sobre o evento:
    http://suporte.softwell.com.br/maker/manual2_6/pt/maker_2/formulario/propriedades_e_eventos.htm

    Lembrando que a lista dinâmica pode ser filtrada também por uma variável de sessão, usando a seguinte sintaxe no critério:
    =:FUNCAO_sessao_<nome da variável de sessão>


  • valeu pela ajuda ai pessoal.


  • [quote="Júnior"]Lembrando que a lista dinâmica pode ser filtrada também por uma variável de sessão, usando a seguinte sintaxe no critério:
    =:FUNCAO_sessao_<nome da variável de sessão>[/quote] Tentei utilizar esse método mas não obtive sucesso.

    Na consulta do componente defini como parâmetro:

    > :FUNCAO_sessao_minhaVariavelSessao

    Está correto a sintaxe?

    Se sim, quando altero o valor da variável da sessão preciso atualizar o componente?


  • Não é necessário atualizar, pois quando você clica na seta da lista dinâmica a consulta é recarregada e consequentemente irá obter o novo valor da variável de sessão.

    Lembre-se: esse procedimento não altera o valor do componente e sim filtra os resultados quando você clicar na seta da lista, caso você queira selecionar um valor da lista, deve-se utilizar alterar valor do componente, passando o campo chave existente na lista dinâmica.

    Utilize também um botão para obter a variável de sessão usando a função com esse mesmo nome. Com isso você verifica se o valor está definido corretamente. Outro teste é passar um valor fixo no filtro e verificar se é filtrado corretamente.


  • Olha isso, verifica se estou fazendo algo de errado.

    Tenho um cadastro de UF. No banco está definido a tabela com 27 registros.

    Criei um formulário para testar isso, coloquei uma lista dinâmica (uf), uma caixa de texto (variavel da sessao) e dois botões (filtrar, limpar).

    Na SQL do componente eu defini o seguinte critério para o campo código que é a chave primária da tabela:
    > :FUNCAO_sessao_testeVariavelSessao

    No botão filtrar defini no fluxo a variável da sessão com contéudo do tipo letras e o valor 25.

    E no botão limpar defini com valor 0.

    Além de definir a variável da sessão nos fluxos, também estou jogando os valores da variável para o componente caixa de texto para verificar se está correto o valor.

    Agora o teste. Quando clico no botão limpar, a lista dinâmica aparece certinha, com os registros de 1 ao 27, quando clico no botão filtrar o retorno da lista são os números 3, 4, 5, 6, 7, 8, 9, 26 e 27. Deu pra intender que ele está comparando os números de 1 à 9 com somente o 1º algarismo, e os valores de 10 à 27 com os 2° algarismo da variável da sessão.

    A comparação do critério é feita com um campo do tipo INTEGER do banco.

    Já aconteceu isso com alguém que conseguiu resolver?


  • Segue exemplo
    [72_filtrar_lista_por_vari_vel_de_sess_o.rar](/assets/uploads/files/72_filtrar_lista_por_vari_vel_de_sess_o.rar)


  • Pior que não consigo encontrar o porque o meu ele consulta errado. Se der dê uma olhadinha.
    [154_teste_-_lista_din_mica.rar](/assets/uploads/files/154_teste_-_lista_din_mica.rar)


  • Cara revisa seu exemplo, utiliza o depurador, pois efetuei alguns testes aqui e funcionou corretamente. Só ocorreu algo estranho com o componente em branco que você colocou, mas quando fechei e abri de novo o formulário, funcionou corretamente.

    Utilizei alterar valor do componente para alterar a lista dinâmica e também funcionou corretamente.

    Att.,

Log in to reply