Lock conflit on no wait transaction, firebird 1.5

Delphi

27/05/2005

Olá pessoal, pois bem, estou tendo um problema com essa msg, sei que ela tah travando algo lá, mas nao vejo nada de errado no meu código, pois bem.. olhe o que estou usando:
- IBDataSet
- Transaction em modo ReadCommited

Utilizo DBEdits e etc... para inserir os dados...

Quando clico no botao Inserir, executa esta funcao:
procedure IncluiReg(DataSource: TDataSource; EditCampo: TEdit);
begin
  with Screen.ActiveForm do
  begin
//    try

//      (((DataSource as TDataSource).DataSet as TIBDataSet).Transaction as TIBTransaction).StartTransaction;

      if not ((DataSource as TDatasource).DataSet as TIBDataset).Active then
        ((DataSource as TDatasource).DataSet as TIBDataset).Open;

      ((DataSource as TDatasource).DataSet as TIBDataset).Append;

      (FindComponent(´LblStatus´) as TLabel).Caption := ´Inserindo . . .´;
      (FindComponent(´PnlCabecalho´) as TPanel).Enabled := False;
      (DataSource as TDatasource).Enabled := True;
      (FindComponent(´BtnIncluir´) as TBitBtn).Enabled := False;
      (FindComponent(´BtnAlterar´) as TBitBtn).Enabled := False;
      (FindComponent(´BtnGravar´) as TBitBtn).Enabled := True;
      (FindComponent(´BtnCancelar´) as TBitBtn).Enabled := True;
      (FindComponent(´BtnExcluir´) as TBitBtn).Enabled := False;
      (FindComponent(´BtnLocalizar´) as TBitBtn).Enabled := False;
{    except
      Application.MessageBox(´Não foi possível inserir um registro.´ + #10 + ´´ + 10 + ´Por favor, entre em contato com o Administrador.´, ´ConFlex´, MB_OK + MB_ICONHAND + MB_DEFBUTTON1 + MB_APPLMODAL);
    end;}
  end;
end;



Executo da seguinte forma:
  IncluiReg(DsCliente, EdCliente);



Pronto... vou mudando tudo, e tudo certo...

e mando gravar com a seguinte funcao:
procedure GravaReg(DataSource: TDataSource);
begin
  with Screen.ActiveForm do
  begin
 //   try

    ((DataSource as TDatasource).DataSet as TIBDataset).Post;
    if ((DataSource as TDatasource).DataSet as TIBDataset).CachedUpdates then
      ((DataSource as TDatasource).DataSet as TIBDataset).ApplyUpdates;
    ((DataSource as TDatasource).DataSet as TIBDataset).Close;
         {Se Tag do transaction for <> 0 não commita}
    if (((DataSource as TDataSource).DataSet as TIBDataSet).Transaction as TIBTransaction).Tag = 0 then
      (((DataSource as TDataSource).DataSet as TIBDataSet).Transaction as TIBTransaction).Commit;

    (FindComponent(´LblStatus´) as TLabel).Caption := ´´;
    (FindComponent(´PnlCabecalho´) as TPanel).Enabled := True;
    (DataSource as TDatasource).Enabled := False;
    (FindComponent(´BtnIncluir´) as TBitBtn).Enabled := True;
    (FindComponent(´BtnAlterar´) as TBitBtn).Enabled := False;
    (FindComponent(´BtnGravar´) as TBitBtn).Enabled := False;
    (FindComponent(´BtnCancelar´) as TBitBtn).Enabled := False;
    (FindComponent(´BtnExcluir´) as TBitBtn).Enabled := False;
    (FindComponent(´BtnLocalizar´) as TBitBtn).Enabled := True;

    (FindComponent(´PnlCabecalho´) as TPanel).SetFocus;
{    except
      Application.MessageBox(´Não foi possível gravar este registro.´ + #10 + ´´ + 10 + ´Por favor, entre em contato com o Administrador.´, ´ConFlex´, MB_OK + MB_ICONHAND + MB_DEFBUTTON1 + MB_APPLMODAL);
    end;}
  end;
end;


da seguinte forma:
GravaReg(DSCliente);


pois bem, ele dá aquele erro, ou grava normalmente, porem não da o commit, soh depois que eu fecho o aplicativo ele da o commit... mas neste momento, fica dando este erro direto..

Onde está o erro no codigo?

Desde já agradeço

[]s


Titanius

Titanius

Curtidas 0

Respostas

Titanius

Titanius

27/05/2005

Pessoal, solucionei..era que um dos transactions do meu sistema estava em Read-Only table stability


agora blz.. valeu!!


GOSTEI 0
POSTAR