Fórum Commit no IB e no FB #47712

25/10/2004

0

Olá!!

Criei uma função para pesquisar em uma tabela cfe abaixo:


function ConsultaTbconfig(Opcao, id: String):boolean;
//=========================
var Consulta: String;
wretorno: String[1];
begin

wretorno := ´0´;

if DMbd1.SQLConn1.Connected = true then begin

Consulta := ´select * from TBCONFIG where df is null and ID = ´+ #39 + (id) + 39;

try

Transacao.TransactionID := 1;
Transacao.IsolationLevel := xilREPEATABLEREAD;
DMbd1.SQLConn1.StartTransaction(Transacao);
DMbd1.SQLQue.Close;
DMbd1.SQLQue.SQL.Clear;
DMbd1.SQLQue.SQL.Append(Consulta);
DMbd1.SQLQue.Open;

DMbd1.SQLConn1.Commit(Transacao);

except

on Exc:Exception do begin
if Opcao = ´´ then begin
Mostraexcecao(Exc.Message,´Ao consultar Tbconfig!´);
end;
DMbd1.SQLConn1.Rollback(Transacao);
end;

end;

*********************************************

aRDados[0] := ´´;

If (DMbd1.SQLQue.Fields.FieldByName(´ID´).AsInteger = StrtoInt(id)) then begin
aRDados[0] := DMbd1.SQLQue.Fields.FieldByName(´DESCRICAO´).AsString;
wretorno := ´1´;
end;

*********************************************


if Opcao = ´´ then begin
DMbd1.SQLQue.Close;
DMbd1.SQLQue.SQL.Clear;
end;

end;

if wretorno = ´1´ then begin
Result := True;
end else begin
if Opcao = ´´ then begin
Application.MessageBox(´ Cadastro Informado Não Encontrado... ´,´Aviso´,mb_OK+mb_IconExclamation);
Result := False;
end;
end;

end;


O problema é o seguinte:

Com o Interbase 6.5... funciona bem.
Quando uso o FireBird 1.5.. o Commit na Transacao deve fechar a Query,
por que me retorna a seguinte mensagem ... QUERY NOT OPEN e não
consigo usar a parte entre asteriscos acima, como quero.

Então, o Commit no IB e no FireBird se comportam de maneira
diferente, ou falta alguma configuração na conexão?


Obrigado!!!


Jose.

:)


Ejose

Ejose

Responder

Posts

25/10/2004

Gandalf.nho

Deve ter algo errado é com a versão do IB 6.5, pq o comportamento com o FB está correto. Você está comitando a transação da query logo após abri-la o que faz com que ela seja fechada. Como você quer acessar os dados se a tabela está fechada? Deixe para comitar após pegar os dados desejados. Como o comportamento deve ser o mesmo para IB e FB, deve estar diferente o código nos 2 casos.


Responder

Gostei + 0

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

Aceitar