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:
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
Curtir tópico
+ 0
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!!
agora blz.. valeu!!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)