PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Lock conflit on no wait transaction, firebird 1.5 #283073

27/05/2005

0

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

Responder

Posts

27/05/2005

Titanius

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


agora blz.. valeu!!


Responder

Gostei + 0

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

Aceitar