GARANTIR DESCONTO

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.


Pro-luck

Pro-luck

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é+.


Responder

Gostei + 0

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

Aceitar