Autor Tema: Proyectos para Bases de Datos  (Leído 11116 veces)

0 Usuarios y 1 Visitante están viendo este tema.

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Proyectos para Bases de Datos
« en: Marzo 29, 2012, 02:58:58 am »
Hola a todos, este post esta dedicado y creado despues de ver la necesidad de los usuarios, por saber temas de base de datos que por mi parte ya he solucionado en mis años de programador, para eso he creado este post para poder compartir esas soluciones.

Este post es un tipo de "ToDo List" publico (para el que no sabe que es esto, quiere decir "cosas pendientes o cosas por hacer"), para hacerlo publico y no olvidarme al entrar al foro y recordarme cada ves que entro, que tengo que crear estos ejemplos para compartirlo con todos.

hace un tiempo en este post habia "prometido" a Yvan y demas que iba a hacer un post sobre un ABM de ADO+SQL basico en VB6 y despues para .NET, y que al final no he podido realizar, no quiero crear una imagen de usuario que promete y despues no hace nada, para eso he creado este post para recordarme a mi mismo las cosas que tengo que compartir, de esta forma me veo obligado a hacerlo y no olvidarme.

una ves que estos ejemplos esten publicados puedo asegurar que practicamente estas dudas desapareceran para siempre, aparte estos ejemplos no serviran solamente para saber como conectarse debidamente a la base de datos, sino tambien como usar los recordset, los comandos, hacer insert a la base, consultar, cargar listas, etc.

Los proyectos seran realizados siempre en VB6 primero y en .NET despues, para descargar, con todo el codigo fuente incluido, y comentando cada linea del source.

Los Proyectos a realizar seran:

VB6
  • ABM basico + SQL (sin clases): este es un ejemplo de ABM basico de algunas pantallas en VB6, nada de usar controles ADODC ni DATA, olvidarse de eso, y tambien olvidarse de usar los metodos de los recordset .AddNew, .Edit o .Delete de los recordset, se va a usar SQL puro (INSERT INTO, UPDATE, DELETE) y con un ejemplo de lanzar un reporte en datareport, sin el DataEnviroment que usando el metodo DAO, era de lo mas horrible que hubo. La base de datos usada sera Access 2003 y podra ser adaptado a cualquier motor de base de datos facilmente.
  • ABM basico + SQL (con clases): este es un ejemplo de ABM basico de algunas pantallas en VB6, nada de usar controles ADODC ni DATA, olvidarse de eso, y tambien olvidarse de usar los metodos de los recordset .AddNew, .Edit o .Delete de los recordset, se va a usar SQL puro (INSERT INTO, UPDATE, DELETE) y con un ejemplo de lanzar un reporte en datareport, sin el DataEnviroment que usando el metodo DAO, era de lo mas horrible que hubo. La base de datos usada sera Access 2003 y podra ser adaptado a cualquier motor de base de datos facilmente.

Que significa "sin clases" ?: eso significa que en el proyecto no se usaran "modulos de clase" para cada entidad, por ejemplo, si tenemos un ABM de clientes, se pueden agrupar todos los metodos y propiedades del cliente en un modulo de clase, lo cual aprovecha un poco la POO de VB6 y aparte ordena considerablemnte el codigo del proyecto, ya que el codigo para agregar, modificar, eliminar y cargar un cliente, quedaria todo dentro de un modulo unico el cual hace que la cantidad de codigo fuente en los formularios se redusca considerablemente, normalmente se hace sin esto, poniendo todo el codigo el en formulario del ABM, esto esta bien, pero una ves que vean el metodo con clases, van a ver que realmente vale la pena trabajar con clases, por eso voy a hacer 2 proyectos, de las 2 maneras, asi los usuarios que no estan acostumbrados a las clases, podran ver como cambia de una forma a la otra.

  • Guardar imagenes en base de datos: este sera un ABM de una sola pantalla, mostrando como seleccionar del disco una imagen y guardar su binario en la base de datos y de como mostrar la imagen ya guardada. Para eso se realizara con el metodo explicado en este post con el control ucImage de cobein.

.NET

  • ABM basico + SQL (.NET) (con clases) 3 capas: este es el mismo ejemplo que el de VB6 de ABM basico, aqui tambien se usara Access 2003 y podra ser migrado a cualquier motor de bases de datos y el ejemplo sera el mismo, solo que adaptado a la forma de .NET, en este ejemplo se usara SQL tambien y sera utilizado "con clases" ya que .NET por defecto deberia realizarse de esta forma, no habra un ejemplo de este proyecto "sin clases", y sera realizado en 3 capas.

Que son 3 capas ?. Para mas informacion ver este link:

Programación por capas

un explicación simple:

supongamos que voy a hacer un ABM de clientes y de articulos.

en el proyecto, te creas clases, esas clases las separas en carpetas distintas, una seria la capa de Datos, esta seria la capa mas "profunda" o tercera capa, si trabajas con bases de datos, esta capa se encarga de la conexion a la base de datos y de ejecutar las consultas y comandos que vienen de la segunda capa(la capa de Negocio).

la segunda capa (la de "Negocio") se encargaria de preparar los SELECT a la base de datos, y preparar los comandos a ejecutar, que seran enviados a la tercera capa que vimos arriba (la de "Datos").

Por ejemplo, quiero hacer un ABM de clientes, entonces me creo una clase llamada cCliente y ahi pongo todas las propiedades y metodos necesarios para manegar los clientes, insertar, actualizar,borrar..etc, lo mismo me creo una clase para la de articulos llamada cArticulos, para cada "Entidad" te creas una clase y ahi mismo pones sus metodos.

y la primer capa, la de "Presentación" (que seria la interfaz del programa), ahi haces todo llamando siempre a los metodos de la segunda capa (la capa de "Negocio"), supongamos que yo aprieto un boton y quiero borrar un cliente, entonces llamo al metodo de borrarCliente de la clase cCliente.


  • Guardar imagenes en base de datos: este sera un ABM de una sola pantalla, igual que en de VB6 mostrando como seleccionar del disco una imagen y guardar su binario en la base de datos y de como mostrar la imagen ya guardada.

ojala sean pacientes y esperen a que vaya subiendo estos proyectos.

saludos.
« última modificación: Agosto 12, 2012, 10:04:12 pm por seba123neo »

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Proyectos para Bases de Datos
« Respuesta #1 en: Marzo 29, 2012, 04:08:21 am »
Excelente!!!, no sé si me aventuré muy rápido a escribir o quizá debí esperar a tus siguientes post pero igual no quería dejar saludarte y agradecerte por este esfuerzo que sera de mucha utilidad para la comunidad, en adelante aquel que pregunte sobre estos temas debemos decirle ¿Ya pasaste por el postsebas? (el Post de Sebas) y de no ser así dirigirlo aquí.
Los tiempos laborales y demás nos traicionan y es comprensible que a veces nos tardemos un poco así que aguardaremos con paciencia cada entrega.

Saludos amigo.
Me encuentras en YAcosta.com

cristian_19a

  • Kilobyte
  • **
  • Mensajes: 80
  • Reputación: +28/-3
    • Ver Perfil
Re:Proyectos para Bases de Datos
« Respuesta #2 en: Marzo 29, 2012, 06:41:01 am »
muy bien
Claro sería excelente programar con POO y en N-Capas
usando el MVC
y por el lado del gestor
seria apropiado usar los procedimientos almacenados, los disparadores, etc
para aprovechar al maximo los recursos
bueno yo eso es lo que realizo en mi proyectos.

Saludos

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Proyectos para Bases de Datos
« Respuesta #3 en: Marzo 29, 2012, 09:52:10 am »
Excelente!!! Seba esperando el aporte...

Saludos.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Re:Proyectos para Bases de Datos
« Respuesta #4 en: Marzo 29, 2012, 02:41:46 pm »
No sepodía esperar menos de tí Seba !!! :o... Excelente !!!
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Proyectos para Bases de Datos
« Respuesta #5 en: Agosto 12, 2012, 09:58:49 pm »
primer proyecto de .NET subido, chequeen el post principal.

saludos.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Proyectos para Bases de Datos
« Respuesta #6 en: Agosto 13, 2012, 10:24:12 am »
Muuuuchas gracias Seba, revisando y testeando el code.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Proyectos para Bases de Datos
« Respuesta #7 en: Mayo 05, 2015, 10:22:08 am »
Hola Seba,

Baje este ejemplo tuyo y me funciona correcto e incluso pude hacer unos cambios.
Pero no encuentro donde se hace la conexion a la BD access por  ningun lado...
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Proyectos para Bases de Datos
« Respuesta #8 en: Mayo 18, 2015, 10:11:34 am »
Hola amigo SEBA estuve utilizando tu ejemplo y te agradezco por el por que es muy buen punto de partida para ver la estructura de un proyecto en Capas ya que esta muy claro y prolijo.
Ahora te quiero hacer una pregunta por que me encontre con el problema de que al compilarlo me daba error al querer modificar los datos solo los podia leer y investigando un poco vi que hay que asiganarle permisos a la carpeta o la Base de datos.

Cual es la forma de proceder correctamente ? la base de datos y archivos modificables donde se colocan y como se accede ya que si van en otro lugar habria que modificar esta linea que es la que lee la BD

Código: [Seleccionar]
If File.Exists(cUtiles.AppPath & "\datos.mdb") = False Then

Muchas Gracias
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.