Esse artigo faz parte da revista Clube Delphi Edição 66. Clique aqui para ler todos os artigos desta edição

P>

  function CreateInstance(const cid, rid: TGUID;

    out pv): HResult; stdcall;

  procedure SetComplete; safecall;

  procedure SetAbort; safecall;

  procedure EnableCommit; safecall;

  procedure DisableCommit; safecall;

  function IsInTransaction: Bool; stdcall;

  function IsSecurityEnabled: Bool; stdcall;

  function IsCallerInRole(

    const bstrRole: WideString): Bool; safecall;

end;

 

Métodos de IObjectContext para Transações

- SetComplete: o objeto terminou sua operação e as informações podem ser efetivadas;

- SetAbort: o objeto terminou sua operação mas as informações devem ser revertidas ao contexto original (rollback);

- EnableCommit: as informações podem ser efetivadas;

- DisableCommit: as informações não podem ser efetivadas;

- IsInTransaction: retorna True se o objeto atual faz parte de uma transação.

 

No RDMMain, coloque um ADOQuery (“aqrMovimenta”) e digite na propriedade SQL o seguinte código:

 

update CONTA

set saldo = saldo + :valor

where numero = :numero

 

Configure a conexão para “ADOConn” e certifique-se de ter dois parâmetros no DataSet: valor (DataType = ftFloat) e numero (DataType = ftInteger). Adicione um método de nome “Movimenta” na interface IRDMMain (através do menu View>Type Library) com os seguintes parâmetros: “De” (long), “Para” (long) e “Valor” (double). Clique em Refresh Implementation e implemente-o como na Listagem 2. Salve o projeto e compile o servidor.

 

Listagem 2. Método Movimenta

procedure TRDMMain.Movimenta(

  De, Para: Integer; Valor: Double);

begin

  try

    aqrMovimenta.Parameters.ParamByName(

      'numero').Value := De;

    aqrMovimenta.Parameters.ParamByName(

      'valor').Value := -1 * Valor;

    aqrMovimenta.ExecSQL;

 

...

Quer ler esse conteúdo completo? Tenha acesso completo