In der jüngsten TCoffeeAndCode- Episode mit dem Schwerpunkt Data ETL gab es einige ausgezeichnete Diskussionen über die Verwendung von FireDAC zum Extrahieren und Bearbeiten von Daten auf verschiedene Weise.
Die Wiederholung, falls Sie sie verpasst haben, ist das Wiederholungsvideo unten verlinkt.
Table of Contents
Data ETL leicht gemacht – dank Tweet!
Wir haben – unter anderem – auch über die Vorteile von LiveBindings gesprochen. Buchstäblich zehn Minuten vor Beginn des Webinars stieß ich auf einen Tweet des frischgebackenen Embarcadero-MVP David Cornelius, in dem er erwähnte, dass er mit den LiveBindings von RAD Studio experimentiert hatte.
Nun, das war der perfekte Zeitpunkt! David fährt in seinem Blogbeitrag fort, ein wenig über LiveBindings und seine persönliche Reise zu beschreiben, auf der er, ähnlich wie ich, von einem Gefühl lauwarmer Selbstgefälligkeit ihnen gegenüber hin zu einer Anerkennung der Feinheiten ihrer Verwendung ging.
LiveBindings sind mächtiger als sie erscheinen
Als ich zum ersten Mal von LiveBindings hörte, schienen sie mir eine Art Variation der alten datasource
/ datafield
Art der Beziehung zu sein, die in älteren Versionen von Delphi und dem ehrwürdigen Visual Basic gefunden wurde. Sie sahen so aus, als ob wir die Steuerelemente auf dem Bildschirm mit einem Feld (oder Feldern) einer Datenbanktabelle verknüpfen sollten, wenn auch mit einem schöneren grafischen Beziehungseditor.
Sobald Sie anfangen, an der Oberfläche von LiveBindings zu kratzen, werden LiveBindings, wenn Sie so etwas wie ich sind, sich allmählich offenbaren und Sie werden feststellen, dass viel mehr Leistung im Spiel ist, als nur auf diese Art von Steuerung zu zeigen von Beziehungen. Das Verknüpfen von Steuerelementen mit Klassen und internen Code-Datenstrukturen ist eine dieser Programmier-Superpower-Funktionen von RAD Studio, von denen ich immer wieder sage, dass ein ziemlich fauler Programmierer wie ich erschreckend produktiv sein kann. Ich bin es nicht, sondern RAD Studio und zumindest in meinem Fall Delphi.
Daten-ETL mit LiveBinding-Ausdrücken
Es gibt einige andere großartige Artikel, die LiveBindings von den ersten Anfängen bis hin zu fortgeschritteneren Themen beschreiben:
- Erfahren Sie schnell, wie einfach es ist, DataSets mit LiveBindings an visuelle Steuerelemente in Delphi zu binden (embarcadero.com)
- Suchergebnisse für „Livebindings“ – RAD Studio API Documentation (embarcadero.com)
- Delphi-Bindungsausdrücke, -Eigenschaften und -Komponenten (marcocantu.com)
Aber David Cornelius hat die Idee von LiveBindings angenommen und ist noch ein bisschen weiter gegangen!
So erweitern Sie LiveBindings mit benutzerdefinierten Bindungsausdrücken
David hat einen auf GitHub verfügbaren Codesatz erstellt, der einige benutzerdefinierte Ausdrücke im LiveBindings-Editor hinzufügt.
Das Repository enthält eine Reihe von Einheiten, die in Ihre Apps aufgenommen werden können, die dann die verfügbaren benutzerdefinierten LiveBinding-Ausdrücke erweitern, um Dinge wie die automatische Berechnung der Jahre seit dem im Datenbankfeld enthaltenen Datum (oder Datensatz oder Klasse – es ist eine LiveBinding, nicht nicht vergessen).
Benutzerdefinierter LiveBindings-Ausdruck
Hier sind ein paar Zeilen Beispielcode aus Davids Repo:
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; |
Dieser Code bedeutet, dass Sie einen benutzerdefinierten LiveBinding-Ausdruck hinzufügen können, um MinutesSince(MyDateTimeDBField, 2)
den Wert von „MyDateTimeDBField“ als Anzahl der Minuten seit dem Datum und der Uhrzeit in diesem Feld auszugeben. Sehr schön.
Alternative Methoden zum Berechnen von Datum und Uhrzeit in LiveBindings
David verwendet in seinen benutzerdefinierten Ausdrucksmethoden ziemlich effizienten Code. Wenn wir die System.DateUtils
Einheit in unseren eigenen Code aufnehmen, könnten wir Davids Funktionen ändern und/oder erweitern, um fast alle in dieser Einheit enthaltenen Datums-/Uhrzeitberechnungen einzubeziehen, sofern dies angemessen ist. Zum Beispiel könnten wir eine Funktion namens „IsAM“ erstellen und sie mit der IsAM
Funktion in der DateUtils-Unit verknüpfen und sie dazu bringen, einen speziellen Text anzuzeigen, wenn das verknüpfte Datumszeitfeld morgens oder nachmittags war oder nicht.
Sind RAD Studio LiveBindings effizient?
Je mehr Funktionen Sie hinzufügen und je mehr Einheiten Sie einschließen, desto mehr wird Ihr Code natürlich aufblähen. Verwenden Sie sie also sparsam. Sie müssen auch sicherstellen, dass Ihre benutzerdefinierten Ausdrücke so eng und so schnell wie möglich sind, da sie mit Datenbankfeldern oder -strukturen verknüpft sind und mit ihnen arbeiten Umgang mit Tausenden oder vielleicht Zehntausenden von Datensätzen.
Weitere Informationen zu benutzerdefinierten LiveBindings
Du musst auf jeden Fall zu David Cornelius‘ exzellentem Blog-Artikel über die Custom Live Bindings gehen: https://corneliusconcepts.tech/beyond-standard-livebindings
Sie können auch auf seine GitHub-Seite gehen und das Repo direkt von dort klonen: https://github.com/corneliusdavid/LiveBindingsBeyond
Zum Zeitpunkt des Schreibens taucht David noch nicht im Embarcadero MVP-Verzeichnis auf, aber er wird es bald tun. Ich kann es kaum erwarten, mehr von dem zu sehen, was er sich einfallen lässt!
RAD Studio Delphi macht die Datenextraktion, -transformation und das Laden – Data ETL – schnell, effizient und einfach. Warum nicht noch heute eine Testversion herunterladen?
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition