quinta-feira, 10 de março de 2016

Wx - Busca incremental autocomplete, busca filtrada, busca ao digitar exibe os dados do retorno de cada tecla digitada, busca com like



Link forum.pcsoft.fr/fr-FR/pcsoft.br.windev/1031-busca-incremental-autocomplete-busca-filtrada-busca-digitar-exibe-1035/read.awp



Prezados,

Segue aqui a técnica para a Busca filtrada incremental.

A cada tecla digitada faz isso no embed evento modifiy do campo faz a consulta no banco de dados

TableDeleteAll(nome da tabela)
consulta com parâmetro
HExecuteQuery(com a consulta usando conteins = like)
For each qyery
TableAdd(.......
END
TableDisplay(nome da tabela,taReExecuteQuery)
TableDisplay(nome da tabela,taInit)


A lógica é básica:
1 - limpar controle Table, looper, combo.... ou outro controle similar.
2 - buscar registros do que tem no campo de edição
3 - preencher controle com o retorno da busca no banco a cada tecla editada, como faz muito rápido da o efeito esperado.

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/




0
0




Membre enregistré
1 525 messages
Popularité : +89 (91 votes)
Posté le 10 mars 2016 - 17:11
Passo a passo:




-- Script generated by WinDev on 10/03/2016 11:22:04
-- Tables of Help.wda analysis
-- for Generic SQL (ANSI 92)

-- Creating the T000_Enderecos table
CREATE TABLE "T000_Enderecos" (
"T000_ID" NUMERIC(19,0) PRIMARY KEY ,
"T000_Endereco" VARCHAR(50) ,
"T000_Numero" INTEGER ,
"T000_Bairro" VARCHAR(50) ,
"T000_Cidade" VARCHAR(50) ,
"T000_UF" VARCHAR(2) ,
"T000_CEP" VARCHAR(8) );


Query




SELECT 
T000_Enderecos.T000_ID AS T000_ID, 
T000_Enderecos.T000_Endereco AS T000_Endereco, 
T000_Enderecos.T000_Numero AS T000_Numero, 
T000_Enderecos.T000_Bairro AS T000_Bairro, 
T000_Enderecos.T000_Cidade AS T000_Cidade, 
T000_Enderecos.T000_UF AS T000_UF, 
T000_Enderecos.T000_CEP AS T000_CEP
FROM 
T000_Enderecos
WHERE 
T000_Enderecos.T000_Endereco LIKE %{pEndereco}%


Tela




O Browserlist deve ser do tipo programado




Código no campo de busca:




//Busca incremental

bTemRegistros is boolean

TableDeleteAll(TABLE_QRY_Select_Endereco_Filtrado)

ok is boolean = HExecuteQuery(QRY_Select_Endereco_Filtrado, hQueryDefault, EDT_Busca_incremental)

IF ok = True THEN

FOR EACH QRY_Select_Endereco_Filtrado 

bTemRegistros = HFound(QRY_Select_Endereco_Filtrado)

IF bTemRegistros = True THEN

TableAdd(TABLE_QRY_Select_Endereco_Filtrado, QRY_Select_Endereco_Filtrado.T000_ID + TAB+...
QRY_Select_Endereco_Filtrado.T000_Endereco + TAB +...
QRY_Select_Endereco_Filtrado.T000_Numero + TAB +...
QRY_Select_Endereco_Filtrado.T000_Bairro + TAB +...
QRY_Select_Endereco_Filtrado.T000_Cidade + TAB +...
QRY_Select_Endereco_Filtrado.T000_UF + TAB +...
QRY_Select_Endereco_Filtrado.T000_CEP) 
END

END 

END

TableDisplay(TABLE_QRY_Select_Endereco_Filtrado,taReExecuteQuery)

TableDisplay(TABLE_QRY_Select_Endereco_Filtrado,taInit)


Resultado




:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/




0
0




Membre enregistré
1 525 messages
Popularité : +89 (91 votes)
Posté le 10 mars 2016 - 17:17
Ao abrir a janela

Query sem filtro: QRY_Select_Endereco

SELECT
T000_Enderecos.T000_ID AS T000_ID,
T000_Enderecos.T000_Endereco AS T000_Endereco,
T000_Enderecos.T000_Numero AS T000_Numero,
T000_Enderecos.T000_Bairro AS T000_Bairro,
T000_Enderecos.T000_Cidade AS T000_Cidade,
T000_Enderecos.T000_UF AS T000_UF,
T000_Enderecos.T000_CEP AS T000_CEP
FROM
T000_Enderecos


Código no open da janela:

//Busca incremental

bTemRegistros is boolean

TableDeleteAll(TABLE_QRY_Select_Endereco_Filtrado)

ok is boolean = HExecuteQuery(QRY_Select_Endereco, hQueryDefault)

IF ok = True THEN

FOR EACH QRY_Select_Endereco_Filtrado

bTemRegistros = HFound(QRY_Select_Endereco_Filtrado)

IF bTemRegistros = True THEN

TableAdd(TABLE_QRY_Select_Endereco_Filtrado, QRY_Select_Endereco_Filtrado.T000_ID + TAB +...
QRY_Select_Endereco_Filtrado.T000_Endereco + TAB +...
QRY_Select_Endereco_Filtrado.T000_Numero + TAB +...
QRY_Select_Endereco_Filtrado.T000_Bairro + TAB +...
QRY_Select_Endereco_Filtrado.T000_Cidade + TAB +...
QRY_Select_Endereco_Filtrado.T000_UF + TAB +...
QRY_Select_Endereco_Filtrado.T000_CEP)
END

END

END

TableDisplay(TABLE_QRY_Select_Endereco_Filtrado,taReExecuteQuery)

TableDisplay(TABLE_QRY_Select_Endereco_Filtrado,taInit)


Resultado:




Pronto

Simples Assim... agora é só juntar o quebra cabeças do que ja postei e ter os recursos que precisa.

Forte abraço e bons estudos.

Ahhh... não esqueça de dar o joinha se gostou do post!

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/










Nenhum comentário:

Postar um comentário

Teste

Teste
teste