[firebase-br] Dica para fechar a Transacao de Leitura do DBExpress
Joseh-Henrique
jhlistas em ig.com.br
Sex Jun 24 14:56:51 -03 2005
Pha-Lista escreveu:
>Existem outra formas mais eficientes, mais os componentes ou o driver precisariam ser alterados.
>
>
>
Ola, vi seus exemplos e fiquei interessado nessas outras formas q vc
disse, hoje eu uso IBX + TDataSetProvider + TClientDataSet e a forma q
eu encontrei de fechar a transacao foi ficar dando CommitRetaining, uma
solucao porca, e verdade, mas que funciona e tem seus efeitos
colaterais, como por exemplo, ao fechar o formulario eu tenho q fechar a
transacao "na mão".
Ha sim, vale dizer que este problema so acontece com clientdataset
aninhados.
Segue o componente derivado que catei em algum lugar da net
unit IBProvider;
interface
uses
Provider;
type
TIBProvider = class(TDataSetProvider)
private
{ Private declarations }
protected
{ Protected declarations }
function InternalApplyUpdates(const Delta: OleVariant; MaxErrors:
Integer;
out ErrorCount: Integer): OleVariant; override;
public
{ Public declarations }
published
{ Published declarations }
end;
implementation
uses Db, IBCustomDataSet, MidConst;
{ TIBProvider }
function TIBProvider.InternalApplyUpdates(const Delta: OleVariant;
MaxErrors: Integer; out ErrorCount: Integer): OleVariant;
begin
if not Assigned(DataSet) then DatabaseError(SMissingDataSet);
with DataSet as TIBCustomDataSet do
begin
if Transaction.Active then
Transaction.CommitRetaining
else
Transaction.StartTransaction;
try
Result := inherited InternalApplyUpdates(Delta, MaxErrors,
ErrorCount);
finally
if ((ErrorCount <= MaxErrors) or (MaxErrors = -1)) then
Transaction.CommitRetaining
else
Transaction.RollbackRetaining;
end;
end;
end;
end.
[]'s
Joseh-Henrique
Goiania, GO
>Para quem utiliza o DBExpress e o Midas, existe um site muito interessante www.distribucon.com
>
>Pode ser que no Delphi 2005, isso ja esteja corrigido.
>
>PHA
>Nova Odessa / SP - Brazil
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
>
Mais detalhes sobre a lista de discussão lista