Quando precisamos atualizar dados no banco utilizando o DBX, é necesário criar toda a estrutura SQLDataSet, DataSetProvider, ClientDataSet e DataSource, além disso na maioria das vezes visualizar o campo, alterar os dados desejados e por último aplicar os comandos post e applyupdate, isto é o “feijão com arroz” e que todos sabem, o que parece ainda ser um mistério é o fato de podemos executar uma série de comandos utilizando a biblioteca nativa a partir do DBXCommand.

Abaixo segue um exemplo de utilização do comando onde o meu deseja era apenas atualizar o status de um movimento no sistema, é uma informação padrão, não preciso editar o campo e quando executo o procedimento quero que grave, não que dê o post para ainda sim eu confirmar com applyupdate. Este comando executa a atualização direta na base.

IMPORTANTE!!! É necessário informar na sessão Uses a biblioteca DBXCommon.

procedure TfrmMovimento.ReabrirMovimento1Click(Sender: TObject);
Var
 Comando : TDBXCommand;
begin
  try
    Comando := dtmdConexao.CORPORATIVO.DBXConnection.CreateCommand;
    Comando.CommandType := TDBXCommandTypes.DbxSQL;
    Comando.Text :=
      ‘UPDATE MOVIMENTOS ‘+
      ‘ SET STATUS_MOVIMENTO = 0 ‘+
      ‘ WHERE COD_EMPRESA = RDB$GET_CONTEXT(”USER_SESSION”, ”EMPRESA”) ‘+
      ‘     and cod_movimento = ‘+ cdsCadastro.FieldByName(‘COD_MOVIMENTO’).AsString;
    Comando.ExecuteUpdate;
  except
    CaixaMensagem(‘Erro ao re-abrir o movimento.’, ctInforma, [cbOk],0);
  end;
end;

Muito boa sorte com as implementações…