Olá pessoal alguém sabe fazer consulta usando edit sem colocar o asterisco. segue o que to usando hoje

CRUD - Delphi

14/07/2022

Olá pessoal alguém sabe fazer consulta usando edit sem colocar o asterisco. segue o que estou usando hoje
desta forma veja que esta lento, como o sistema esta em rede, e as vez trava.

query_bproduto.Close;
query_bproduto.SQL.Clear;
query_bproduto.SQL.Add('select * from produto where cbarra =:cbarra');
query_bproduto.ParamByName('cbarra').Value := edtcodbarras.Text;
query_bproduto.Open;
Gilson

Gilson

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

14/07/2022

você tem um índice pelo campo cbarra na tabela produto?
o uso do asterisco não é recomendado, mas no teu caso não deveria ser causa de lentidão, visto que há apenas uma tabela na pesquisa.

de qualquer modo, se o dataset query_bproduto servir apenas para saber se o produto existe, você pode fazer assim:
query_bproduto.Close;
query_bproduto.SQL.Clear;
query_bproduto.SQL.Add('select cbarra from produto where cbarra = :cbarra');
query_bproduto.ParamByName('cbarra').Value := edtcodbarras.Text;
query_bproduto.Open;


GOSTEI 0
Gilson

Gilson

14/07/2022

você tem um índice pelo campo cbarra na tabela produto?
o uso do asterisco não é recomendado, mas no teu caso não deveria ser causa de lentidão, visto que há apenas uma tabela na pesquisa.

de qualquer modo, se o dataset query_bproduto servir apenas para saber se o produto existe, você pode fazer assim:
query_bproduto.Close;
query_bproduto.SQL.Clear;
query_bproduto.SQL.Add('select cbarra from produto where cbarra = :cbarra');
query_bproduto.ParamByName('cbarra').Value := edtcodbarras.Text;
query_bproduto.Open;





obrigado por responder; Emerson Nascimento.

na verdada esta é a instrução;
***(busca por codigo de barras)**
query_bproduto.Close;
query_bproduto.SQL.Clear;
query_bproduto.SQL.Add('select * from produto where cbarra =:cbarra');
query_bproduto.ParamByName('cbarra').Value := edtcodbarras.Text;
query_bproduto.Open;
if query_bproduto.recordcount = 1 then
begin

**quando encontra*
vem pra cá edtProduto.Text := query_bproduto['produto'];
que é a instração 2
query_bproduto.Close;
query_bproduto.SQL.Clear;
query_bproduto.SQL.Add('SELECT * from produto where produto =:produto');
query_bproduto.ParamByName('produto').Value := edtproduto.Text;
query_bproduto.Open;
if not query_bproduto.isEmpty then
begin
edtProduto.Text := query_bproduto['produto'];
edtPreco.Text := query_bproduto['vvenda'];
edtund.Text := query_bproduto['und'];
idProduto := query_bproduto['id'];
edtPreco.text:= query_bproduto['vvenda'];

as vezes trava quando está em rede, são dois método, pois o segundo busca pelo nome do produto, para colocar na grid.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

14/07/2022

só vai funcionar se os campos NÃO estiverem persistidos em query_bproduto...
query_bproduto.Close;
query_bproduto.SQL.Text := 'select produto from produto where cbarra = '+QuotedStr(edtcodbarras.Text);
query_bproduto.Open;

if not query_bproduto.IsEmpty then // aqui não importa a qtde de registros; somente se encontrou algum registro
begin
	//quando encontra
	//vem pra cá
	edtProduto.Text := query_bproduto['produto'];

	query_bproduto.Close;
	query_bproduto.SQL.Text := 'SELECT * from produto where produto = '+QuotedStr(edtproduto.Text));
	query_bproduto.Open;

	if not query_bproduto.isEmpty then
	begin
		edtProduto.Text := query_bproduto['produto'];
		edtPreco.Text := query_bproduto['vvenda'];
		edtund.Text := query_bproduto['und'];
		idProduto := query_bproduto['id'];
		edtPreco.text:= query_bproduto['vvenda'];
	end;
end;
pra melhorar a performance é bom ter um índice pelo campo cbarra e outro pelo campo produto
GOSTEI 0
POSTAR