Erro nos if end else..
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..
o que poderia ser ?
vlw t+
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
Curtidas 0
Respostas
Gigatel
25/09/2006
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
o erro só dá se eu respoder não, se responder sim passa legal...flw
GOSTEI 0
Gigatel
25/09/2006
Credo que sonceira...o código é este..
flw..
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..
GOSTEI 0
Rjun
25/09/2006
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.
GOSTEI 0
Gigatel
25/09/2006
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;
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+
GOSTEI 0
Rjun
25/09/2006
O que esse Close faz? Ele fecha um form?
GOSTEI 0
Gigatel
25/09/2006
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 .
GOSTEI 0
Rjun
25/09/2006
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:
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?
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?
GOSTEI 0
Gigatel
25/09/2006
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:
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?
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;
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..
..
GOSTEI 0