Fórum If Application.MessageBox - porque fica se repetindo? #229788
04/05/2004
0
ESTOU USANDO O CÓDIGO ABAIXO PARA ATUALIZAR MINHA DE ´TBLCEDENTES´. O PROBLEMA É QUE NESSA PARTE DO CÓDIGO:
´ If Application.MessageBox(´O Limite de Crédito para este Cedente foi Excedido! Deseja continuar?´,
´Pergunta´,MB_YESNO + MB_ICONQUESTION) <> IDNO then ´
A MENSAGEM FICA SE REPETINDO PARA CADA REGISTRO NA TBLSAC_CED!
COMO POSSO FAZER PARA QUE A MENSAGEM APARECA APENAS UMA VEZ, VISTO QUE O CÓDIGO SÓ É EXECUTADO AO SAIR DO CAMPO VENCIMENTO!
OBS: É CLARO, ISSO SÓ ACONTECE QUANDO ESCOLHO A OPÇÃO ´IDYES´
AQUI ESTÁ O CÓDIGO COMPLETO!
procedure TFrmCed_Sac.DBEVencimentoExit(Sender: TObject);
var
LimiteCred, Saldo, CredUsado: Double;
begin
CredUsado := 0;
Saldo := DMFactoring.tblCedenteSALDO.AsFloat;
LimiteCred := DMFactoring.tblCedenteLIMITE_CRED.AsFloat;
DMFactoring.TblSac_Ced.First;
While Not (DMFactoring.TblSac_Ced.Eof) And (DMFactoring.TblSac_CedBAIXADO.AsString = ´N´) Do
Begin
CredUsado:= DMFactoring.TblSac_CedVALOR.Value + CredUsado;
Saldo := LimiteCred - CredUsado;
DMFactoring.TblCedente.Edit;
DMFactoring.tblCedenteCREDITO_EM_USO.Value := CredUsado;
DMFactoring.tblCedenteSALDO.Value := Saldo;
DMFactoring.TblCedente.Post;
DMFactoring.TblCedente.Refresh;
If DMFactoring.tblCedenteCREDITO_EM_USO.AsFloat > DMFactoring.tblCedenteLIMITE_CRED.AsFloat Then
Begin
If Application.MessageBox(´O Limite de Crédito para este Cedente foi Excedido! Deseja continuar?´,
´Pergunta´,MB_YESNO + MB_ICONQUESTION) <> IDNO then
DMFactoring.TblCedente.Edit;
DMFactoring.tblCedenteCREDITO_EM_USO.Value := CredUsado;
DMFactoring.tblCedenteSALDO.Value := Saldo;
DMFactoring.TblCedente.Post;
DMFactoring.TblCedente.Refresh;
DMFactoring.TblSac_Ced.Refresh;
DMFactoring.TblSac_Ced.Next;
End;
End;
If Application.MessageBox(´Deseja incluir um novo registro?´,
´Pergunta´,MB_YESNO + MB_ICONQUESTION) <> IDNO then
Begin
DMFactoring.TblSac_Ced.Insert;
FrmPrincipal.BtnProcurarClick(Sender);
End;
End;
´ If Application.MessageBox(´O Limite de Crédito para este Cedente foi Excedido! Deseja continuar?´,
´Pergunta´,MB_YESNO + MB_ICONQUESTION) <> IDNO then ´
A MENSAGEM FICA SE REPETINDO PARA CADA REGISTRO NA TBLSAC_CED!
COMO POSSO FAZER PARA QUE A MENSAGEM APARECA APENAS UMA VEZ, VISTO QUE O CÓDIGO SÓ É EXECUTADO AO SAIR DO CAMPO VENCIMENTO!
OBS: É CLARO, ISSO SÓ ACONTECE QUANDO ESCOLHO A OPÇÃO ´IDYES´
AQUI ESTÁ O CÓDIGO COMPLETO!
procedure TFrmCed_Sac.DBEVencimentoExit(Sender: TObject);
var
LimiteCred, Saldo, CredUsado: Double;
begin
CredUsado := 0;
Saldo := DMFactoring.tblCedenteSALDO.AsFloat;
LimiteCred := DMFactoring.tblCedenteLIMITE_CRED.AsFloat;
DMFactoring.TblSac_Ced.First;
While Not (DMFactoring.TblSac_Ced.Eof) And (DMFactoring.TblSac_CedBAIXADO.AsString = ´N´) Do
Begin
CredUsado:= DMFactoring.TblSac_CedVALOR.Value + CredUsado;
Saldo := LimiteCred - CredUsado;
DMFactoring.TblCedente.Edit;
DMFactoring.tblCedenteCREDITO_EM_USO.Value := CredUsado;
DMFactoring.tblCedenteSALDO.Value := Saldo;
DMFactoring.TblCedente.Post;
DMFactoring.TblCedente.Refresh;
If DMFactoring.tblCedenteCREDITO_EM_USO.AsFloat > DMFactoring.tblCedenteLIMITE_CRED.AsFloat Then
Begin
If Application.MessageBox(´O Limite de Crédito para este Cedente foi Excedido! Deseja continuar?´,
´Pergunta´,MB_YESNO + MB_ICONQUESTION) <> IDNO then
DMFactoring.TblCedente.Edit;
DMFactoring.tblCedenteCREDITO_EM_USO.Value := CredUsado;
DMFactoring.tblCedenteSALDO.Value := Saldo;
DMFactoring.TblCedente.Post;
DMFactoring.TblCedente.Refresh;
DMFactoring.TblSac_Ced.Refresh;
DMFactoring.TblSac_Ced.Next;
End;
End;
If Application.MessageBox(´Deseja incluir um novo registro?´,
´Pergunta´,MB_YESNO + MB_ICONQUESTION) <> IDNO then
Begin
DMFactoring.TblSac_Ced.Insert;
FrmPrincipal.BtnProcurarClick(Sender);
End;
End;
Alexandretavares
Curtir tópico
+ 0
Responder
Posts
04/05/2004
Paulo_amorim
Olá
Vc já não tinha postado essa dúvida antes? Que eu me lembre, ela tinha sido resolvida... mas tudo bem
a MessageBox está sendo mostrada dentro do WHILE...assim, para cada registro ele cai nesse MessageBox...
para resolver, tire do While a mensagem...
ou faça
ou então, se ele quiser continuar, defina um Flag para TRUE
Até+
Vc já não tinha postado essa dúvida antes? Que eu me lembre, ela tinha sido resolvida... mas tudo bem
a MessageBox está sendo mostrada dentro do WHILE...assim, para cada registro ele cai nesse MessageBox...
para resolver, tire do While a mensagem...
ou faça
if Message... = IDNO then Break
ou então, se ele quiser continuar, defina um Flag para TRUE
if (bContinua=TRUE) and (messagebox....... <> IDNO) then
Até+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)