Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

Paradox (Delphi) | Códigos Avançados - Atualizar registros em lote - Atualizando Registros em Lote com Delphi: Um Guia Prático - Advanced Code: Bulk Record Update & Practical Guide to Batch Processing in Delphi

Paradox (Delphi) | Códigos Avançados - Atualizar registros em lote - Atualizando Registros em Lote com Delphi: Um Guia Prático - Advanced Code: Bulk Record Update & Practical Guide to Batch Processing in Delphi


A manipulação de registros em lote em bancos de dados é uma prática comum para atender às demandas de aplicativos modernos. 

procedure UpdateBatchRecords;

var

  Query: TQuery;

begin

  Query := TQuery.Create(nil);

  try

    Query.DatabaseName := 'ParadoxDB';

    Query.SQL.Text := 'UPDATE NewTable SET Name = :NewName WHERE ID <= :MaxID';

    Query.Params.ParamByName('NewName').AsString := 'Updated Name';

    Query.Params.ParamByName('MaxID').AsInteger := 5;

    Query.ExecSQL;


    Writeln('Registros atualizados com sucesso!');

  except

    on E: Exception do

      Writeln('Erro ao atualizar registros: ', E.Message);

  end;

  Query.Free;

end;


No Delphi, o componente TQuery permite implementar essa funcionalidade com flexibilidade e eficiência. Abaixo, exploramos o código para atualização de registros em lote e discutimos aplicações, melhores práticas e melhorias para aumentar a robustez do sistema.


procedure UpdateBatchRecords;

var
  Query: TQuery;

begin
  Query := TQuery.Create(nil);
  try
    Query.DatabaseName := 'ParadoxDB';
    Query.SQL.Text := 'UPDATE NewTable SET Name = :NewName WHERE ID <= :MaxID';
    Query.Params.ParamByName('NewName').AsString := 'Updated Name';
    Query.Params.ParamByName('MaxID').AsInteger := 5;
    Query.ExecSQL;

    Writeln('Registros atualizados com sucesso!');
  except
    on E: Exception do
      Writeln('Erro ao atualizar registros: ', E.Message);
  end;
  Query.Free;
end;

Aplicabilidade do Código


Este código realiza a atualização de registros em que o valor de ID é menor ou igual a um valor especificado (é 5, neste exemplo). As aplicações incluem:


  1. Atualizações em Massa: Alterar informações de forma automatizada em registros selecionados.

  2. Manutenção de Dados: Corrigir valores desatualizados ou incoerentes de acordo com regras de negócio.

  3. Testes Automatizados: Preparar bancos de dados para testes controlados, garantindo que os dados sigam um padrão desejado.


Embora funcional, o código pode ser aprimorado para atender a boas práticas e facilitar manutenção e extensibilidade.


Melhoria 1: Garantir Liberação de Recursos com try..finally

A primeira melhoria é substituir o bloco try simples pelo uso de try..finally. Isso assegura que o recurso Query seja liberado mesmo em caso de erros:


procedure UpdateBatchRecords;
var
  Query: TQuery;
begin
  Query := TQuery.Create(nil);
  try
    Query.DatabaseName := 'ParadoxDB';
    Query.SQL.Text := 'UPDATE NewTable SET Name = :NewName WHERE ID <= :MaxID';
    Query.Params.ParamByName('NewName').AsString := 'Updated Name';
    Query.Params.ParamByName('MaxID').AsInteger := 5;
    Query.ExecSQL;

    Writeln('Registros atualizados com sucesso!');
  finally
    Query.Free;
  end;
end;

Melhoria 2: Criação de Classe Helper para Reutilização

Abstrair a lógica de atualização para uma classe helper melhora a legibilidade e permite reutilização do código em outros contextos:


type
  TDatabaseHelper = class
  public
    class procedure ExecuteUpdate(const DatabaseName, SQLCommand: string; const Params: array of const);
  end;

class procedure TDatabaseHelper.ExecuteUpdate(const DatabaseName, SQLCommand: string; const Params: array of const);
var
  Query: TQuery;
  i: Integer;
begin
  Query := TQuery.Create(nil);
  try
    Query.DatabaseName := DatabaseName;
    Query.SQL.Text := SQLCommand;
    for i := Low(Params) to High(Params) do
      Query.Params[i].Value := Params[i].VInteger;
    Query.ExecSQL;

    Writeln('Operação concluída com sucesso!');
  finally
    Query.Free;
  end;
end;

procedure UpdateBatchRecords;
begin
  TDatabaseHelper.ExecuteUpdate('ParadoxDB', 'UPDATE NewTable SET Name = :NewName WHERE ID <= :MaxID', [5]);
end;


O uso do TQuery para atualizações em lote é poderoso, mas requer boas práticas para evitar erros comuns, como vazamentos de memória ou manutenção inadequada. Melhorias como try..finally e abstração com helpers tornam o código mais seguro e reutilizável. A adoção dessas técnicas promove soluções mais profissionais e robustas.


 Clique aqui e nos contate via What's App para avaliarmos seus projetos 

Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com


 Série de Livros nut Project 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes

Nenhum comentário:

Postar um comentário

diHITT - Notícias