Microsoft Access en Java (2)

Conectar con una base de datos de Microsoft Access por medio del puente JDBC-ODBC configurando el origen de los datos en el panel de control ODBC de 32 bits mostrando los registros obtenidos desde consultas SQL con Java 7

Requisitos previos

El puente JDBC-ODBC ha dejado de estar disponible en Java 8 por lo que para poder utilizarlo hay que tener Java 7 o versión anterior. Aunque se trata de un método obsoleto y poco eficiente de acceder a bases de datos de Microsoft Access desde Java, todavía hay usuarios que lo utilizan y que no desean migrar sus programas a controladores propios del lenguaje, libres (ucanaccess, jackcess…) o comerciales.

En Windows 10 están disponibles en las herramientas administrativas los paneles de control ODBC. Hay 2 versiones, para 32 y para 64 bits. Microsoft Access usa un controlador de 32 bits por lo que se necesita instalar Java 7 para 32 bits y abrir el panel ODBC de 32 bits, sin estos 2 requisitos falla el acceso a las bases de datos (BD) desde Java por este método. El panel ODBC se puede encontrar en las herramientas administrativas o tecleando en el menú Inicio > Buscar “Orígenes de datos…” que muestra las 2 opciones:

  • Orígenes de datos ODBC (32 bits)
  • Orígenes de datos ODBC (64 bits).
Continuar leyendo “Microsoft Access en Java (2)”

Microsoft Access en Java (1)

Conectar con una base de datos de Microsoft Access mediante el controlador JDBC UCanAccess, emitir sentencias SQL a la base de datos y mostrar los resultados, ejecutar el programa desde línea de comandos junto con las dependencias, crear archivos de comando para ejecutar el programa; ejercicio de Java para consola

Desde Java 8 la conexión JDBC-ODBC ya no se incluye en Java. Existen algunos controladores JDBC propietarios para conectar con MS Access pero el proyecto UCanAccess está activo actualmente, es open source y proporciona un controlador JDBC generado sobre código de Jackcess.
UCanAccess funciona bien y es sencillo de utilizar. El dato más remarcable es el de las dependencias que requiere que en la versión actual 4.0.1 son: ucanaccess-4.0.1, hsqldb-2.3.1, jackcess-2.1.6, commons-logging-1.1.1 y commons-lang-2.6.

Jackcess a diferencia de UCanAccess es una librería de código Java diseñada para leer y escribir bases de datos de MS Access que no es un controlador JDBC sino una implementación directa de las características disponibles para interactuar con bases de datos de MS Access. Su licencia es del tipo Apache License.

Continuar leyendo “Microsoft Access en Java (1)”

Versión de Windows desde C#

Obtener datos sobre el nombre del producto, la versión, el número de compilación y la arquitectura de 32 o 64 bits del sistema operativo mediante clases de .NET o el registro de Windows, en C# .NET

En ocasiones puede ser necesario que un programa o librería acceda a datos de la versión de Windows instalada en el sistema. Este ejercicio presenta 2 formas de hacerlo, utilizando clases de .NET Framework o leyendo esa información directamente desde el registro de Windows. Se presenta el ejercicio en C# pero al final está el enlace de descarga a la aplicación completa con el añadido de la versión en Visual Basic .NET.

Continuar leyendo “Versión de Windows desde C#”

DataTable desde Access en ASP .NET

Leer una base de datos de Microsoft Access, presentar los datos en un objeto DataTable de ASP .NET, generar por código los encabezados y las columnas y mostrar la ruta a la base de datos en una etiqueta con diseño personalizado, en C# y VB .NET

Microsoft tiene un artículo titulado “How to retrieve and display records from an Access database by using ASP.NET, ADO.NET and Visual C# .NET” para .NET Framework 1. Basado en ese artículo se presenta este ejercicio que consiste en leer una base de datos de Microsoft Access y presentar los datos en un objeto DataTable de ASP .NET. El ejercicio tiene 2 versiones: C# y VB, y una base de datos llamada Clientes.accdb con una única tabla llamada ClientesTb y 5 campos: Id, Nombre, Apellidos, Cargo y Teléfono.

Se comenta el ejercicio en C# y al final se proporciona el código completo tanto para C# como para VB .NET, las diferencias entre ambos son pequeñas.

Continuar leyendo “DataTable desde Access en ASP .NET”

Cambiar LookAndFeel en Java

Cambiar la decoración LookAndFeel de un programa Java eligiendo entre 3 opciones: Nimbus, Metal y Motif, utilizando el método setLookAndFeel de la clase UIManager

Java permite modificar el aspecto de sus ventanas y cuadros de diálogo. Se definen 3 decoraciones básicas que son:

  • Metal: decoración que se adapta al sistema operativo, por ejemplo en Windows su aspecto se basa en ese sistema y en macOS su aspecto es Aqua
  • Nimbus: decoración más moderna y elegante, aparecida en Java 6
  • Motif: decoración más ruda que era la que se usaba por defecto en sistemas Unix.
Continuar leyendo “Cambiar LookAndFeel en Java”

Foto desde un botón en Java

Mostrar imágenes al pulsar botones en una ventana JFrame que implementa la interfaz ActionListener, detectar la pulsación del botón como un evento de acción (ActionEvent) y llamar a la acción prevista con el método actionPerformed,en Java

Introducción: responder a las acciones del usuario

Las aplicaciones han de responder a las acciones que realiza el usuario, por ejemplo: cerrar la ventana al pulsar un botón. Es necesario poder detectar las acciones de usuario y convertirlas en acciones de programa. Java dispone de varias formas de implementar este funcionamiento. En este ejercicio se mostrarán algunas de ellas. Todas se basan en el uso de Interfaces. Las Interfaces son clases “prefabricadas” con propósitos definidos
Cada Interface contiene declaraciones de métodos (nombre del método, lista de argumentos y tipo de retorno) pero estos métodos no están implementados (carecen de cuerpo) y deben ser desarrollados. Todos los métodos de las Interfaces son public. Las Interfaces también pueden declarar constantes (public final static).
En Java no existe la herencia múltiple como tal: una clase no puede heredar (extends) de más de una clase. Pero una clase puede implementar más de una Interface, ésta es una manera de tener herencia múltiple. En la clase que implementa una Interface han de ser sobrescritos (override) todos los métodos declarados en la Interface.

Continuar leyendo “Foto desde un botón en Java”

Regiones GDI+ en VB .NET

Capturar la ventana completa del formulario con o sin decoración (área cliente) o una región que se corresponde con un control PictureBox usando GDI+ mediante objetos Graphics de origen y destino y la función BitBlt que combina 2 mapas de bits en uno solo, en Visual Studio 2017

En un artículo anterior se mostraba cómo aplicar un recorte circular a la imagen de un control PictureBox para que la imagen se vea redondeada. He ampliado el ejercicio continuando con GDI (Graphics Device Interface). GDI es es uno de los tres componentes de la interfaz de usuario de Microsoft Windows. Trabaja junto con el núcleo y la API de Windows.

Este ejercicio añade la funcionalidad de captura de pantalla usando métodos de las clases de GDI+ explicando cómo hacer para capturar la ventana de la aplicación completa (con bordes, barras de herramientas, de menús y de scroll, etc,), la ventana sin decoración (lo que se llama área cliente del formulario) o una región específica de la ventana, la del control PictureBox de imagen redondeada, y guardar los resultados como imagen JPG en el directorio del ensamblado. Estas imágenes JPG se muestran en un formulario nuevo.

Continuar leyendo “Regiones GDI+ en VB .NET”

Formularios con forma en VB .NET

Aplicar regiones a un formulario usando objetos GraphicsPath.AddLine y GraphicsPath.AddEllipse para recortar el área del formulario y cambiar la forma de la ventana, en Visual Studio 2017 con VB

Utilizando objetos de la clase GraphicsPath y aplicando regiones de recorte es sencillo modificar la forma de la ventana de un formulario. Podemos darle prácticamente cualquier aspecto pero, por sencillez del código, en este ejercicio nos restringiremos a 3 formas, círculo, rombo y polígono, usando regiones de recorte con el aspecto deseado.

GraphicsPath del espacio de nombres System.Drawing.Drawing2D representa una serie de líneas y curvas conectadas. La base del ejercicio es:

  • ventana redondeada: en el evento Paint de un PictureBox o del formulario se dibuja sobre GraphicsPath una región de recorte de forma circular con el método AddEllipse y se convierte en la región visible del formulario
  • ventana romboidal y poligonal: en el evento Load del formulario se van añadiendo líneas definidas por su punto x.y de inicio y de final con coordenadas absolutas calculadas respecto a la ventana visible del formulario. Cada segmento de línea se añade con GraphicsPath.AddLine(Int32, Int32, Int32, Int32) a la figura actual.
Continuar leyendo “Formularios con forma en VB .NET”

Specialized Turbo Levo 2018

Modificar el límite de velocidad de la bicicleta eléctrica Specialized Turbo Levo modelo año 2018 con la aplicación BLE para poder superar 29 km/h

Specialized tiene el que para mí es el mejor modelo de bicicleta eléctrica de montaña con suspensión doble, la Turbo Levo FSR. Hay varios modelos con precios y calidades diferentes pero todos llevan batería integrada en el tubo diagonal y motor central integrado en la zona del pedalier. Son bicicletas que se manejan perfectamente por la montaña a pesar de su peso en parado que es muy superior al de las bicicletas sin motor.

Continuar leyendo “Specialized Turbo Levo 2018”

Contador en ASP .NET con VB (3)

Sencillo contador de visitas que utiliza una variable de aplicación desde el archivo Web.config, obteniendo el valor de esa variable en el código apsx.vb e incrementándolo en 1 cada vez que se carga la página y presentando el número de visitas formateado con separador de miles

Una aplicación ASP .NET es el conjunto de archivos y carpetas de un directorio virtual y se representa mediante un objeto HttpApplication. Un objeto de este tipo, llamado Application, es generado al arrancar la aplicación (cuando un cliente pide una página del sitio por primera vez).
Application permite guardar variables (variables de aplicación) que van a estar disponibles para todos los usuarios (Application no asigna valores a usuarios concretos). Sin embargo, no es conveniente guardar en variables de aplicación código HTML extenso.
La variable de aplicación tiene una ventaja clara sobre la variable de sesión por el hecho de ser creada una sola vez por aplicación y no por usuario: independientemente del número de usuarios que visitan el sitio, hay una sola variable con el ahorro de memoria en el servidor.

Continuar leyendo “Contador en ASP .NET con VB (3)”