Campos iguais e exibir menssagem..

08/11/2005

Parece coisa simples mas tenho 2 campos:
1) BD_ESTOQUEGS_EST_MINIMO.value ....onde específico uma quantidade mínima para o sistema me avisar.
2) BD_ESTOQUEGS_EST_QNT.Value .....este fica a quantidade atual no estoque

tenho um form onde existe um edit (Edit2) e um botão (Concluir ) onde coloco a quantidade e no botão para concluir...presciso de 2 coisas ...

uma mensagem avisando que a quantidade já está no mínimo, e esta mensagem teria que ter 2 Button ( sim e não ou yes e No ), prescionado o não é cancelado a operação e se prescionado o sim ele subtraisse o valor do BD_ESTOQUEGS_EST_QNT.Value pelo o edit2...

aí galera isto tá parecendo trabalho de escola...más estou quebrando cabeça com outra parte da função e tava prescisando dá uma adiantada nesta...se alguém puder dá uma força aí...valew...


Gigatel

Respostas

08/11/2005

Bruno Belchior

if BD_ESTOQUEGS_EST_QNT.AsInteger <= BD_ESTOQUEGS_EST_MINIMO.AsInteger then
begin
  if Application.MessageBox(´Texto´,´Título´, MB_YESNO) = mrYes then
  begin
    BD_ESTOQUEGS_EST_QNT.AsInteger := BD_ESTOQUEGS_EST_QNT.AsInteger - StrToInt(Edit2.Text);
  end
  else
    // Foi Pressionado não...
end
Não se esqueça de levar em consideração a quantidade vendida ser maior que o estoque atual...


Responder Citar

08/11/2005

Marcio.theis

Uma forma simples de fazer acho que seria desta forma:
var
    continuar: boolean;
begin
continuar:=False;
if (BD_ESTOQUEGS_EST_QNT.Value) <= (BD_ESTOQUEGS_EST_MINIMO.value) then
    begin
    if Application.MessageBox(PChar(´A quantidade é inferior ou igual ao mínimo do estoque !´ + #13 + ´Deseja continuar ?´),´Mínimo em Estoque´,MB_YESNO or MB_APPLMODAL or MB_DEFBUTTON2 or MB_ICONQUESTION) = mrYes then
        continuar:=True;
    end;
if continuar then
    begin
    {continuação do seu código para efetuar a baixa no estoque}
    end;



Responder Citar

08/11/2005

Gigatel

[quote:f6f754fdcb=´Bruno Belchior´]
if BD_ESTOQUEGS_EST_QNT.AsInteger <= BD_ESTOQUEGS_EST_MINIMO.AsInteger then
begin
  if Application.MessageBox(´Texto´,´Título´, MB_YESNO) = mrYes then
  begin
    BD_ESTOQUEGS_EST_QNT.AsInteger := BD_ESTOQUEGS_EST_QNT.AsInteger - StrToInt(Edit2.Text);
  end
  else
    // Foi Pressionado não...
end
Não se esqueça de levar em consideração a quantidade vendida ser maior que o estoque atual...[/quote:f6f754fdcb]

Valew..más só tem um probleminha...na sua função o processo de subtração está depois do ´SIM´ na verdade seria assim ....se na hora que fosse prescionado o botão ele faria a seguinte análize...Se o valor do edit 2 fosse menor que no espessificado no estoque ele num daria mensagem nenhuma e executaria o processo de subtração normalmente a mensagem só apareceria se tivesse algo de errado com o estoque igual ou menor...aí sim apareceria uma mensagem do tipo ´Estoque no mínimo! deseja continuar ?´ aí prescionando o sim faria a subtração tambem...e prescionado o não cancelaria o processo..vlw...


Responder Citar

08/11/2005

Gigatel

OI a eu de novo ... ambas as funções só diminuem o estoque se o os valores for menor ou igual...estou prescisando é o seguinte enquanto o valor do estoque for maior, ele continua a subtraindo, ele só vai aparecer a mensagem se o estoque for menor..e quando for prescionado o NÃO ele cancela o processo até mesmo o de subtração ...vlw...


Responder Citar

08/11/2005

Wilson Brito

if (BD_ESTOQUEGS_EST_QNT.AsInteger - StrToInt(Edit2.Text)) <= BD_ESTOQUEGS_EST_MINIMO.AsInteger then 
begin 
  if Application.MessageBox(´Texto´,´Título´, MB_YESNO) = mrYes then 
  begin 
    BD_ESTOQUEGS_EST_QNT.AsInteger := BD_ESTOQUEGS_EST_QNT.AsInteger - StrToInt(Edit2.Text); 
  end 
  else 
    // Foi Pressionado não... 
end



Responder Citar

08/11/2005

Gigatel

Num deu certo...
Fiz Assim


if (BD_ESTOQUEGS_EST_QNT.AsInteger - StrToInt(Edit2.Text)) <= BD_ESTOQUEGS_EST_MINIMO.AsInteger then
begin
  if Application.MessageBox(´A quantidade é inferior ou igual ao mínimo do estoque !´ + #13 + ´Deseja continuar ?´,´Estoque´, MB_YESNO) = mrYes then
  begin
    BD_ESTOQUE.Edit;
    BD_ESTOQUEGS_EST_QNT.AsInteger := BD_ESTOQUEGS_EST_QNT.AsInteger - StrToInt(Edit2.Text);

  end
  else
    BD_ESTOQUE.Edit;
    BD_ESTOQUEGS_EST_QNT.AsInteger := BD_ESTOQUEGS_EST_QNT.AsInteger - StrToInt(Edit2.Text);

    end
end;



Os seguintres bug´s foram detectados..

A) quando o valor é maior o mínimo e não subtrai no estoque..
B) quando presciona o ´não´ continua a diminuir...

Tá estranho/...


Responder Citar

09/11/2005

Marcio.theis

Mas nas duas situações vc esta fazendo a mesma coisa, se precionou sim ou não ele esta diminuindo igual ....


Responder Citar

09/11/2005

Martins

Pegando carona no seu código...


if (BD_ESTOQUEGS_EST_QNT.AsInteger - StrToInt(Edit2.Text)) <= BD_ESTOQUEGS_EST_MINIMO.AsInteger then 
begin 
  if Application.MessageBox(´A quantidade é inferior ou igual ao mínimo do estoque !´ + #13 + ´Deseja continuar ?´,´Estoque´, MB_YESNO) = mrYes then 
  begin 
    BD_ESTOQUE.Edit; 
    BD_ESTOQUEGS_EST_QNT.AsInteger := BD_ESTOQUEGS_EST_QNT.AsInteger - StrToInt(Edit2.Text); 

  end 
  else 
   
   Abort; 
end; 





Responder Citar

09/11/2005

Gigatel

Caro Martins a sua correção Funcionou no que diz respeito a prescionar o ´NÃO´ más ainda não funciona a subtração do estoque quando está normal a função acima está apenas detectando o estoque baixo ou estoque zero, más estoque normal não funciona...e tem outra coisa a função completa teria que ter esta implementação...( o resto do código )
var
  a,b,c : real;
  e:integer;
begin
if Edit2.text = ´0´ then
   begin
   showmessage(´A quantidade tem que ser maior que zero.´)
   end
   else
      begin
     a := strtofloat(Edit2.text);
     b := strtofloat(BD_ESTOQUEGS_EST_VALOR_VENDA.Value);
     c := a*b;
     E:=_FORM_OS_NAV.BD_OFC_ELEGS_OOE_CODIGO.Value;
     _FORM_OS_OR.BD_ORCA_ITENS.Insert;
     _FORM_OS_OR.BD_ORCA_ITENSGS_OOEI_QNT.Value := Edit2.text;
     _FORM_OS_OR.BD_ORCA_ITENSGS_OOEI_DESCRICAO.Value := BD_ESTOQUEGS_EST_DESCRICAO.Value;
     _FORM_OS_OR.BD_ORCA_ITENSGS_OOEI_UNIT.Value := Edit4.text;
     _FORM_OS_OR.BD_ORCA_ITENSGS_OOEI_VALOR_UNIT.Value := BD_ESTOQUEGS_EST_VALOR_VENDA.Value;
     _FORM_OS_OR.BD_ORCA_ITENSGS_OOEI_VALOR_TOTAL.Value :=  floattostrf(c,ffFixed,10,2);
     _FORM_OS_OR.BD_ORCA_ITENSGS_OOEI_CODACES.Value := _FORM_OS_NAV.BD_OFC_ELEGS_OOE_CODIGO.value;
     _FORM_OS_OR.BD_ORCA_ITENS.Post;
     _FORM_OS_OR.BD_ORCA_ITENS.Close;
     _FORM_OS_OR.BD_ORCA_ITENS.SQL.Clear;
     _FORM_OS_OR.BD_ORCA_ITENS.SQL.Add(´select * from ORCAMENTO_OFIC_ELET_ITENS where GS_OOEI_CODACES=´+inttostr(E));
     _FORM_OS_OR.BD_ORCA_ITENS.Open;
    Close;
end;


Más está meio estranho...


Responder Citar

10/11/2005

Gigatel

teste de postagem


Responder Citar

10/11/2005

Gigatel

Estive analizando o código e cheguei em alguns resultados positivos más tem algo de errado...se coloco o valor 1 no Edit1 quando aparece a mensagem, e diminui do . EX...se no esto tiver 1 e colocar 1 ele avisa e subtrai 2 ?????veja o código...Declarei uma procedure em PRIVATE

  private
  procedure VERESTBAIXO;


Fiz o código referente a procedure..

procedure T_FORM_OS_ESTOQUE.VERESTBAIXO;
Begin
  if Application.MessageBox(´A quantidade é inferior ou igual ao mínimo do estoque !´ + #13 + ´Deseja continuar ?´,´Estoque´, MB_YESNO) = mrYes then
  begin
    BD_ESTOQUE.Edit;
    BD_ESTOQUEGS_EST_QNT.AsInteger := BD_ESTOQUEGS_EST_QNT.AsInteger - StrToInt(Edit2.Text);
  end
  else
   Abort;
   end;



aki esta onde vai ler a função...fica num boton..

  if (BD_ESTOQUEGS_EST_QNT.AsInteger - StrToInt(Edit2.Text)) <= BD_ESTOQUEGS_EST_MINIMO.AsInteger then
    VERESTBAIXO
    else
    BD_ESTOQUE.Edit;
    BD_ESTOQUEGS_EST_QNT.AsInteger := BD_ESTOQUEGS_EST_QNT.AsInteger - StrToInt(Edit2.Text);
  end;



Parece estra certo...más num sei o que é...


Responder Citar

10/11/2005

Gigatel

Alguém está tendo problemas em criar novos tópicos aki no fúrum ? não estou conseguinto fazer um novo tópico...estranho/..


Responder Citar