![pexelshiteshchoudhary879109 | Embarcadero RAD Studio Delphi C++Builder Blogs pexels hitesh choudhary 879109](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/05/pexels-hitesh-choudhary-879109-1960390-scaled.jpg?resize=1140%2C694&ssl=1)
No recente episódio TCoffeeAndCode focado em Data ETL, houve uma excelente discussão sobre o uso de FireDAC para extrair e manipular dados de várias maneiras.
O replay, caso você tenha perdido, o vídeo do replay está no link abaixo.
Table of Contents
Data ETL feito de maneira fácil – graças a um tweet!
Também – entre muitas outras coisas – falamos sobre os benefícios do LiveBindings. Literalmente dez minutos antes de começarmos o webinar, encontrei um tweet do recém-criado MVP da Embarcadero David Cornelius, onde ele mencionou que estava fazendo experiências com LiveBindings do RAD Studio.
Bem, isso foi perfeitamente sincronizado! David continua em sua postagem no blog para descrever um pouco sobre LiveBindings e sua jornada pessoal onde ele foi, não muito diferente de mim, de um sentimento de morna complacência em relação a eles para uma apreciação dos pontos mais delicados de seu uso.
LiveBindings são mais poderosos do que parecem
Quando ouvi falar do LiveBindings pela primeira vez, eles pareciam, para mim, ser algum tipo de variação do relacionamento antigo datasource
/ datafield
tipo encontrado em versões mais antigas do Delphi e do venerável Visual Basic. Pareciam que deveríamos vincular os controles na tela a um campo (ou campos) de uma tabela de banco de dados, embora com um editor gráfico de relacionamento mais bonito.
![LiveBinding | Embarcadero RAD Studio Delphi C++Builder Blogs livebinding](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/04/LiveBinding-5234473.png?resize=434%2C671&ssl=1)
Depois de começar a arranhar a superfície do LiveBindings, se você for como eu, o LiveBindings começará a se revelar gradualmente e você descobrirá que há MUITO mais poder acontecendo do que simplesmente apontar este campo para este tipo de controle de relacionamentos. Vincular controles a classes e estruturas de dados de código interno é um dos recursos do Programmer Super Power RAD Studio que fico dizendo às pessoas que é o motivo pelo qual um programador preguiçoso como eu pode ser assustadoramente produtivo. Não sou eu, é o RAD Studio e, pelo menos no meu caso, o Delphi.
Data ETL com LiveBinding Expressions
Existem alguns outros excelentes artigos em torno dos quais descrevem LiveBindings desde o início até tópicos mais avançados:
- Aprenda rapidamente como é fácil vincular DataSets a controles visuais no Delphi com LiveBindings (embarcadero.com)
- Resultados da pesquisa para “livebindings” – RAD Studio API Documentation (embarcadero.com)
- Expressões, propriedades e componentes de vinculação Delphi (marcocantu.com)
Mas David Cornelius abraçou a ideia do LiveBindings e foi um pouco mais longe!
Como estender LiveBindings com expressões de vinculação personalizadas
David produziu um conjunto de código, disponível no GitHub, que adiciona algumas expressões personalizadas no editor LiveBindings.
![Screenshot 20210530 154502 | Embarcadero RAD Studio Delphi C++Builder Blogs screenshot 2021 05 30 154502](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/05/Screenshot-2021-05-30-154502-4601883.png?resize=750%2C661&ssl=1)
O repositório contém um conjunto de unidades que podem ser incluídas em seus aplicativos que, em seguida, aprimoram as expressões personalizadas LiveBinding disponíveis para incluir coisas como calcular automaticamente os anos desde a data contida no campo do banco de dados (ou registro ou classe – é um LiveBinding, não esquecer).
Expressão personalizada de LiveBindings
Aqui estão algumas linhas de código de exemplo do repositório de David:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function MakeMinutesSinceMethod: IInvokable; begin Result := MakeInvokable(function(Args: TArray<IValue>): IValue var InputDate: TDateTime; RoundDigits: Integer; MinutesSince: Double; begin CheckArgs(Args, InputDate, RoundDigits); MinutesSince := RoundTo(TTimeSpan.Subtract(Now, InputDate).TotalMinutes, RoundDigits); Result := TValueWrapper.Create(MinutesSince); end); end; |
Esse código significa que você pode adicionar uma expressão personalizada LiveBinding MinutesSince(MyDateTimeDBField, 2)
para gerar o valor de “MyDateTimeDBField” como o número de minutos desde a data e hora contidos nesse campo. Muito agradável.
Formas alternativas de calcular datas e horas em LiveBindings
David usa algum código bastante eficiente em seus métodos de expressão personalizados. Se incluirmos a System.DateUtils
unidade em nosso próprio código, poderemos alterar e / ou estender as funções de David para incluir quase qualquer um dos cálculos de data / hora contidos nessa unidade, quando apropriado. Por exemplo, poderíamos criar uma função chamada “IsAM” e vinculá-la à IsAM
função na unidade DateUtils e fazer com que ela mostrasse algum texto especial se o campo datetime vinculado fosse ou não fosse de manhã ou à tarde.
Os RAD Studio LiveBindings são eficientes?
É claro que quanto mais funções você adicionar e quanto mais unidades incluir, mais seu código aumentará, então use-os com moderação. Você também precisa se certificar de que suas expressões personalizadas são tão rígidas e rápidas quanto possível, porque elas estão vinculadas e trabalhando em campos ou estruturas do banco de dados e você pode, é claro, esperar que um LiveBinding lento e personalizado afetará a ineficiência geral se você estiver lidando com milhares ou talvez dezenas de milhares de registros.
Onde ler mais sobre LiveBindings personalizados
Você definitivamente tem que ir para o excelente artigo do blog de David Cornelius sobre as ligações dinâmicas personalizadas: https://corneliusconcepts.tech/beyond-standard-livebindings
Você também pode acessar a página do GitHub e clonar o repositório diretamente de lá: https://github.com/corneliusdavid/LiveBindingsBeyond
No momento em que este artigo é escrito, David ainda não aparece no diretório MVP do Embarcadero, mas aparecerá em breve. Mal posso esperar para ver mais do que ele vai inventar!
O RAD Studio Delphi torna a extração, transformação e carregamento de dados – Data ETL – rápida, eficiente e fácil. Por que não baixar uma cópia de avaliação hoje?
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition