REVELAR

Fórum Gravando dados em duplicidade ou as vezes até mais de duas X #327835

21/08/2006

0

Boa tarde pessoal.

[color=red:d8dbe21004]Primeiro estou usando BD Firebird 2.0[/color:d8dbe21004]
Estou com problemas com o codigo feito em SQL, duplica o lançamento ou ateh mais vezes dentro do Banco de Dados

Fiz um teste com um IBTable e funciona certo, mais com o IBQuery nao esta funcionando

[color=blue:d8dbe21004]Olhe o codigo que grava certo usando o IBTable[/color:d8dbe21004]
if application.messagebox(´Deseja gravar este Lançamento?´, ´Gravar Dados´,
MB_ICONQUESTION
+ MB_YESNO) = IDYES  then BEGIN
  try
    dm.ibtable2.Append;
    dm.ibtable2.fieldbyname(´matricula´).value:=edit1.text;
    dm.ibtable2.fieldbyname(´associado´).value:=label3.caption;
    dm.ibtable2.fieldbyname(´mespgto´).value:=strtodate(maskedit1.text);
   
dm.ibtable2.fieldbyname(´mesrefini´).value:=strtodate(maskedit2.text);
   
dm.ibtable2.fieldbyname(´mesreffim´).value:=strtodate(maskedit3.text);
    dm.ibtable2.POST;
    ok:=true;
    Edit1.Text:=´´;
  except
    application.MessageBox(´Erro na Gravação! Tente
Novamente!´,´Aviso´,mb_ok+mb_iconexclamation);
    ok:=false;
  end;
  if ok then begin
    dm.ibtcorr.Commit;
    sbar.SimpleText := ´Gravado...´;

  end else begin
    dm.ibtcorr.Rollback;
    sbar.SimpleText := ´Abortado...´;
  end;



[color=red:d8dbe21004]Olhe o codigo que duplica usando o IBQuery[/color:d8dbe21004]

begin
 IF (edit1.text=´´) or (maskedit1.text=´´) or (maskedit2.text=´´) or
(maskedit3.text=´´) then
begin
  beep;
  showmessage(´Preencha os todos os campos´);
  end else begin
  with dm.ibqcorr do
    begin
    try
    close;
    sql.clear;
    SQL.Add(´Insert into CORRENTE(matricula, associado, MESPGTO,
MESREFINI,
MESREFFIM)´);
    sql.add(´values (:cmatricula, :cAssociado, :cmespgto, :cmesrefini,
:cmesreffim)´);
    parambyname(´cMatricula´).asString:=Edit1.Text;
    parambyname(´cAssociado´).asString:=Label3.Caption;
    parambyname(´cMespgto´).asDate:=StrToDate(maskedit1.text);
    parambyname(´cMesrefIni´).AsDate:=StrtoDate(Maskedit2.text);
    parambyname(´cMesrefFim´).AsDate:=StrtoDate(Maskedit3.text);
    ExecSQL;
    except
    application.MessageBox(´ ´Erro na Gravação! Tente
novamente!´,´Aviso´,mb_ok+mb_iconexclamation);
    ok:=false;
  end;
  if ok then begin
    dm.ibtCORR.Commit;
    DM.ibQCORR.Open;
    sbar.SimpleText := ´Gravado...´;

  end else begin
    dm.ibtCORR.Rollback;
    DM.ibTCORR.Rollback;

    sbar.SimpleText := ´Abortado...´;
  end;
  dm.ibqcorr.close;
  dm.ibqcorr.open;
 END;



Alguem pode me explicar qual o erro nesta SQL? Nao consegui axar o erro.


Adriano_servitec

Adriano_servitec

Responder

Posts

22/08/2006

Adriano_servitec

Probelma resolvido, faltou dar um select na tabela

begin
IF (edit1.text=´´) or (maskedit1.text=´´) or (maskedit2.text=´´) or
(maskedit3.text=´´) then
begin
beep;
showmessage(´Preencha os todos os campos´);
end else begin
with dm.ibqcorr do
begin
try
close;
sql.clear;
SQL.Add(´Insert into CORRENTE(matricula, associado, MESPGTO,
MESREFINI,
MESREFFIM)´);
sql.add(´values (:cmatricula, :cAssociado, :cmespgto, :cmesrefini,
:cmesreffim)´);
parambyname(´cMatricula´).asString:=Edit1.Text;
parambyname(´cAssociado´).asString:=Label3.Caption;
parambyname(´cMespgto´).asDate:=StrToDate(maskedit1.text);
parambyname(´cMesrefIni´).AsDate:=StrtoDate(Maskedit2.text);
parambyname(´cMesrefFim´).AsDate:=StrtoDate(Maskedit3.text);
ExecSQL;
Ok:=True;
except
application.MessageBox(´ ´Erro na Gravação! Tente
novamente!´,´Aviso´,mb_ok+mb_iconexclamation);
ok:=false;
end;
end;
if ok then begin
dm.ibtCORR.Commit;
//Select para abrir a query
DM.IbQCORR.SQL.Text := ´SELECT * FROM TABELA´; //faltou essa linha
DM.ibQCORR.Open;
sbar.SimpleText := ´Gravado...´;

end else begin
dm.ibtCORR.Rollback;
sbar.SimpleText := ´Abortado...´;
end;
dm.ibqcorr.close;
dm.ibqcorr.open;
END;



Responder

Gostei + 0

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

Aceitar