domingo, 30 de septiembre de 2018

wxwidgets - Base de datos de libros SQLite - Lector código de barras MX009-2MA7C

Informática

wxwidgets
 Base de datos de libros
SQLite
Lector código de barras
MX009-2MA7C

Este artículo es una continuación de wxwidgets-Base de datos de libros-SQLite .
A pocos días de la realización de la base de datos de libros, por casualidades del destino, me dejaron un lector de código de barras MX009-2MA7C.
El lector funciona como un teclado mas, traslada el código de barras a código numérico, tecleando el código como si fuera un teclado, ademas de pulsar ENTER.
En pocos minutos añadí una entrada de texto (en verde), donde el lector introduce el código y lo busca en la base de datos.

El programa con el cambio realizado.


Probando el lector de código de barras.

Da gusto ver como en 1 segundo te busca el libro en la base de datos, después de leer el código de barras.
El programa lo he compilado solo en Linux, en cualquier momento lo compilo también en Windows.
Solo tienes que copiar el fichero ejecutable en el directorio donde está la base de datos  libros.sqlite .

PROGRAMA


Saludos.
Juan Galaz

viernes, 28 de septiembre de 2018

wxwidgets Base de datos de libros SQLite

Informática

wxwidgets
 Base de datos de libros
SQLite


Buscando por internet encontré una base de datos de libros, estaba realizada para access microsoft. Era del programa abies 2 que se utilizaba para una gestión de  bibliotecas escolares.
La página del proyecto es http://www.abies.es/web/ , ahora el proyecto se basa en web, por lo que faltan en mi base de datos muchos libros desde hace 10 años hasta ahora.
Me puse manos a la obra y la base de datos en formato mdb la pase a formato sqlite.
La base de datos consta de 388.000 libros, 200.000 autores, y 50.000 editoriales.
Por lo que podéis ver es bastante grande, era una experiencia nueva trabajar con tanta cantidad de libros, por lo que lo tome como un reto.
En primer lugar hice pruebas con los autores, y me dí cuenta que era un problema las mayúsculas y  los acentos, en las búsquedas.
Había autores que los habían escrito de diferentes formas, Garcia, García, GARCIA, GARCÍA.
En MySQL había una solución, pero en SQLite no funcionaba.
Esto era un problema en las búsquedas, por lo que tome la solución mas drástica, poner todo en mayúsculas y quitar acentos.
También me pasó con las editoriales, por lo que también pasé todo a mayúsculas y quitar acentos.
El programa lo he realizado solo para consultas, por lo que no se puede añadir nada a la base de datos.
Anteriormente había realizado el mismo programa en Gambas (Visual Basic para Linux):
                01/08/2018 - Gambas -Base de datos de libros con SQLite. LIBROS
Existe una librería llamada  wxSQLite, pero no he querido utilizarla.
He utilizado parte del código realizado en el programa hecho para consola para no complicarme mucho.
El programa se realiza en Linux, y cuando funciona bien se intenta compilar en Windows.
El problema ocurre al utilizar las diferentes versiones de las librerías wxwidgets.


Funcionando Linux.


Funcionando en Windows.


Funcionando en Linux pero con Wine.

La base de datos consta de 3 tablas o bases de datos, Fondos,Autores,Editoriales.
La base de datos principal es Fondos, en esta se encuentran los los libros con su  IdAutor y IDEDITORIAL, que son numeros enteros.
Los  campos IdAutor y IDEDITORIAL enlazan a las bases de datos o tablas, de Autores y Editoriales, donde se encuentran los nombres de cada autor y editorial.
En resumen son 3 bases de datos con datos enlazados o datos vinculados.

PROGRAMA


Saludos.
Juan Galaz




Como curiosidad existe una página web donde se encuentra una base de datos de libros inmensa.
REBECA: registros bibliográficos para bibliotecas públicas españolas


Bibliografía:

https://poesiabinaria.net/2015/03/usando-sqlite-en-nuestros-programas-en-cc/
http://apuntes-para-no-olvidar.blogspot.com/2012/01/conectar-con-una-bd-de-sqlite-en-c.html
http://www.aprendoencasa.com/index.php/2014/02/12/base-de-datos-sqlite-con-el-lenguaje-de-programacin-c/

miércoles, 19 de septiembre de 2018

Base de datos autores - SQLite y wxwidgets en Linux y windows

Página principal

Base de datos autores
SQLite y wxwidgets
Linux y windows


En el anterior artículo había realizado una base de datos de autores utilizando la consola, ahora toca hacer un entorno gráfico con la librería wxwidgets.
Existe una librería llamada  wxSQLite, pero no he querido utilizarla.
He utilizado parte del código realizado en el programa hecho para consola para no complicarme mucho.
El programa se realiza en Linux, y cuando funciona bien se intenta compilar en Windows.
El problema ocurre al utilizar las diferentes versiones de las librerías wxwidgets.
Ejemplo:
En la librería 3.1.1 simplemente se imprime un puntero de cadena con:
    MiLista->SetItem(z, 1, sqlite3_column_text(resultado, 0));
Si utilizamos 2.8.12 debemos emplear:
    sprintf(Stemporal,"%s ",sqlite3_column_text(resultado, 0));     
    StringTmp=wxString::FromUTF8(Stemporal);
    MiLista->SetItem(z, 1, StringTmp);

Esto es solo lo que he tenido que cambiar para compilar en las dos librerías.
He visto que en Windows  y con la librería 3.1.1 el repintado de wxListCtrl no funciona bien.
Por lo demás funciona todo bien y se puede ver el resultado en las imágenes.


Windows.


Linux en Debian 9


En Linux pero bajo Wine.

PROGRAMA

Saludos.
Juan Galaz

Bibliografía:

https://poesiabinaria.net/2015/03/usando-sqlite-en-nuestros-programas-en-cc/
http://apuntes-para-no-olvidar.blogspot.com/2012/01/conectar-con-una-bd-de-sqlite-en-c.html
http://www.aprendoencasa.com/index.php/2014/02/12/base-de-datos-sqlite-con-el-lenguaje-de-programacin-c/

martes, 18 de septiembre de 2018

Lenguaje C - Base de datos autores - Compilar SQLite bajo windows

Página principal


Lenguaje C
Base de datos autores
Compilar SQLite bajo windows


En el anterior artículo había realizado una base de datos de autores dbautor.html .
Estaba realizado y compilado bajo Linux, ahora toca explicar como se compila bajo Windows.
No es que sea difícil, pero hay que realizar unas pequeñas modificaciones para que el compilador funcione.
La página donde he sacado la información es esta:
http://www.aprendoencasa.com/index.php/2014/02/12/base-de-datos-sqlite-con-el-lenguaje-de-programacin-c/

Se descarga de la página de descargas de SQLite  https://www.sqlite.org/download.html?  los siguientes ficheros:
sqlite-amalgamation-3250000.zip   y   sqlite-dll-win32-x86-3250000.zip
Pueden variar la versión de descarga.

Se descomprimen en un directorio.
Copiar sqlite3.dll a Windows/system  o en mismos directorio del ejecutable.
Creamos la librería  con la orden:  dlltool -D sqlite3.dll -d sqlite3.def -l libsqlite3dll.a
La librería creada libsqlite3dll.a se copia a   C:\TDM-GCC-32\lib
Se copia sqlite3.h a C:\TDM-GCC-32\include
Para crear el programa ejecutable se utiliza la orden: gcc autorw.c  -lsqlite3dll  -o autorw.exe


Captura del programa funcionado bajo windows.

Debido a que windows no tiene la librería #include <termios.h>  que dispone Linux , he eliminado las rutinas correspondientes.
Estas rutinas solo hacían que no se necesitase pulsar ENTER cada vez que pulsáramos una tecla.

PROGRAMA

Saludos.
Juan Galaz

Bibliografía:

https://poesiabinaria.net/2015/03/usando-sqlite-en-nuestros-programas-en-cc/
http://apuntes-para-no-olvidar.blogspot.com/2012/01/conectar-con-una-bd-de-sqlite-en-c.html
http://www.aprendoencasa.com/index.php/2014/02/12/base-de-datos-sqlite-con-el-lenguaje-de-programacin-c/