Buscar produto por Codigo, Descricao e Codigo de barras no mesmo Edit

26/01/2020

0

Bom dia,

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

Josenildo Rosa

Responder

Post mais votado

17/02/2020

tente assim:
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

Emerson Nascimento
Responder

Mais Posts

27/01/2020

Raimundo Pereira

Bom dia Guerreiro

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
Responder

27/01/2020

Josenildo Rosa

Bom dia Guerreiro

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.
Responder

31/01/2020

Emerson Nascimento

algo assim:
SELECT * FROM PRODUTO
WHERE (CODIGO LIKE '%'+Edit1.Text+'%'
OR DESCRICAO LIKE '%'+Edit1.Text+'%'
OR CODBAR LIKE '%'+Edit1.Text+'%')
Responder

03/02/2020

Anderson Gonçalves

Bom dia,

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
Responder

07/02/2020

Josenildo Rosa

Bom dia,

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.
Responder

10/02/2020

Emerson Nascimento

você testou ?

SELECT * FROM PRODUTO
WHERE (CODIGO LIKE '%'+Edit1.Text+'%'
OR DESCRICAO LIKE '%'+Edit1.Text+'%'
OR CODBAR LIKE '%'+Edit1.Text+'%')
Responder

12/02/2020

Josenildo Rosa

você testou ?

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.
Responder

12/02/2020

Emerson Nascimento

qual o erro apresentado?
Responder

12/02/2020

Emerson Nascimento

se for erro pelo tamanho do campo, faça assim:
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

Responder

13/02/2020

Josenildo Rosa

qual o erro apresentado?


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));
Responder

13/02/2020

Emerson Nascimento

Provavelmente você faz alguma tratativa antes de levar o valor para a query. O ideal é você publicar o código utilizado para efetuar a pesquisa.
Responder

16/02/2020

Josenildo Rosa

Provavelmente você faz alguma tratativa antes de levar o valor para a query. O ideal é você publicar o código utilizado para efetuar a pesquisa.


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;
Responder

18/02/2020

Josenildo Rosa

tente assim:
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;.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar