Fórum Consulta está travando o sistema #264558
07/01/2005
0
Tenho no evento OnExit de um TDBEdit do meu form o seguinte código:
----------------------------------------------------------------------------------
procedure TPDV_.CodBarrasExit(Sender: TObject);
Var
ValorPagar, Qtd: Real;
begin
dm_.QryMerc.Close;
dm_.QryMerc.SQL.Clear;
dm_.QryMerc.SQL.Add(´Select * from Mercadorias WHERE CodBarras LIKE :codigo´);
if CodBarras.Text[1]=´2´ then
begin
dm_.QryMerc.ParamByName(´codigo´).AsString:= ´¬´+Copy(CodBarras.Text, 2, 6)+´¬´;
dm_.QryMerc.Open;
ValorPagar := (StrToFloat(Copy(CodBarras.Text, 8, 5)))/100;
Qtd := ValorPagar/dm_.QryMercValor.Value;
dm_.QryVendasPDVDescricao.Text := dm_.QryMercDescricao.Text;
dm_.QryVendasPDVAbreviacao.Text := dm_.QryMercAbreviacao.Text;
dm_.QryVendasPDVValor.Value := ValorPagar;
dm_.QryVendasPDVQtde.Value := Qtd;
dm_.QryVendasPDVTotalDoItem.Value := dm_.QryMercValor.Value*dm_.QryVendasPDVQtde.Value;
Mercadoria.Text := dm_.QryMercDescricao.Text;
dm_.QryVendasPDV.Append;
CodBarras.SetFocus;
end
else
begin
dm_.QryMerc.ParamByName(´codigo´).AsString:= ´¬´+CodBarras.Text+´¬´;
dm_.QryVendasPDVQtde.Value := 1;
dm_.QryMerc.Open;
dm_.QryVendasPDVDescricao.Text := dm_.QryMercDescricao.Text;
dm_.QryVendasPDVValor.Value := dm_.QryMercValor.Value;
dm_.QryVendasPDVAbreviacao.Text := dm_.QryMercAbreviacao.Text;
dm_.QryVendasPDVTotalDoItem.Value := dm_.QryVendasPDVValor.Value*dm_.QryVendasPDVQtde.Value;
Mercadoria.Text := dm_.QryMercDescricao.Text;
dm_.QryVendasPDV.Append;
CodBarras.SetFocus;
end;
end;
----------------------------------------------------------------------------------
O código acima serve para localizar mercadorias industrializadas e produtos diversos, através do código de barras.
Se é um código que começa por 7 a busca é direta, se começar por 2, ele faz uns cálculos para encontrar o produto e a quantidade (peso).
Está funcionando beleza graças às dicas do pessoal do ClubeDelphi. O grande problema é quando se tenta localizar mercadorias que não estão cadastradas. Ele trava completamente o sistema de tal forma que só resentando para voltar ao normal.
Quero implementar o código para que na situação de uma mercadoria não estar cadastrada ele simplesmente exibir a mensagem: ´Mercadoria não cadastrada´ e, não travar como está acontecendo agora.
Se alguém puder me ajudar, ficarei sinceramente agradecido.
----------------------------------------------------------------------------------
procedure TPDV_.CodBarrasExit(Sender: TObject);
Var
ValorPagar, Qtd: Real;
begin
dm_.QryMerc.Close;
dm_.QryMerc.SQL.Clear;
dm_.QryMerc.SQL.Add(´Select * from Mercadorias WHERE CodBarras LIKE :codigo´);
if CodBarras.Text[1]=´2´ then
begin
dm_.QryMerc.ParamByName(´codigo´).AsString:= ´¬´+Copy(CodBarras.Text, 2, 6)+´¬´;
dm_.QryMerc.Open;
ValorPagar := (StrToFloat(Copy(CodBarras.Text, 8, 5)))/100;
Qtd := ValorPagar/dm_.QryMercValor.Value;
dm_.QryVendasPDVDescricao.Text := dm_.QryMercDescricao.Text;
dm_.QryVendasPDVAbreviacao.Text := dm_.QryMercAbreviacao.Text;
dm_.QryVendasPDVValor.Value := ValorPagar;
dm_.QryVendasPDVQtde.Value := Qtd;
dm_.QryVendasPDVTotalDoItem.Value := dm_.QryMercValor.Value*dm_.QryVendasPDVQtde.Value;
Mercadoria.Text := dm_.QryMercDescricao.Text;
dm_.QryVendasPDV.Append;
CodBarras.SetFocus;
end
else
begin
dm_.QryMerc.ParamByName(´codigo´).AsString:= ´¬´+CodBarras.Text+´¬´;
dm_.QryVendasPDVQtde.Value := 1;
dm_.QryMerc.Open;
dm_.QryVendasPDVDescricao.Text := dm_.QryMercDescricao.Text;
dm_.QryVendasPDVValor.Value := dm_.QryMercValor.Value;
dm_.QryVendasPDVAbreviacao.Text := dm_.QryMercAbreviacao.Text;
dm_.QryVendasPDVTotalDoItem.Value := dm_.QryVendasPDVValor.Value*dm_.QryVendasPDVQtde.Value;
Mercadoria.Text := dm_.QryMercDescricao.Text;
dm_.QryVendasPDV.Append;
CodBarras.SetFocus;
end;
end;
----------------------------------------------------------------------------------
O código acima serve para localizar mercadorias industrializadas e produtos diversos, através do código de barras.
Se é um código que começa por 7 a busca é direta, se começar por 2, ele faz uns cálculos para encontrar o produto e a quantidade (peso).
Está funcionando beleza graças às dicas do pessoal do ClubeDelphi. O grande problema é quando se tenta localizar mercadorias que não estão cadastradas. Ele trava completamente o sistema de tal forma que só resentando para voltar ao normal.
Quero implementar o código para que na situação de uma mercadoria não estar cadastrada ele simplesmente exibir a mensagem: ´Mercadoria não cadastrada´ e, não travar como está acontecendo agora.
Se alguém puder me ajudar, ficarei sinceramente agradecido.
Pro-luck
Curtir tópico
+ 0
Responder
Posts
07/01/2005
Massuda
Pelo que entendi você quer saber quando a mercadoria não está cadastrada... nesse caso basta testar se a query retornou vazia. Seu código seria mais ou menos assim:
// ... dm_.QryMerc.Close; dm_.QryMerc.SQL.Clear; dm_.QryMerc.SQL.Add(´Select * from Mercadorias WHERE CodBarras LIKE :codigo´); if CodBarras.Text[1]=´2´ then begin dm_.QryMerc.ParamByName(´codigo´).AsString:= ´¬´+Copy(CodBarras.Text, 2, 6)+´¬´; dm_.QryMerc.Open; // se a mercadoria não está cadastrada... if dm_.QryMerc.IsEmpty then begin // processa mercadoria não cadastrada end else begin // processa mercadoria cadastrada end; end else begin dm_.QryMerc.ParamByName(´codigo´).AsString:= ´¬´+CodBarras.Text+´¬´; dm_.QryVendasPDVQtde.Value := 1; dm_.QryMerc.Open; // se a mercadoria não está cadastrada... if dm_.QryMerc.IsEmpty then begin // processa mercadoria não cadastrada end else begin // processa mercadoria cadastrada end; end; // ...
Responder
Gostei + 0
10/01/2005
Pro-luck
Muito obrigado pela dica que me forneceu. Caiu como uma luva e resolveu realmente meu problema.
No que precisar, estou a disposição.
Té+.
No que precisar, estou a disposição.
Té+.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)