0 votos
20 visitas

Bom dia,
Tem como mostrar um campo string no formulário, mas ocultá-lo na janela de escolha de campos de busca da treeview?
Isso é possível via builder ou macro?

Se não for possível, tem como interceder na montagem da cláusula where e tratar esse campo modificando o where que o builder montou? (veja ponto do debug abaixo, aonde o runner monta o filtro da árvore)
Entrando "TreeViewEditing".
Permite edição do node.
Verificando texto digitado na árvore.
Filtro para árvore: (UPPER(A.DESCRICAO) LIKE 'AMB%')
TreeViewCollapsing
TreeViewCollapsed
Gerando o SQL para árvore.
In  ModuleOnNodeWhere
Out ModuleOnNodeWhere

qWork.Open
qLoadQuery.Open
qLoadQuery.Close
qWork.Close
TreeViewExpanding

 

por (17 pontos) | 20 visitas

1 Resposta

0 votos
Bom, como não encontrei solução alternativa, o que fiz para:

1- Impedir que o campo apareça na treeview para que o usuário não faça pesquisa por ele:
- tornei o campo invisível nessa carga, e criei um campo do tipo rótulo para exibir a informação no formulário

2) Alterar a busca de forma mais performática usando o % no meio da busca e não no final:
- Como o usuário conhece somente uma parte final do campo (ex.os ultimos 7 caracteres) criei um botão na carga que ao ser clicado abre uma janela e pede para o usuario digitar parte dos ultimos digitos do campo que ele conhece (ex. se quer procurar o codigo "SAXXXXX0220023200000223344"digita só: 223344), ai faço uma query no banco buscando esse campo de forma "REVERSA"
WHERE REVERSE(RTRIM(CODIGO_X)) LIKE reverse('" + "%" + vMeuCampo + "')"
(vai ficar assim--> ... like '443322%'

Como no cliente esta tabela tem mais de 70 milhoes de registro, criei no banco de dados um indice por função reversa:REVERSE(RTRIM(CODIGO_X)).

O resultado da query é apresentado num grid com outras informações, o usuário da um duplo clic na linha e copio o campo CHAVE do registro pra memoria (clippboard), se ele quiser pesquisar mais detalhes da tabela, ele cola o campo chave na treeview e busca normalmente o restante das informacoes que quer.
por (17 pontos)
434 perguntas
484 respostas
350 comentários
466 usuários