segunda-feira, 7 de abril de 2014

Tratando erros em ApplyUpdates com FIREDAC.


Quando invocamos o método ApplyUpdates em uma FDQuery devemos lembrar que exceções não serão geradas para a aplicação, porem o FireDac registra o erro em uma estrutura de registro de dados interna e continua a processar atualizações até que o número de erros seja igual ou superior a AMaxErrors.

Após chamar o método ApplyUpdates , devemos incluir rtHasErrors em FilterChanges para filtrarmos os registros que contenham erros. Em seguida, navegamos através do conjunto de dados e lemos a propriedade RowError que conterá um objeto de exceção associado ao registro atual. Como mostra o exemplo abaixo:

var
  oErr: EFDException;
begin
if FDQuery1.ApplyUpdate > 0 then begin
  FDQuery1.FilterChanges := [rtModified, rtInserted, rtDeleted, rtHasErrors];
  try
    FDQuery1.First;
    while not FDQuery1.Eof do begin
      oErr := FDQuery1.RowError;
      if oErr <> nil then begin
        raise Exception.Create(oErr.Message);
      end;
      FDQuery1.Next;
    end;
  finally
    FDQuery1.FilterChanges := [rtUnmodified, rtModified, rtInserted];
  end;
end;

terça-feira, 1 de abril de 2014

Aplicação Móvel efetuando chamadas. Delphi XE5.

Neste post vou mostrar um exemplo básico, porem muito interessante o qual iremos fazer chamadas a partir de uma aplicação  móvel desenvolvida com Delphi XE5. 
Criaremos então uma aplicação(FireMonkey Mobile) que terá apenas um TEdit e um TButton.





Antes de iniciarmos a implementação do código que ira efetuar a chamada, devemos adicionar a cláusula uses os seguintes Namespaces: FMX.PhoneDialer, FMX.Platform.








Agora, no evento OnClick do nosso botão  implementaremos o seguinte código.
TPlatformServices.Current.SupportsPlatformService retorna se o serviço passado como parâmetro está disponível na plataforma que o aplicativo está sendo executado.