![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)
En el reciente episodio TCoffeeAndCode centrado en Data ETL, hubo una excelente discusión sobre el uso de FireDAC para extraer y manipular datos de varias maneras.
La repetición, en caso de que se la haya perdido, el vídeo de repetición está vinculado a continuación.
Table of Contents
ETL de datos hecho de la manera más fácil, ¡gracias a un tweet!
También, entre muchas otras cosas, hablamos sobre los beneficios de LiveBindings. Literalmente, diez minutos antes de que comenzáramos el seminario web, encontré un tweet del recién creado MVP de Embarcadero, David Cornelius, donde mencionó que había estado experimentando con LiveBindings de RAD Studio.
Bueno, ¡eso fue en el momento perfecto! David continúa en la publicación de su blog para describir un poco sobre LiveBindings y su viaje personal donde fue, no muy diferente a mí, desde un sentimiento de tibia complacencia hacia ellos hasta una apreciación de los puntos más finos de su uso.
Los LiveBindings son más poderosos de lo que parecen
Cuando escuché por primera vez sobre LiveBindings, me pareció que era una especie de variación de la relación antigua datasource
/ datafield
tipo que se encuentra en las versiones anteriores de Delphi y el venerable Visual Basic. Parecía que deberíamos vincular los controles en la pantalla a un campo (o campos) de una tabla de base de datos, aunque con un editor gráfico de relaciones más 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)
Una vez que comiences a arañar la superficie de LiveBindings, si eres como yo, LiveBindings comenzará a revelarse gradualmente y encontrarás que hay MUCHO más poder que el simple punto-este-campo a este tipo de control. de las relaciones. Vincular controles a clases y estructuras de datos de código interno es una de esas características de Programmer Super Power RAD Studio que sigo diciendo a la gente es la razón por la que un codificador bastante perezoso como yo puede ser tremendamente productivo. No soy yo, es RAD Studio y, al menos en mi caso, Delphi.
ETL de datos con expresiones LiveBinding
Hay algunos otros artículos geniales que describen LiveBindings desde los inicios hasta temas más avanzados:
- Aprenda rápidamente lo fácil que es vincular conjuntos de datos a controles visuales en Delphi con LiveBindings (embarcadero.com)
- Resultados de búsqueda de “livebindings” – Documentación de la API de RAD Studio (embarcadero.com)
- Expresiones, propiedades y componentes vinculantes de Delphi (marcocantu.com)
¡Pero David Cornelius abrazó la idea de LiveBindings y fue un poco más allá!
Cómo extender LiveBindings con expresiones de enlace personalizadas
David ha producido un conjunto de código, disponible en GitHub, que agrega algunas expresiones personalizadas en el 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)
El repositorio contiene un conjunto de unidades que se pueden incluir en sus aplicaciones que luego mejoran las expresiones personalizadas de LiveBinding disponibles para incluir cosas como calcular automáticamente los años desde la fecha contenida en el campo de la base de datos (o registro o clase; es un LiveBinding, don ‘ no olvides).
Expresión personalizada de LiveBindings
Aquí hay algunas líneas de código de ejemplo del repositorio 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; |
Ese código significa que puede agregar una expresión personalizada de LiveBinding MinutesSince(MyDateTimeDBField, 2)
para generar el valor de “MyDateTimeDBField” como el número de minutos desde la fecha y hora contenidas en ese campo. Muy agradable.
Formas alternativas de calcular fechas y horas en LiveBindings
David usa un código bastante eficiente en sus métodos de expresión personalizados. Si incluimos la System.DateUtils
unidad en nuestro propio código, podríamos cambiar y / o extender las funciones de David para incluir casi cualquiera de los cálculos de fecha / hora contenidos en esa unidad, cuando sea apropiado. Por ejemplo, podríamos crear una función llamada “IsAM” y vincularla a la IsAM
función en la unidad DateUtils y hacer que muestre algún texto especial si el campo de fecha y hora vinculado fue, o no, por la mañana o por la tarde.
¿Son eficientes los LiveBindings de RAD Studio?
Por supuesto, cuantas más funciones agregue y más unidades incluya, más se expandirá su código, así que utilícelas con moderación. También debe asegurarse de que sus expresiones personalizadas sean lo más ajustadas y rápidas posible porque se vinculan y funcionan en los campos o estructuras de la base de datos y, por supuesto, puede esperar que un LiveBinding personalizado lento afecte la ineficiencia general si está lidiar con miles o quizás decenas de miles de registros.
Dónde leer más sobre LiveBindings personalizados
Definitivamente tiene que dirigirse al excelente artículo de blog de David Cornelius sobre las vinculaciones en vivo personalizadas: https://corneliusconcepts.tech/beyond-standard-livebindings
También puede ir a su página de GitHub y clonar el repositorio directamente desde allí: https://github.com/corneliusdavid/LiveBindingsBeyond
En el momento de escribir este artículo, David aún no aparece en el directorio MVP de Embarcadero, pero pronto lo hará. ¡No puedo esperar a ver más de lo que se le ocurre!
RAD Studio Delphi hace que la extracción, transformación y carga de datos (ETL de datos) sea rápida, eficiente y fácil. ¿Por qué no descargar una copia de prueba hoy?
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition