+4 votos
136 visitas
O código abaixo não está funcionando conforme esperado:

sWhere := sWhere + ' AND ' + CurrentSystemWrapper.BuildINSqlClause('HANDLE', _dbProduto.GetSelectedHandles, True);
por (33 pontos)
editado por | 136 visitas

1 Resposta

+3 votos
Melhor resposta

A função do TBFilter GetSelectedHandles retorna a lista de handles separados virgula.

A função BuildINSqlClause espera uma lista de handles separada por pipe.

Um cuidado extra com a função BuildINSqlClause é que o terceiro parâmetro informa se é uma lista com descrição, obtida por um campo do tipo filtro, onde os handles estão dispostos no formato 1|_|2|_|3|_

Veja exemplos:

Sistema.BuildINSqlClause("A.HANDLE", "1|_|2|_|3|_", True);

Sistema.BuildINSqlClause("A.HANDLE", "1|2|3", False);

Sistema.BuildINSqlClause("A.HANDLE", "1,2,3", False); // Ops, deve ser com PIPE.

 

Documentação do BuildINSqlClause disponível em:

http://wiki.benner.com.br/wiki/index.php?title=BSistema.BuildINSqlClause

por (368 pontos)
selecionada por
Você sabia? O campo TBFilter originalmente gravava as informações no formato:
1|Maria|2|João|3|Marta

Se os registros fosem alterados o TBFilter mostrava o valor antigo do registro.
Por isso não é mais gravada a legenda do registro, porém o formato deveria ser mantido, logo passou-se a gravar: 1|_|2|_|3|_.
Melhores Sep 2026
    200 pontos
    Melhores 2026 Sep 14 - 20
    1. Larson

      165 Pontos

    2. danilo.pereira

      96 Pontos

    3. danilo.pereira

      96 Pontos

    4. danilo.pereira

      96 Pontos

    5. luciano.fronza

      61 Pontos

    6. luciano.fronza

      61 Pontos

    7. luciano.fronza

      61 Pontos

    8. diuari.molinari

      52 Pontos

    9. diuari.molinari

      51 Pontos

    10. diuari.molinari

      51 Pontos

    518 perguntas
    568 respostas
    389 comentários
    802 usuários