Lock conflit on no wait transaction, firebird 1.5
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:
Executo da seguinte forma:
Pronto... vou mudando tudo, e tudo certo...
e mando gravar com a seguinte funcao:
da seguinte forma:
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
- 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
Curtidas 0
Respostas
Titanius
27/05/2005
Pessoal, solucionei..era que um dos transactions do meu sistema estava em Read-Only table stability
agora blz.. valeu!!
agora blz.. valeu!!
GOSTEI 0