Fórum Erro nos if end else.. #330049

25/09/2006

0

aí o que eu poderia esta fazendo de errado ? tem hora que dá erro de que a tabela não está em modo de edição..

  If BD_VENDA_ITENS.RecordCount = 0 then
  begin
  Close;
  end
    else
    if Application.MessageBox(PAnsiChar(´Deseja concluir esta compra ?´), ´Pergunta´,
    MB_ICONQUESTION + MB_YESNO) <> IDYES then
      begin
      BD_VENDA.Cancel;
      Close;
      end
      else
      BD_VENDA.Edit;
      BD_VENDAGS_VEN_VALOR_TOTAL.Value := label10.Caption;
      BD_VENDA.Post;
     Close;


o que poderia ser ?
vlw t+


Gigatel

Gigatel

Responder

Posts

25/09/2006

Gigatel

Notei que o erro aconte depois que coloco algum restro em BD_VENDA_ITENS ou seja o valor dele vai ser diferente de zero...

o erro só dá se eu respoder não, se responder sim passa legal...flw


Responder

Gostei + 0

25/09/2006

Gigatel

Credo que sonceira...o código é este..

  If BD_VENDA_ITENS.RecordCount = 0 then
  begin
  Close;
  end
    else
    if Application.MessageBox(PAnsiChar(´Deseja concluir esta compra ?´), ´Pergunta´,
    MB_ICONQUESTION + MB_YESNO) <> IDYES then
      begin
      BD_VENDA_ITENS.First;
      while not BD_VENDA_ITENS.Eof do
      BD_VENDA_ITENS.Delete;
      BD_VENDA.Cancel;
      Close;
      end
      else
      BD_VENDA.Edit;
      BD_VENDAGS_VEN_VALOR_TOTAL.Value := label10.Caption;
      BD_VENDA.Post;
     Close;
end;


flw..


Responder

Gostei + 0

26/09/2006

Rjun

if BD_VENDA_ITENS.RecordCount = 0 then 
  Close;

if Application.MessageBox(PAnsiChar(´Deseja concluir esta compra ?´), ´Pergunta´, MB_ICONQUESTION + MB_YESNO) <> IDYES then 
begin 
  BD_VENDA_ITENS.First; 
  while not BD_VENDA_ITENS.Eof do 
    BD_VENDA_ITENS.Delete; 

  BD_VENDA.Cancel; 
  Close; 
end 
else 
begin     
  BD_VENDA.Edit; 
  BD_VENDAGS_VEN_VALOR_TOTAL.Value := label10.Caption; 
  BD_VENDA.Post; 
  Close; 
end; 


Esta faltando um begin após o ELSE.


Responder

Gostei + 0

26/09/2006

Gigatel

if BD_VENDA_ITENS.RecordCount = 0 then 
  Close;

if Application.MessageBox(PAnsiChar(´Deseja concluir esta compra ?´), ´Pergunta´, MB_ICONQUESTION + MB_YESNO) <> IDYES then 
begin 
  BD_VENDA_ITENS.First; 
  while not BD_VENDA_ITENS.Eof do 
    BD_VENDA_ITENS.Delete; 

  BD_VENDA.Cancel; 
  Close; 
end 
else 
begin     
  BD_VENDA.Edit; 
  BD_VENDAGS_VEN_VALOR_TOTAL.Value := label10.Caption; 
  BD_VENDA.Post; 
  Close; 
end; 
Esta faltando um begin após o ELSE.


Vlw deu certo, más curiosamente teve que ficar assim

  If BD_VENDA_ITENS.RecordCount = 0 then
  begin
  Close;
  end
    else
if Application.MessageBox(PAnsiChar(´Deseja concluir esta compra ?´), ´Pergunta´, MB_ICONQUESTION + MB_YESNO) <> IDYES then 
begin 
  BD_VENDA_ITENS.First; 
  while not BD_VENDA_ITENS.Eof do 
    BD_VENDA_ITENS.Delete; 

  BD_VENDA.Cancel; 
  Close; 
end 
else 
begin      
  BD_VENDA.Edit; 
  BD_VENDAGS_VEN_VALOR_TOTAL.Value := label10.Caption; 
  BD_VENDA.Post; 
  Close; 
end; 


no seu código mesmo a tabela BD_VENDA_ITENS não tendo nada ele me fazia a pergunta se eu queria concluir a compra, ou seja ele não estava dando o close no form...más vlw...deu certinho t+


Responder

Gostei + 0

26/09/2006

Rjun

O que esse Close faz? Ele fecha um form?


Responder

Gostei + 0

26/09/2006

Gigatel

O que esse Close faz? Ele fecha um form?


é o seguinte, esta função fica em um boton onde quando é clicado ele verifica se existe dados em uma tabela, quando num tem nada ele sai sem fazer pergunta, e quando tem alguma coisa no banco de dados ele pergunta que que salvar e sai do form imaginado que o usuário tenha esquecido de salvar, caso não tenha esquecido o programa cancela o procedimento e sai do form .


Responder

Gostei + 0

26/09/2006

Rjun

Eu não colocaria esse código no evento Click do button. Acho que você poderia colocar no evento OnClose já que em qualquer situação você fecha o form mesmo. O que acontece no seu código, se o usuário fechar o form de outra maneira que não pelo botão? Acho que assim ficaria melhor:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if (BD_VENDA_ITENS.RecordCount > 0)
    ConcluiOperacaoAtual();
end;

procedure CocluiOperacaoAtual;
begin
  if Application.MessageBox(PAnsiChar(´Deseja concluir esta compra ?´), ´Pergunta´, MB_ICONQUESTION + MB_YESNO) <> IDYES then 
  begin 
    BD_VENDA_ITENS.First; 
    while not BD_VENDA_ITENS.Eof do 
      BD_VENDA_ITENS.Delete; 

    BD_VENDA.Cancel; 
  end 
  else 
  begin      
    BD_VENDA.Edit; 
    BD_VENDAGS_VEN_VALOR_TOTAL.Value := label10.Caption; 
    BD_VENDA.Post; 
  end; 
end;


Outra questão. No while você apaga todos os itens. Você não deveria apagar só os da venda atual? Ou você só guarda os itens da venda atual?


Responder

Gostei + 0

26/09/2006

Gigatel

Eu não colocaria esse código no evento Click do button. Acho que você poderia colocar no evento OnClose já que em qualquer situação você fecha o form mesmo. O que acontece no seu código, se o usuário fechar o form de outra maneira que não pelo botão? Acho que assim ficaria melhor:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if (BD_VENDA_ITENS.RecordCount > 0)
    ConcluiOperacaoAtual();
end;

procedure CocluiOperacaoAtual;
begin
  if Application.MessageBox(PAnsiChar(´Deseja concluir esta compra ?´), ´Pergunta´, MB_ICONQUESTION + MB_YESNO) <> IDYES then 
  begin 
    BD_VENDA_ITENS.First; 
    while not BD_VENDA_ITENS.Eof do 
      BD_VENDA_ITENS.Delete; 

    BD_VENDA.Cancel; 
  end 
  else 
  begin      
    BD_VENDA.Edit; 
    BD_VENDAGS_VEN_VALOR_TOTAL.Value := label10.Caption; 
    BD_VENDA.Post; 
  end; 
end;
Outra questão. No while você apaga todos os itens. Você não deveria apagar só os da venda atual? Ou você só guarda os itens da venda atual?


O programa trabalha com duas tabelas em conjunto uma chamada BD_VENDA e outra chamada BD_VENDA_ITENS, quando dou um insert na tabela ela cria um código ( isto na tabela BD_VENDAS ) e toda vez que insiro um ítem (BD_VENDA_ITENS) um campo recebe o valor dó código gerado, e com isso aplico um filtro onde fica somente na tabela os ítens dakela venda, aí num dá problema, só exclui akeles ítens mesmo...
más vlw a sua dica foi importantissimo, num tinha pensado nesta questão valeu pela ajuda..
..


Responder

Gostei + 0

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

Aceitar