Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
MapBD: Mapeado De Bases De Datos SQLite (y MySql En Pruebas)
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje MapBD: Mapeado De Bases De Datos SQLite (y MySql En Pruebas) 
 
Hola, os traigo mi ultimo trabajo, (en pruebas).

MapBD: mapeado de bases de datos Sqlite y MySql ( Enlace de descarga Version 0.0.3 -  4 de enero de 2012z




Para usarlo
1) lo que hay que introducir la ruta y el nombre de la base de datos (sqlite), en mi caso es "/home/uno/alfa",
2) Indicar la carpeta donde se guardaran las clases generadas (en mi caso, he puesto "/home/uno", en el vuestro, poner la ruta donde se encuentra vuestro proyecto.
3) Pulsar el botón "Generar", y os añadirá al directorio de vuestro proyecto las clases.
4) Cargar vuestro proyecto, y vereis las nuevas clases añadidas.

El objetivo del programa es analizar una base de datos (con SQLite, ya esta terminado, con MySql, me queda probarla), y obtener clases para usar la base de datos.

El programa esta basado en la idea de  joseagch (ver enlace: Crear Clase Manipule Una Tabla En Mysql ).

Lo que hace es leer la base de datos, y analizar las tablas y sus campos creando los procedimientos habituales:
-editar
-borrar
-insertar
y algunas mas que os comento mas abajo.

Ademas de generar gridviews, formateados. Todo ello automaticamente !!! ahorrandonos un montón de código a escribir    

Os comento:
Por cada tabla de cada base de datos crea dos clases:
{nombre_tabla}Registro-> Clase que contiene los campos de la tabla
{nombre_tabla}' -> Clase que trabaja con los registros de la tabla (inserta, edita, borra, etc...)


Para crear una clase que manipule los datos :

PUBLIC clase_para_trabajar AS NEW {nombre_tabla}

'ejemplo de uso:
PUBLIC registrohola AS NEW hola


Atributos de la clase  {nombre_tabla}Registro
   Ademas de los campos (con sus tipos) tiene estas dos mas:

PROPERTY campo AS string[] '-> array que contiene el nombre del campo, tal como lo llama la base de datos
PROPERTY campotipo AS string[] ' -> array que contiene el tipo de campo (date, string,float,integer..)


Métodos de la clase {nombre_tabla}:
.informe() : muestra en consola datos acerca de la base de datos, tabla, y campos

.Abrir() : abre la conexion a la base de datos
'ejemplo de uso:
registrohola.abrir()


.Cerrar(): cierra la conexion a la base de datos

.total(): devuelve el numero de registro que contiene la tabla

.Insertar(): insertar en la tabla, los valores de los atributos de la clase
'ejemplo de uso:
PUBLIC SUB ButtonInsertar_Click()
WITH registrohola
  .id = ValueBoxId.Value
  .texto = TextBoxTexto.Text
  .datos = ValueBoxFloat.Value
  .fecha = ValueBoxFecha.value
  PRINT ValueBoxFecha.Value
  .insertar()
resultado = .contenido()
END WITH
gridviewColumnas.Rows.Count = resultado.Count
END


Por cada campo que tenga la tabla:
.Modificar{nombre_del_campo}(valor): modifica el registro cuyo campo "nombre_del_campo" sea igual a "valor"
'ejemplo de uso:
PUBLIC SUB ButtonEditarId_Click()
WITH registrohola
  .id = ValueBoxId2.Value
  .texto = TextBoxTexto2.Text
  .datos = ValueBoxFloat2.Value
  .fecha = ValueBoxFecha2.value
  .modificarId(registrohola.id)
resultado = .contenido()
END WITH

gridviewColumnas.Rows.count = 0 'para modificar el numero de filas, y forzar la lectura
gridviewColumnas.Rows.Count = resultado.Count

END


.Borrar{nombre_del_campo}(valor): borra el registro cuyo campo "nombre_del_campo" sea igual a "valor"

'ejemplo de uso:
PUBLIC SUB ButtonBorrarId_Click()
registrohola.BorrarId(Val(TextBoxId.text))
resultado = registrohola.contenido()
gridviewColumnas.Rows.Count = resultado.Count
END


Busquedas:Para los campos que sean tipo string:
.BuscarContenido{nombre_del_campo}(valor, opcional campo_por_el_que_ordeno): Devuelve el "result" de una consulta donde los registros contienen "valor", y opcionalmente los ordenas segun el campo indicado en "campo_por_el_que_ordeno"
'ejemplo de uso:
PUBLIC SUB ButtonBuscar_Click()
Resultado = registrohola.BuscarContenidoTexto(TextBoxBusc.text)
gridviewColumnas.Rows.count = resultado.count
END


.contenido(): devuelve el "result" de la tipica consulta: "Select * From nombre_tabla"


Ejecucion de consultas:
.sql(consulta_sql) : devuelve el resultado de la consulta en la tabla, segun la ejecucion de la sentencia sql "consulta_sql"


.mostrarRegistro(numero , grid , OPTIONAL sqlcadena ): Devuelve un "resul", (util para la gridviews crados con "gridFormatearFilas", ver abajo), que es el registro "numero", ejecutando la sentencia "Select * From nombre_tabla" o la dada opcionalmente "sqlcadena"
'ejemplo de uso:
PUBLIC SUB ToolButtonAdelante_Click()
contador += 1
IF contador < (registrohola.Total()) THEN
  registrohola.mostrarRegistro(contador, gridviewFilas)
gridviewFilas.Refresh
ValueBoxcontador.value = contador + 1
ELSE
contador -= 1
ENDIF
END



Salidas gridviews:
.gridFormatearColumnas(grid): formatea al gridviews "grid", con los titulos de las columnas igual a los campo.
'ejemplo de uso:
gridviewColumnas = registrohola.gridFormatearColumnas(gridviewColumnas)



.gridFormatearFilas(grid): formatea al gridviews "grid", con los titulos de las filas igual a los campo.
'ejemplo de uso:
gridviewFilas = registrohola.gridFormatearFilas(gridviewFilas)
 





Una aplicación de ejemplo realizado con las clases que genera el programa:

pantallazopru


Enlace de descarga del ejemplo: Ejemplo: pruebasMapBDgenerado-0.0.3.tar.gz Actualizado a 4 de enero de 2012


Nota:
Si encontrais bugs, y/o mejoras a añadir (nuevos métodos, sentencias sql comunes), me lo comentais, para irlo "puliendo" y que sea mas util.

Ver también el ejemplo que os adjunto para sacarle provecho a la aplicación.  
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Jueves, 06 Noviembre 2014, 22:31; editado 5 veces 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MapBD: Mapeado De Bases De Datos SQLite Y MySql (en Pruebas) 
 
Bueno, aunque el programa no ha tenido mucho éxito (solo 11 descargas desde que lo subí   ), he seguido mejorándolo ya que pienso que puede ser una herramienta muy buena para aquellos que hacen programas con bases de datos, y les hes muy tedioso escribir siempre lo mismo variando muy pocas cosas  de una aplicación a otra.

Mejoras y corrección de bugs:
Se han incluido más métodos, y corregidos algunos errores (seguramente habrá alguno más   ), todo ello lo he resumido en el siguiente manual, que os podeis descargar en el siguiente enlace:

manual MapBD v003.pdf

He incluido también otro ejemplo, sobre una gestión de consultas médicas
ConsultasMed-0.0.1.tar.gz


Aunque los enlaces de descarga los he actualizado (en el post anterior), os lo pongo de nuevo:

MapBD-0.0.3.tar.gz
Ejemplo de uso: pruebasMapBDgenerado-0.0.3.tar.gz


Bueno, espero vuestra opiniones, dudas, sugerencias...  

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MapBD: Mapeado De Bases De Datos SQLite Y MySql (en Pruebas) 
 
Julio, tu programa y tu manual esta de perlas.
Felicitciones por tu aporte.
Gracias.   
 



 
ivanovichenco - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MapBD: Mapeado De Bases De Datos SQLite Y MySql (en Pruebas) 
 
ivanovichenco:

Gracias     , me alegra que te haya gustado.

Estoy preparando un de video para explicar como usarlo y como sacarle el máximo partido a esta herramienta, ademas de otro pequeño manual tipo "paso a paso" de como hacer una aplicación.

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MapBD: Mapeado De Bases De Datos SQLite Y MySql (en Pruebas) 
 
Ya he subido varios videotutoriales, lo podeis ver en la sección de "Videotutoriales".


Además ya hay una nueva versión del MapBD, la v.0.0.4, la podeis descargar en mi blog.

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MapBD: Mapeado De Bases De Datos SQLite Y MySql (en Pruebas) 
 
Nueva versión, la 0.1.0

Esta vez, se incluyen más clases con métodos para poder trabajar con sentencias con multiples tablas (del tipo
"Select tabla1.nombre, tabla2.empresa From tabla1,tabla2 ....")

Nota: Un detalle importante que se me había pasado comentaros, es que las clases que genera son compatibles tanto para gambas2 como para gambas3.


Citar:
Nueva Versión MapBD
versión 0.1.0
Mejoras en Consultas MultiTablas

He seguido trabajando el este programa, ya que me encontraba con la dificultad de poder trabajar con sentencias sql, que manejaran varias tablas, y mostrar sus resultados en un gridviews...

Pues bien, ya le he incluido esa mejora.

Ahora (además de las clases que creaba la antigua versión), crea dos nuevas clases, para manejar los "registros de datos" que salen de resultado en las sentencias con multiples tablas.
Se llaman,respectivametne:
 a)     BD{nombre_base_de_datos}Registro
                 Que es la que contiene todas las propiedades (coinciden con todos los campos que tienen todas la tablas de la base de dato, siendo el nombre de la propiedad igual al nombre de la tabla+guion bajo ("_") +nombre del campo

 b)  BD{nombre_base_de_datos}
               Esta clase va a tener los métodos con la que trabajaremos con la clase anterior.

En esta versión tiene los siguientes métodos:
           PUBLIC SUB Abrir()
                abre la conexión a la base de datos
           PUBLIC SUB Cerrar()
                 cierra la conexión de la base de datos
           PUBLIC FUNCTION sql(consulta AS String) AS result
                 ejecuta una consulta SQL y devuelve un "result"
           PUBLIC SUB resultObject(resultado AS Result) AS object[]
                  convierte un "result" en Objetos
           PUBLIC SUB EscribeObjetos(t AS Object[])
                  escribe los objetos en la consola
           PUBLIC FUNCTION GridObjetos(t AS object[], grid AS gridview) AS
gridview
                   formatea un gridview dado (grid), con los datos de los objetos obtenido en la sentencia anterior.


Os lo explico con el ejemplo, que creo que se verá mucho más claro, su utilización:
"En el programa de Consulta Medica, queremos que se nos muestre un gridviews, con todos los enfermos y la enfermedad que padecen. Nota: Hay alguno que padecen más de una enfermedad."

La sentencia SQL seria:

    Select nombre,Apellido,TablaExpediente.enfermedades
    FROM TablaEnfermo,TablaExpediente
    WHERE tablaenfermo.idenfermo=tablaexpediente.idenfermo


 ¿Como lo haríamos con los nuevos métodos?
DIM paso2 AS NEW BDControlConsulta 'nueva Clase que maneja Resultados de sentencias SQL que usan Varias Tablas
DIM obj AS Object[] 'creamos un array de objetos, que van a contener los resultados
Dim resultado as result 'contiene el resultado de la consulta sql

'abrimos la conexion a la base de datos
paso2.Abrir


'obtenemos el resultado de la sentencia SQL
resultado=paso2.sql("SELECT nombre,Apellido,TablaExpediente.enfermedades FROM TablaEnfermo,TablaExpediente WHERE tablaenfermo.idenfermo=tablaexpediente.idenfermo")



'extraemos los objetos
obj = paso2.resultObject(resultado)
 
'rellemos el gridviews, con los objetos (incluido el titulo de cada columna)
GridView1 = paso2.GridObjetos(obj, GridView1)

 Y el resultado en pantalla es....

(ver al final)

¿Resulta muy cómodo verdad? Y solo en 7 lineas de código !!!

Podéis descargaros el código fuente en: www.jsbsan.tk/mapbd/MapBD-0.1.0.tar.gz



Podéis descargaros el ejemplo en: www.jsbsan.tk/mapbd/ConsultasMed-0.1.2.tar.gz


Nota:
- Para que se añadan estos métodos a vuestro proyecto, debéis de ejecutar la nueva versión de MapBD, para actualizar las clases.




Captura:

consultamultipletablas


En programa esta en pleno desarrollo, si encontráis algún bug o alguna mejora, me lo comentais

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Martes, 10 Enero 2012, 20:34; editado 2 veces 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MapBD: Mapeado De Bases De Datos SQLite (y MySql En Pruebas) 
 
jsbsan escribió: [Ver mensaje]
Nueva versión, la 0.1.0
En programa esta en pleno desarrollo, si encontráis algún bug o alguna mejora, me lo comentais
Saludos


Hola Julio, gracias por este profgrama.
Creo que hay un error en la creacion de las funciones de buscar contenido y buscar igual en la sentencia sql cuando se incluye un orden

se crea asi:

PUBLIC function BuscarContenidoElCampo( valor AS String,optional CampoOrden as string ) as result
SQLString="Select * From LaTabla"
If CampoOrden=null then
   SQlString &= " WHERE ElCampo like '%" & valor & "%' "
else
   SQlString &= " WHERE ElCampo like '%" & valor & "%'  Order by CampoOrden"
endif
Try mRs=mBase.Exec(SQLString)
IF ERROR THEN
Message.Error(" Se ha producido un ERROR al Buscar datos, " & "\nSentencia:  "   & sqlstring )
else
return mRs
ENDIF
END

pero me parece que deberia quedar así ... Order by " & CampoOrden ...

Public Function BuscarContenidoElCampo(valor As String, Optional CampoOrden As String) As Result
SQLString = "Select * From LaTabla"
If CampoOrden = Null Then
   SQlString &= " WHERE ElCampo like '%" & valor & "%' "
Else
   SQlString &= " WHERE ElCampo like '%" & valor & "%' Order by " & CampoOrden
Endif
Try mRs = mBase.Exec(SQLString)
If Error Then
Message.Error(" Se ha producido un ERROR al Buscar datos, " & "\nSentencia:  " & sqlstring)
Else
Return mRs
Endif
End

Un saludo.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: MapBD: Mapeado De Bases De Datos SQLite (y MySql En Pruebas) 
 
tincho:

Citar:
Order by " & CampoOrden ...

Pues si, tienes razón.

Lo comprobaré en la nueva versión, en la que estoy trabajando.

La tengo alojada en este blog:
http://mapbdvistas.blogspot.com.es/

Por si le quieres echar un vistazo. Todavia me falta por añadir algun ejemplo y algunos videotutoriales,
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron