DataAdapter+DataSet vs Ikea
Al tener que acceder a la base de datos para tantas cosas y tantas veces, uno se plantea cual es la forma más eficiente de acceder a ella y sobre todo como puede uno ahorrarse todas esas tareas repetitivas como actualizar, insertar y borrar datos.
Por otra parte no todos los modulos de la aplicación tienen las mismas necesidades asi que se pueden plantear basicamente dos formas de hacer las cosas:
- Una forma más cómoda es utilizar MySqlDataAdapter, DataSet, unos buenos DataBindings y toda la panda, que facilitan la vida cuando se trabaja con formularios asi como las relaciones padre-hijo entre diferentes tablas como Proveedores y ProveedoresTelefono por ejemplo.
El tema esta en definir la logica de insercion, borrado y actualización y practicamente se hace el resto solo.
- La otra forma consite en hacerselo uno mismo todo (Ikea). Es algo mas complejo para ser aplicado a formularios, pero permite un uso mas amplio por otros modulos de la aplicación, además de no tener que aprenderse el ADO.NET.
El ejemplo seria la clase FarmaAuthorize de gestion de usuarios. Diversos módulos definen objetos de este tipo para autentificar, crear y borrar usuarios, todo ello sin tener nada que ver con MySqlCommands y demas en la clase que utiliza el objeto.
El obstaculo viene a la hora de adaptarlo a modulos formulario. Se deben crear metodos que sincronicen lo que aparece en el formulario con la base de datos utilizando las herramientas proporcionadas por la clase intermedia.
Estas son las dos formas que he utilizado y utilizare en el proyecto para los accesos a base de datos. Son algo diferentes en tiempo de programación y velocidad pero se adaptan a las necesidades de cada parte de la aplicacion.
Y esto es todo por hoy…..voy a por ti Parasitologia!!
Add comment Enero 22, 2007
Examenes y el proyecto
Bueno, en primer lugar lo evidente: hasta que termine los examenes no voy a programar más.
Cuando termine, entonces el proyecto entrara en la recta final, en la que solo queda la programación de ciertos modulos practicamente clónicos (acceso a base de datos con altas, bajas, modificaciones, consultas y busquedas y realmente ya esta hecho), el módulo más importante: el de tasación y por supuesto finalizar el sistema de impresión y el de ayuda en linea.
Pero esto no quiere decir que no pueda sacar algo de tiempo para hacer otras cosas como publicar unas capturas de lo que he hecho hasta ahora que se vea (Forms) y que funcione:
- Splash de la aplicacion
- Login. Necesaria la autentificacion del usuario previo inicio de la aplicacion
- Gestion de usuarios de los usuarios de la aplicacion. (El sistema de caducidad esta pendiente de implementacion o puede no ser implementado)
- Modulo clonicos de gestion (en este caso facultativos, pero igual para proveedores, ensayos, pacientes, etc…)
Add comment Enero 19, 2007
Sobre los niveles de autorización
En un servicio farmacéutico o en una oficina de farmacia trabajan a diario un número considerable de personas dependiendo del servicio que presten.
Este personal desenpeña diferentes roles con diferentes responsabilidades, es decir, un auxiliar no puede tener el mismo nivel de responsabilidad que el licenciado a cargo del servicio. Esta diferenciación no solo esta motivida por el reparto de trabajo, si no por la propia ley que exige que el licenciado firme y autorice la entrada de materia prima, los controles efectuados, las fórmulas elaboradas, etc.
Debido a esto se plantea un problema a la hora de implementar el programa: deben existir múltiples usuarios con diferentes niveles de autorización.
La solución (por lo menos a mi entender) incluye:
- Niveles de autorización completamente configurables e independientes de cada módulo (Facultativos, Pacientes, Control calidad, Materias primas, la propia gestión de usuarios,…)
- Registro completo de todas las acciones realizadas con cada módulo del programa por cada usuario detallando hora, fecha y nivel de autorización utilizado, incluso la acciones no exitosas (necesario si se quiere tener un control de calidad en todo el proceso de elaboración).
- Identificación del usuario al iniciar la aplicación mediante un identificador propio y una contraseña almacenada en la base de datos y “encriptada” (más bien resumida) con MD5. Así se evita que cualquier usuario pueda utilizar la cuenta de otro (al menos parcialmente).
A continuación se incluye un diagrama general del proceso de autorización de un acción para un usuario determinado:
Add comment Enero 5, 2007
Novedades
He hecho bastantes cosas en este tiempo, pero no he tenido tiempo para compartirlas.
Primero. Sobre el esquemea de la base de datos puedo decir que depués de leer y leer varios libros de teoria y problema de bases de datos resueltos tengo algun resultado sobre el tema. Aun no esta completo, falta todo lo relacionado con las formulas y las ventas pero lo demas esta ahi. (Facultativos, materias primas, control de calidad, etc…)
Segundo. He definido las reglas de estilo de mi código y dentro de nada tendre disponible en la forja el analisis de requisitos de la aplicación así como algo de código básico (una especie de framework de impresión, sistema de autentificación de usuarios para multipuesto, cargador de preferencias de aplicacion, conexion con la base de datos, ….). En fin casi de todo menos Windows.Forms.Form
Tercero. Estoy diseñando un sistema de ayuda inteligente que responda interaccionando con el usuario a petición de este vía preguntas o posiblemente que detecte acciones. La idea es algo parecida a la bombilla del OpenOffice o al famoso clip de ya sabeis de que programa de que empresa.
¿El nombre del engendro? Farmakito. (Si, es posible que me influyera un gitano con ansias de velocidad)
A partir de ahora intentare publicar con mayor frecuencía si me lo permiten Análisis Instrumental y Química Farmacéutica II.
Add comment Noviembre 21, 2006
Presentacion
El proyecto Formulacion Magistral es un intento de crear un programa libre de gestion y venta de formulas magistrales destinado a la Oficina de Farmacia y que proporcione la opcion de evitar software propietario y sus costosas licencias.
El proyecto se realizara en C# con Mono como compilador e interprete para que sea portable dentro de una gran variedad de infraestructuras y sistema operativos pero centrandose en Linux/x86 y Windows/x86 que son las dos opciones reales.
Por ultimo decir acerca de mi que soy un estudiante de 3º de Farmacia de la Universidad Complutense al que le gusta bastante programar.
Actualmente estoy avanzando en el arte del diseño de bases de datos con un par libros de problemas resueltos y uno de teoria y dentro de poco podre terminar el diseño y decir que por lo menos cumple 3FN (:P).
3 comments Noviembre 5, 2006
Inauguración blog del proyecto
Queda inaugurado el blog del proyecto donde pronto comenzaré a plasmar los avances en el desarrollo del mismo.
De momento el proyecto no esta registrado en la forja por problemas con una dirección de correo aceptable por red iris. Pero ya esta en fase de planificación.
Add comment Octubre 20, 2006
