Buscar produto por Codigo, Descricao e Codigo de barras no mesmo Edit
26/01/2020
0
Estou precisando fazer uma consulta de produtos para a tela de vendas, onde gostaria de Buscar o produto por Codigo, Descricao e Codigo de barras usando um unico Edit onde o usuario irá digitar. Alguém pode me ajudar ?
Estou usando Delphi 7 e Firebird 2.5
Josenildo Rosa
Post mais votado
17/02/2020
if Edit1.Text > '' then with DM.QProd do begin Close; SQL.Clear; SQL.Add('SELECT * FROM PRODUTOS '); SQL.Add('WHERE (P_ID = :ID) OR (P_NOME LIKE :NOME) OR (P_CBARRAS LIKE :BARRAS) '); ParamByName('ID').AsInteger := StrToIntDef(Edit1.Text,-1); // aqui, se você digitar um texto, será utilizado -1 no resultado ParamByName('NOME').AsString := Edit1.Text+'%'; ParamByName('BARRAS').AsString := Edit1.Text; Open; Panel1.Caption := DM.QProdP_NOME.Value; end;
Emerson Nascimento
Mais Posts
27/01/2020
Raimundo Pereira
Você pode usar um grupo de rádio button - Com as 3 opções, cada opção montando um select diferente para consulta.
Ou você pode verificar se no edit pesquisa só possui números, se sim, você realiza outra verificação : Se for menor que 12 caracteres
Você pesquisa pelo código se for = ou maior que 12 caracteres você pesquisa pelo código de barras
Se não for somente número você pesquisa pela descrição
Espero que ajude
27/01/2020
Josenildo Rosa
Você pode usar um grupo de rádio button - Com as 3 opções, cada opção montando um select diferente para consulta.
Ou você pode verificar se no edit pesquisa só possui números, se sim, você realiza outra verificação : Se for menor que 12 caracteres
Você pesquisa pelo código se for = ou maior que 12 caracteres você pesquisa pelo código de barras
Se não for somente número você pesquisa pela descrição
Espero que ajude
Obrigado P2 pela dica, mas isso eu já faço em outras situações, estou querendo implementar isso na tela PDV só que que não sei como faço, pois o usuário pode entrar com o código do produto ou código de barras ou pela descrição do nome.
31/01/2020
Emerson Nascimento
SELECT * FROM PRODUTO WHERE (CODIGO LIKE '%'+Edit1.Text+'%' OR DESCRICAO LIKE '%'+Edit1.Text+'%' OR CODBAR LIKE '%'+Edit1.Text+'%')
03/02/2020
Anderson Gonçalves
Estou precisando fazer uma consulta de produtos para a tela de vendas, onde gostaria de Buscar o produto por Codigo, Descricao e Codigo de barras usando um unico Edit onde o usuario irá digitar. Alguém pode me ajudar ?
Estou usando Delphi 7 e Firebird 2.5
Fala boy,
Eu posso ajudar mas você precisa ser mais específico, você quer que ele busque os três ao mesmo tempo, ou um de cada vez só que no mesmo campo de pesquisa (Edit)?
Entra em contato que eu ajudo você.
Skype: anderson@case13.com.br
07/02/2020
Josenildo Rosa
Estou precisando fazer uma consulta de produtos para a tela de vendas, onde gostaria de Buscar o produto por Codigo, Descricao e Codigo de barras usando um unico Edit onde o usuario irá digitar. Alguém pode me ajudar ?
Estou usando Delphi 7 e Firebird 2.5
Fala boy,
Eu posso ajudar mas você precisa ser mais específico, você quer que ele busque os três ao mesmo tempo, ou um de cada vez só que no mesmo campo de pesquisa (Edit)?
Entra em contato que eu ajudo você.
Skype: anderson@case13.com.br
Boa noite amigo, então depois de um certo tempo vi que se o usuario entrasse com o codigo do produto ou codigo de barra ou descrição, ficaria meio complicado no mesmo Edit. Então acho melhor deixar o usuario entrar com o codigo do produto e o codigo de barra e colocar uma tecla de atalho para fazer a pesquisa pela descrição .
Mas se tiver solução pros 3 métodos no mesmo edit e quiser me ajudar vou agradecer.
10/02/2020
Emerson Nascimento
SELECT * FROM PRODUTO WHERE (CODIGO LIKE '%'+Edit1.Text+'%' OR DESCRICAO LIKE '%'+Edit1.Text+'%' OR CODBAR LIKE '%'+Edit1.Text+'%')
12/02/2020
Josenildo Rosa
SELECT * FROM PRODUTO WHERE (CODIGO LIKE '%'+Edit1.Text+'%' OR DESCRICAO LIKE '%'+Edit1.Text+'%' OR CODBAR LIKE '%'+Edit1.Text+'%')
Oi Emerson desculpa pela demora, testei sim, mas dá erro, pois quando jogo o código do produto blz, mas quando digito a parcial do nome, ou do código de barras ele dá erro.
12/02/2020
Emerson Nascimento
SELECT * FROM PRODUTO WHERE (CODIGO LIKE '%'+left(Edit1.Text,tamanho_do_campo_codigo - 2)+'%' OR DESCRICAO LIKE '%'+left(Edit1.Text,tamanho_do_campo_descricao - 2)+'%' OR CODBAR LIKE '%'+left(Edit1.Text,tamanho_do_campo_codbar - 2)+'%')
algo como:
SELECT * FROM PRODUTO WHERE (CODIGO LIKE '%'+left(Edit1.Text,13)+'%' -- supondo que o campo tenha tamanho 15 OR DESCRICAO LIKE '%'+left(Edit1.Text,38)+'%' -- supondo que o campo tenha tamanho 40 OR CODBAR LIKE '%'+left(Edit1.Text,12)+'%') -- supondo que o campo tenha tamanho 14
13/02/2020
Josenildo Rosa
AO FAZER A CONSULTA QUANDO EU COLOCO O CODIGO DO PRODUTO ELE LOCALIZA LEGAL, AGORA QUANDO EU COLOCA A INICIAL DA DESCRICAO, DÁ O ERRO FALANDO QUE O QUE EU DIGITEI NÃO É UM VALOR INTEIRO, OU SEJA, ELE ENTENDE QUE TODOS OS CAMPOS SÃO INTEIROS
SEGUE A ESTRUTURA DA MINHA TABELA:
CREATE TABLE PRODUTOS (
P_ID INTEGER NOT NULL,
F_ID INTEGER,
G_ID INTEGER,
P_NOME VARCHAR(80) NOT NULL,
P_UN VARCHAR(3),
P_QTD NUMERIC(12,3),
P_QTDMIN NUMERIC(12,3),
P_REF VARCHAR(10),
P_CBARRAS VARCHAR(13),
P_VALIDADE DATE,
P_CUSTO NUMERIC(12,2),
P_LUCRO NUMERIC(12,2),
P_VENDA NUMERIC(12,2)
PRIMARY KEY(P_ID));
13/02/2020
Emerson Nascimento
16/02/2020
Josenildo Rosa
Boa noite Emerson,
A única analise que eu faço é verificar se o edit não está vazio.
Segue o codigo abaixo para analise:
if Edit1.Text <> '' then
begin
with DM.QProd do
begin
close;
SQL.Clear;
SQL.Add('SELECT * FROM PRODUTOS ');
SQL.Add('WHERE (P_ID LIKE :ID) OR (P_NOME LIKE :NOME) OR (P_CBARRAS LIKE :BARRAS)');
ParamByName('ID').AsInteger := StrToInt(Edit1.Text);
ParamByName('NOME').AsString := Edit1.Text+'%';
ParamByName('BARRAS').AsString := Edit1.Text;
Open;
Panel1.Caption := DM.QProdP_NOME.Value;
end;
end;
18/02/2020
Josenildo Rosa
if Edit1.Text > '' then with DM.QProd do begin Close; SQL.Clear; SQL.Add('SELECT * FROM PRODUTOS '); SQL.Add('WHERE (P_ID = :ID) OR (P_NOME LIKE :NOME) OR (P_CBARRAS LIKE :BARRAS) '); ParamByName('ID').AsInteger := StrToIntDef(Edit1.Text,-1); // aqui, se você digitar um texto, será utilizado -1 no resultado ParamByName('NOME').AsString := Edit1.Text+'%'; ParamByName('BARRAS').AsString := Edit1.Text; Open; Panel1.Caption := DM.QProdP_NOME.Value; end;
Show de bola Emersom muito obrigado era isso mesmo, eu não conhecia esse comando StrToIntDef no Delphi, agora sim a minha pesquisa está funcionando redondo.
Galera finalizo aqui esse tópico.
Parabéns Emerson e mais uma vez muito obrigado por existir pessoas como você que está disposto a compartilhar conhecimento. Abraços;.
Clique aqui para fazer login e interagir na Comunidade :)