Hoy quería compartir con vosotros un breve pero creo que útil tip, o consejo. Cuando todo marcha bien... Lo habitual, lo normal, sería que tras la instalación de RAD Studio XE5, estuvieseis en condiciones de tener esa primera experiencia con Android y en un porcentaje alto de los casos va a ser así. 🙂 Y... Leer más →
¡Dar una buena imagen! Parte 2
Si os parece bien, recapitulamos: Comentaba al finalizar la entrada anterior, ¡Dar una buena imagen! Parte 1, que estábamos en condiciones de proseguir, toda vez que habíamos generado una base de datos y almacenado algunas imágenes en ella, que era uno de los requisitos que podía demandar el hecho de habernos planteado "devolver una imagen a través de nuestro servidor de DataSnap".... Leer más →
El misterio de los 200…
Aunque ya he comentado el contenido de esta entrada en el foro de facebook, necesitaba colgar de algún lado las fuentes que había utilizado para revisar el tema y de paso, dar la oportunidad para quien todavía no forme parte del mismo pueda acceder a su contenido, o por lo menos a las cosas que parecen interesantes.... Leer más →
Aviso sobre el grupo de Facebook Delphi Solidario
Hola a todos: Comentaros que finalmente tomé la decisión de volver a crear el grupo de Facebook, "Delphi Solidario" de acuerdo a la nueva estructura de grupos de esta red social , (decisión que había demorado durante meses), y para ello, se ha hecho necesario dar de baja todas los miembros que formaban parte del... Leer más →
El mundo al revés
Durante el fin de semana, como casi siempre hago, dejé varios apuntes que me parecían interesantes señalados en la barra de favoritos. Muchos de esos apuntes, o enlaces, son páginas cuyos blogs ya existen en los enlaces de Delphi Básico. Otros, son simplemente pág¡nas en las que cae uno de forma accidental tras revisar los twitters nuevos o... Leer más →
No me saques los colores
¿Qué tal estáis...? Volvemos tras un verano caluroso. Esta misma noche fue una de las mas calurosas que recuerdo. De hecho, ayer mismo, el termómetro se acerco a los 44º y la tarde fue asfixiante. La disfruté visitando una exposición temporal sobre arqueología Egipcia que se celebra en Alicante, en el Museo Arqueológico Marq, y aunque la capital mantiene unas temperaturas bastantes suaves y agradables por la cercanía del mar, hacía calor. Muy recomendable esta exposición si estáis en la zona, ya que no es demasiado habitual para nosotros ver de cerca una momia y conocer los ritos funerarios de la fascinante y enigmática civilizacion egipcia (El enigma de la momia). Aunque, para ser justos, el visitante se queda con ganas de mas, y no imagino lo agradable y enriquecedor que puede ser conocer el total de lo expuesto en el Louvre, puesto que lo visto en Alicante es tan solo una parte pequeña...
TDBLookupComboBox al escenario (Parte I)
Llevaba varias semanas con la idea de hacer un par de comentarios breves sobre el componente TDBLookupComboBox y mira por donde, hoy parece que tengo unos minutos que voy a intentar aprovechar. Así que vamos a ello. Este componente es bastante clásico (no es nuevo). Está ubicado en la paleta "DataControl", la paleta que Borland reservó en sus primeros días para alojar todos los controles de datos y se justifica, en un contexto donde el usuario selecciona un item entre los valores mostrados en una lista ligada a un conjunto de datos, para asignar un valor como resultado de esta selección, en el dataset destino. Así pues, este valor que va a ser asignado, es por regla general distinto del valor que es mostrado al usuario y también siguiendo el mismo razonamiento, formaría parte de un dato significativo de una tabla maestra respecto a su detalle (eso es algo lógico ¿no?).
Shifting TFields in TDataSets Bound to TDBGrids…
Esta vez, he seleccionado uno de los artículos del blog de Cary Jensen que me ha parecido especialmente interesante para compartirlo con vosotros. En el artículo, Cary Jensen comparte con sus lectores, un posible bug ocasionado por el comportamiento de los campos persistentes del DataSet (luego se verá en el articulo, comentado y reflexionado por el, que no es tanto un error de código). De cualquier forma, sí me ha parecido interesante pues es algo que debería tenerse en cuenta.
Próxima cita el 26 de Febrero
No voy a hacerlo demasiado largo, ya que es un tanto tarde (madrugada del lunes en España) y como todo hijo de vecino tengo que levantarme temprano para trabajar, pero tenía pendiente comentar con vosotros que ya han confirmado la fecha del evento "Delphi Developer Day IV", que va especialemente dirigido a la comunidad hispana: viernes, 26 de Febrero (2010). En lo que respecta a la hora de inicio, según el formulario de respuesta que se lanza al registrarte al evento, figura las 7:00 AM (PST), que si no me equivoco y de acuerdo al último que pude asistir, vendrán a ser sobre las 4 pm (en España). Recordad que en http://dn.embarcadero.com/article/40336 disponéis de mas información tanto del contenido del seminario web como de los expertos que van a participar. Os adelanto simplemente que serán 8 presentaciones, a la cual mas interesante 🙂
Release Notes: Delphi and C++Builder 2010 Updates 4, 5 (Database Pack), and Boost Library
Han llegado los primeros comentarios de la disponibilidad de los últimos updates para Delphi 2010, C++ Builder 2010 y Rad Studio. Yo lo he podido leer por el comentario de Andreano Lanusse desde el grupo Twibes Hispano y tal y como nos dice, podeis acceder facilmente al mismo tan solo con la opción de chequear actualizaciones (Check for Updates) existente en el item creado por el entorno en el menu de inicio.
Lo mas destacado… :-)
Suelo reservar la tarde del domingo, un rato al menos, para hacer un repaso mental de lo que me ha parecido mas interesante a nivel de enlaces durante toda la semana. Quizás, antes -hablo de bastantes meses atrás- dedicaba mas tiempo a buscar paginas nuevas, o entradas nuevas, si fuera el caso de que fueran conocidas y ya las hubiera incluido en mis enlaces, pero ahora, desde que empecé a incorporar los breves mensajes de Twitter (o Twibes) la situación cambió, y en lugar de mi busqueda tradicional, me he concentrado en seleccionar los comentarios que tuvieran mas interés. El domingo anterior ya lo hice. Y si os dais cuenta, de no hacerlo así, muchos de esos comentarios pueden llegar a perderse ya que quedaran sepultados por los nuevos mensajes y por desgracia, algo como "voy a pasear al perro" en respuesta de "que es lo que estas haciendo" o "voy a trabajar duramente", será inevitablemente el ejecutor de que no acaben siendo visibles y se oculten por los siglos de los siglos.
Experimentos, reflexiones y otros artefactos (IV)
Lo habíamos dejado en la parte en la que haciamos un pequeño boceto de las dos clases que ibamos a considerar. La clase TGenerador y la clase TAtributo. Eso nos permitía ver como se podían relacionar y a modo de prueba, imaginábamos un método para permitirnos alterar el orden de los mismos, en caso de ser necesario. Durante esta semana he podido sacer algunos minutos para adelantarme y darle forma a esas dos ideas. Pero no teneis que perder de vista, por favor, que lo importante no es el código en si mismo, que no es mas que un ejemplo cualquiera y puede contener alguna que otra errata al analizarlo con profundidad, sino el hecho mismo de solicitar de cada uno, un ejercicio de analisis previo y reflexión, intentando razonar en terminos de clases, en la medida que nos sea posible.
Experimentos, reflexiones y otros artefactos (II)
Nuestro formulario iba creciendo. De hecho habíamos incluído una pequeña modificación que invertía el código y el formulario, comenzaba a parecerse -con la prudencia que hace falta para comentar ésto ya que estas lineas son meramente experimentales- a una hipotética herramienta para generar combinaciones de códigos. Esto nos permite tomar una pequeña dosis de realidad en nuestro razonamiento. Una herramienta que iba a crecer pero ligada desgraciadamente a los componentes que iban formando su interfaz.
Experimentos, reflexiones y otros artefactos (I)
Vamos a iniciar una pequeña serie especialmente dedicada a los programadores que se inician en Delphi y me perdonareis que no tenga la menor idea de cuantos capitulos contiene ni de cuanto tiempo se pueda extender. ¿Uno, dos? ¿quizás tres? ¿veintiuno?. Realmente os confieso que no lo se.
Por curiosidad (y Parte III)
Tanto la propiedad Data como Delta se definen como OleVariants, y se organizan internamente como un array de bytes, y es esta característica la que va a dotar de flexibilidad a las dos estructuras, que soportaran por un lado los datos, el contenido real, en el caso de la propiedad Data, y un registro de actualizaciones que representa a la propiedad Delta. Dicho registro, logicamente es de solo lectura, dado que es la unica forma de garantizar que es tan solo manipulable por el propio dataset. Tambien es por esa razón, ya que no nos es permitido modificarlo, es por la que existen metodos que nos permiten limpiar esa cache de datos que contiene los registros de cambios.
Por curiosidad (Parte II)
Seguimos el experimento, intentado satisfacer nuestra curiosidad. 🙂 Vamos a hacer lo siguiente: * En el modulo de datos eliminamos los dos componentes TClientDataSet que contienen los detalles. Es decir, cdsComposicion y cdsComponentes desaparecen. Tambien eliminamos todos los campos persistentes del dataset maestro cdsArticulos Logicamente, una vez hecho esto, los dos componentes TDataSource ligados a los mismos (a cdsComposicion y a cdsComponentes) ahora han perdido las referencias a los dataset y apuntan a nil.
Por curiosidad (Parte I)
Por curiosidad, ya que hablamos de AdoExpres y Datasnap, vamos a perder unos minutos en un par de comentarios que me parecen interesantes y que me hicieron reflexionar varios días de la semana que ha acabado. Como muchos de los comentarios que hemos compartido, han surgido a raiz del trabajo diario. En este caso, concretamente al modificar la ficha de Clientes ya que se consideraba la implementación de un proceso que recalculara las comisiones, que era uno de los detalles de la misma. Aquella pestalla mostraba las comisiones generadas por las compras de dicho cliente y era otro mas de los detalles de la ficha. Veamos... el proceso iba a disparar un procedimiento en la base de datos cuya misión era recalcular las comisiones que se mostraban en la rejilla y, en principio, no iba a retornar un conjunto de datos sino unicamente el exito en la finalización o el codigo del error de existir éste. Esto era problematico en el sentido de que, dado que nuestro conjunto de datos se ubica en la cache local y el procedimiento es disparado en nuestro servidor, los valores visualizados por el usuario podian en determinados casos diferir de los reales tras la ejecución del proceso, y podríamos necesitar invalidar el contenido de aquel dataset para mostrar los nuevos datos.
Cero contra quinientos sesenta ( Anexo)
No iba a escribir esta entrada pero me ha pasado algo similar a lo que me ocurrió con los comentarios sobre JediVCL, donde despues de haber acabado el segundo artículo, sentía que quedaban cosas que comentar y redacté un pequeño anexo con el que dejaba lo que me parecía mas importante zanjado. El resto de funciones se pueden ver sobre la marcha. Es más cuestión del día a día, a medida que te van surgiendo las dudas. Con este tema, siento que pasa algo similar. Hemos compartido dos entradas donde comentabamos como se generaban, y en base a que criterios, las sentencias sql que el proveedor (TDataSetProvider) finalmente "ejecuta" (o manda ejecutar). Bueno. Ya visteis que no él, sino que se apoya en una clase que crea a demanda, que se llama TSQLResolver. Concretamente, y para entrar un poco mas en detalle se iniciaba todo desde la función CreateResolver.
Comentarios recientes