Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

icefusion

controle de commit e rollback manualmente!

Recommended Posts

sqlAuxiliar:=TSQLQuery.Create(Self);
   with sqlAuxiliar do begin
	  SQLConnection:=dmBASE.Conexao;
	  SQL.Clear;
	  SQL.Add('INSERT INTO COMPRAFROTA_ITEM_ALOCACAO(PES_DOCTO		   , COMP_NOTA_SERIE , COMP_NOTA_NUMERO  ,');
	  SQL.Add('									  EQTP_CODIGO		 , EQUI_CODIGO	 , COMPITAL_ALOCACAO ,');
	  SQL.Add('									  COMPITAL_QUANTIDADE , COMPITAL_KM	 , EQMOVTP_CODIGO	)');
	  SQL.Add('							   VALUES(:PES_DOCTO		  , :COMP_NOTA_SERIE, :COMP_NOTA_NUMERO ,');
	  SQL.Add('									  :EQTP_CODIGO		, :EQUI_CODIGO	, :COMPITAL_ALOCACAO,');
	  SQL.Add('									  :COMPITAL_QUANTIDADE, :COMPITAL_KM	, :EQMOVTP_CODIGO   )');
		 ParamByName('PES_DOCTO').AsString:=edPes_Docto.Text;
		 ParamByName('COMP_NOTA_SERIE').AsString:=edSerie.Text;
		 ParamByName('COMP_NOTA_NUMERO').AsInteger:=StrToInt(edNumeroNF.Text);
		 ParamByName('EQTP_CODIGO').AsInteger:=StrToInt(edTpEq_Codigo.Text);
		 ParamByName('EQUI_CODIGO').AsInteger:=StrToInt(edEquiCodigo.Text);
		 if (cbTpAlocacao.ItemIndex = 1) or (cbTpAlocacao.ItemIndex = 3) then
			ParamByName('COMPITAL_ALOCACAO').AsString:=edAlocacao1.Text
		 else
			ParamByName('COMPITAL_ALOCACAO').AsString:=edAlocacao.Text;
		 ParamByName('COMPITAL_QUANTIDADE').AsInteger:=StrToInt(edQtd.Text);
		 ParamByName('COMPITAL_KM').AsInteger:=StrToInt(edKM.Text);
		 ParamByName('EQMOVTP_CODIGO').AsInteger:=tpMovimento;
	  ExecSQL();
	  Free;
end;

 

esse modo de executar uma operação, ja tem um controle de transação (rollback, commit) pois estou tentando usar esse exemplo passado no forum porém naum to conseguindo pois diz q naum existe o identificador TTransactionDesc...

 

o exemplo segue abaixo:

 

procedure TForm1.TransferButtonClick(Sender: TObject);

var
  Amt: Integer;
  TD: TTransactionDesc;
begin
  if not SQLConnection1.InTransaction then
  begin
	TD.TransactionID := 1;
	TD.IsolationLevel := xilREADCOMMITTED;
	SQLConnection1.StartTransaction(TD);
	try
	  Amt := StrToInt(AmtEdit.Text);
	  Debit.Params.ParamValues['Amount'] := Amt;
	  Credit.Params.ParamValues['Amount'] := Amt;
	  SQLConnection1.Commit(TD); {on success, commit the changes};
	except

	  SQLConnection1.Rollback(TD); {on failure, undo the changes};
	end;
  end;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.