Dans le récent épisode TCoffeeAndCode axé sur les données ETL, il y a eu d’excellentes discussions sur l’utilisation de FireDAC pour extraire et manipuler des données de différentes manières.
Le replay, au cas où vous l’auriez manqué, la vidéo de replay est liée ci-dessous.
Table of Contents
Data ETL en toute simplicité – grâce à un tweet !
Nous avons également – entre autres choses – parlé des avantages de LiveBindings. Littéralement dix minutes avant le début du webinaire, je suis tombé sur un Tweet du tout nouveau MVP d’Embarcadero, David Cornelius, dans lequel il mentionnait qu’il avait expérimenté les LiveBindings de RAD Studio.
Eh bien, c’était au bon moment ! David poursuit dans son article de blog pour décrire un peu les LiveBindings et son parcours personnel où il est passé, un peu comme moi, d’un sentiment de complaisance tiède envers eux à une appréciation des subtilités de leur utilisation.
Les LiveBindings sont plus puissants qu’ils n’y paraissent
Lorsque j’ai entendu parler des LiveBindings pour la première fois, ils m’ont semblé être une sorte de variation de l’ancien datasource
/ datafield
type de relation trouvé dans les anciennes versions de Delphi et du vénérable Visual Basic. Il semblait que nous devions lier les contrôles à l’écran à un champ (ou des champs) d’une table de base de données, bien qu’avec un éditeur de relations graphique plus joli.
Une fois que vous commencez à gratter la surface des LiveBindings, si vous êtes comme moi, les LiveBindings commenceront à se révéler progressivement et vous constaterez qu’il y a BEAUCOUP plus de puissance que de simplement pointer ce champ sur ce type de contrôle. de relations. Lier des contrôles à des classes et à des structures de données de code interne est l’une de ces fonctionnalités du programmeur Super Power RAD Studio que je n’arrête pas de dire aux gens, c’est la raison pour laquelle un codeur assez paresseux comme moi peut en fait être terriblement productif. Ce n’est pas moi, c’est RAD Studio et, dans mon cas du moins, Delphi.
ETL de données avec expressions LiveBinding
Il existe d’autres excellents articles décrivant les LiveBindings depuis les débuts jusqu’à des sujets plus avancés :
- Découvrez rapidement à quel point il est facile de lier des ensembles de données à des contrôles visuels dans Delphi avec LiveBindings (embarcadero.com)
- Résultats de la recherche pour « livebindings » – Documentation de l’API RAD Studio (embarcadero.com)
- Expressions, propriétés et composants de liaison Delphi (marcocantu.com)
Mais David Cornelius a embrassé l’idée des LiveBindings et est allé un peu plus loin !
Comment étendre LiveBindings avec des expressions de liaison personnalisées
David a produit un ensemble de code, disponible sur GitHub, qui ajoute des expressions personnalisées dans l’éditeur LiveBindings.
Le référentiel contient un ensemble d’unités qui peuvent être incluses dans vos applications, qui améliorent ensuite les expressions personnalisées LiveBinding disponibles pour inclure des éléments tels que le calcul automatique des années depuis la date contenue dans le champ de la base de données (ou l’enregistrement ou la classe – c’est un LiveBinding, ne le faites pas). ne pas oublier).
Expression personnalisée LiveBindings
Voici quelques lignes d’exemple de code du dépôt 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; |
Ce code signifie que vous pouvez ajouter une expression personnalisée LiveBinding MinutesSince(MyDateTimeDBField, 2)
pour afficher la valeur de « MyDateTimeDBField » en tant que nombre de minutes depuis la date et l’heure contenues dans ce champ. Très agréable.
Autres façons de calculer les dates et l’heure dans LiveBindings
David utilise un code assez efficace dans ses méthodes d’expression personnalisées. Si nous incluons l’ System.DateUtils
unité dans notre propre code, nous pourrions modifier et/ou étendre les fonctions de David pour inclure presque tous les calculs de date/heure contenus dans cette unité, le cas échéant. Par exemple, nous pourrions créer une fonction appelée « IsAM » et la lier à la IsAM
fonction dans l’unité DateUtils et lui faire afficher un texte spécial si le champ datetime lié était, ou non, le matin ou l’après-midi.
Les LiveBindings de RAD Studio sont-ils efficaces ?
Bien sûr, plus vous ajoutez de fonctions et plus vous incluez d’unités, plus votre code gonflera, alors utilisez-les avec parcimonie. Vous devez également vous assurer que vos expressions personnalisées sont aussi précises et rapides que possible car elles sont liées et fonctionnent sur des champs ou des structures de base de données et vous pouvez, bien sûr, vous attendre à ce qu’un LiveBinding personnalisé lent ait un impact sur l’inefficacité globale si vous êtes traiter des milliers ou peut-être des dizaines de milliers d’enregistrements.
Où en savoir plus sur les LiveBindings personnalisés
Vous devez absolument vous rendre sur l’excellent article de blog de David Cornelius sur les fixations personnalisées en direct : https://corneliusconcepts.tech/beyond-standard-livebindings
Vous pouvez également accéder à sa page GitHub et cloner le dépôt directement à partir de là : https://github.com/corneliusdavid/LiveBindingsBeyond
Au moment d’écrire ces lignes, David n’apparaît pas encore dans le répertoire Embarcadero MVP, mais il le sera bientôt. J’ai hâte de voir la suite de ce qu’il propose !
RAD Studio Delphi rend l’extraction, la transformation et le chargement des données – Data ETL – rapides, efficaces et faciles. Pourquoi ne pas télécharger une copie d’essai aujourd’hui ?
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition