Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



Mostrando entradas con la etiqueta sqlite3. Mostrar todas las entradas
Mostrando entradas con la etiqueta sqlite3. Mostrar todas las entradas

lunes, 10 de agosto de 2015

Importar Tablas y Vistas de Sqlite a .CSV

Importar 

Tablas y Vistas 

desde Sqlite a .CSV


Pues trabajando el otro día  con una base de dato Sqlite3, con el complemento de firefox Sqlite Manager, quise pasar una vista que tenia en la base de datos al formato .CSV, (datos separados por coma), vi las opciones de exportación que tiene este programa, y no encontré como hacerlo.  Entonces me puse a trastear en google, y encontré como hacerlo usando la terminal y el comando sqlite3.

Pasos a seguir:

1) Escribimos en la terminal el comando sqlite3 seguido del nombre de la base de datos (tienes que tener instalado sqlite3):

$sqlite3 Nombre.sqlite


2) Se nos abre el  prompt de sqlite3

SQLite version 3.8.7.4 2014-12-09 01:34:36
Enter ".help" for usage hints
sqlite>

3) Y escribimos estas ordenes:

sqlite>.headers on

sqlite>.mode csv

sqlite>.output out.csv

sqlite>select * from Tabla_Vista;


4) De esta forma el resultado de la sentencia  "select * from Tabla_Vista" sera escrita en el archivo out.csv. Comentarios que es muy rápida, en mi ordenador era prácticamente inmediata la creación del archivo .csv

5) y para salir del prompt de sqlite3 escribimos:

sqlite>.exit


Ahora tendremos en el directorio que estemos el archivo out.csv con los datos, para poderlos exportar a LibreOffice Calc,  Excel o otros programas.


Saludos

fuente:
http://nelsonkewebs.blogspot.com.es/2014/05/como-exportar-datos-csv-desde-sqlite3.html?m=1









martes, 5 de mayo de 2015

Gambas3: Crear por código una base de datos añadiendo tablas y campos.



Gambas3: Crear por código una base de datos añadiendo tablas y campos.


He encontrado un ejemplo (ver fuente)  de como crear una base de datos desde Gambas3.

El proceso es el siguiente:
1) Si existe, borra un test.sqlite archivo en el directorio personal del usuario.
2) Crea un test.sqlite base de datos SQLite y define una tabla "sampletable" con dos campos enteros, uno va ha ser autonumerico. Y el otro un número aleatorio.
3) Rellena la tabla con 10.000 registros
4) Muestra los resultados en un gridview utilizando el caso de manipulación de datos ya se ha descrito en una sección separada.
En el formulario de Gambas, solo se necesita un gridvew.
' Gambas class file
PRIVATE $hConn AS NEW Connection
PRIVATE $res AS Result
'-------------------------------------------------
PUBLIC SUB Form_Open()
DIM iCount AS Integer
DIM hTable AS Table
DIM rTest AS result
DIM sql AS String

'define the gridview layout
GridView1.header = GridView.Horizontal
GridView1.grid = TRUE
GridView1.Rows.count = 0
GridView1.Columns.count = 2
GridView1.Columns[0].text = "ID"
GridView1.Columns[1].text = "Value"
GridView1.Columns[0].width = 55
GridView1.Columns[1].width = 55


WITH $hConn
    .Type = "sqlite"
    .host = User.home
    .name = ""
END WITH

'delete an existing test.sqlite
IF Exist(User.home & "/test.sqlite") THEN
    KILL User.home & "/test.sqlite"
ENDIF

'create test.sqlite
$hConn.Open
    $hConn.Databases.Add("test.sqlite")
$hconn.Close

'define the table sampleTable
$hconn.name = "test.sqlite"
$hConn.Open
    hTable = $hConn.Tables.Add("sampleTable")
    hTable.Fields.Add("s_seq", db.Integer)
    hTable.Fields.Add("s_rndm", db.Integer)
    hTable.PrimaryKey = ["s_seq"]
    hTable.Update

'fill the table with generated data
$hconn.Begin
    rTest = $hConn.Create("sampleTable")
    FOR iCount = 1 TO 10000
        rTest!s_seq = iCount
        rTest!s_rndm = Int(Rnd(0, 100))
        rTest.Update
    NEXT
$hConn.Commit

'read the database
sql = "select s_seq as ID, s_rndm as Value from sampleTable"
$res = $hconn.Exec(sql)

CATCH
$hConn.Rollback
Message.Error(DConv(Error.Text))

END
'-------------------------------------------------
PUBLIC SUB Form_Activate()
'change the rowcount of the gridview from 0 to the number of records.
'This triggers the data handling event

GridView1.Rows.Count = $res.Count
END
'-------------------------------------------------
PUBLIC SUB GridView1_Data(Row AS Integer, Column AS Integer)
    $res.moveTo(row)
    GridView1.Data.text = Str($res[GridView1.Columns[column].text])
END
'-------------------------------------------------
PUBLIC SUB Form_Close()
    $hconn.Close
END
'-------------------------------------------------

Fuente:
https://kalaharix.wordpress.com/gambas/creating-a-databases-and-tables-from-gambas/
http://gambaswiki.org/wiki/comp/gb.db
http://gambaswiki.org/wiki/comp/gb.db/db
http://gambaswiki.org/wiki/comp/gb.db/result

domingo, 1 de marzo de 2015

Base de datos Sqlite: Volcar la estructura y el contenido a un fichero de texto, y viceversa




Base de datos Sqlite: Volcar la estructura y el contenido a un fichero de texto, y viceversa

Os dejo aqui un par de comandos muy útiles que nos explicó jguardon en el foro de gamas-es.org:

Instalando el programa para la línea de comandos 'sqlite3' puedes hacer muchas cosas.

$ sudo apt-get install sqlite3

Si lo ejecutas sin argumentos, funciona de forma interactiva, con un prompt que espera comandos.

Si lo ejecutas usando argumentos, puedes hacer algunas cosas interesantes como lo que pides:

Esto vuelca la estructura y el contenido a un fichero de texto:

$sqlite3 mibasededatos.db .dump  >volcado_db_a_texto.sql



Esto vuelca sólo la estructura:

$sqlite3 mibasededatos.db .schema >volcado_estructura_a_texto.sql

Para volver a crear la base de datos a partir del fichero de texto se puede hacer así:

$cat volcado.sql | sqlite3 nueva.db



Para más información mira el manual de 'sqlite3 cli' en https://sqlite.org/cli.html porque si las bases de datos son muy grandes, se puede crear un fichero .gz comprimido al vuelo. Toda la info está en el manual.



Desde gambas3, podemos crear una conexión a la base de datos, ejecutar la sentencia:

select * from sqlite_master 

Y exportar la información del esquema de la base de datos a un archivo .csv

Os dejo aqui un video para que veas el proceso:



Fuentes:
http://www.gambas-es.org/viewtopic.php?f=3&t=4139
http://jsbsan.blogspot.com.es/2014/09/mostrar-el-esquema-de-una-base-de-datos.html


viernes, 26 de septiembre de 2014

TPV: "Cortes" Añadido Gestión de Almacén



TPV: "Cortes" Gestión de Peluquería y pequeñas tiendas con Software Libre

Añadido Gestión del Almacén



El 19 de agosto, os escribí sobre este programa ( enlace ). Hoy os traigo una nueva versión, donde se ha añadido la gestión de almacén.

Ahora se le añade la opción de añadir "Gestión de Almacén", donde podemos gestionar los albaranes del almacén. Divididos en 3 tipos: Entrada, Rotura  y Robo

 Con esto, lo  podemos llevar la contabilidad de existencias del almacén, los productos que se han comprado al proveedor, y los que se han deteriorado (rotura) o directamente robado. La idea es de poder llevar una inventario del almacén.

Ademas en la nueva versión podemos imprimir dos informes relativos al almacén donde obtenemos la información de: los productos que hemos:
- Comprado al nuestro proveedor: suma de albaranes de entrada
- Los productos vendidos: esto es obtenido de los recibos de venta a los clientes
- Roturas: son albaranes de almacén donde apuntamos productos que han sufrido rotura o deterioro
- Robos: sol albaranes de almacén donde apuntamos productos robados.
- Existencia en el almacén: Hace la operación de sumar  las entradas menos lo vendido, roturas y robas, para obtener cuantos productos de cada tipo, tenemos en el almacén.



En este video os lo explico todo:




En la página web del proyecto podeis encontrar más información y os lo podeis descargar gratuitamente:


Nota:
No se trata de una demo, el programa es completamente funcional.

Saludos

martes, 23 de septiembre de 2014

Mostrar el esquema de una base de datos sqlite3


Mostrar el esquema 

de una base de datos sqlite3

Os dejo una pequeña aplicación que es capaz  de mostrar el esquema de una base de datos Sqlite: sus tablas, Vistas, nombre y tipo campos.


Vista Diseño

Código fuente::
' gambas class file

Public Sub _new()

End

Public Sub Form_Open()

Me.center

End

Public Sub ButtonSalir_Click()

Me.Close

End

Public Sub ButtonEligeFichero_Click()

Dialog.filter = ["*.sqlite", "sqlite"]
If Not Dialog.OpenFile() Then

TextBoxRuta.text = Dialog.Path
ButtonMostrarEsquema_Click()
Endif

End

Public Sub ButtonMostrarEsquema_Click()

Dim hconn As New Connection
Dim hresult As Result
Dim contenido As String
'abrir base de datos
hconn.host = TextBoxRuta.Text
hconn.Name = TextBoxRuta.Text
hconn.Type = "Sqlite3"

Try hconn.Open()
If Error Then
Message.Error("Se ha producido un error al intentar leer la base de datos")
Return

Endif

hresult = hconn.Exec("SELECT sql From sqlite_master ")

contenido = ""
While hresult.Available

contenido &= hresult["sql"] & gb.NewLine
hresult.MoveNext
Wend

TextArea1.text = contenido

End






En ejecución mostrando el esquema.



Descarga el código y proyecto completo: descarga alojada en google drive

Fuente:
http://www.gambas-es.org/viewtopic.php?f=3&p=23369#p23369

jueves, 4 de septiembre de 2014

Listar la tablas y vistas que tiene una base de datos sqlite

Listar la tablas y vistas que tiene una base de datos sqlite


Ampliando un programa, me he encontrado el siguiente problema: necesitaba añadir algunas nuevas tabla a una a la base de datos sqlite que tenía creada (y ya con datos).

Pues se me ha ocurrido hacerlo así:
1) Ver que las tablas existentes
2) Si falta la tabla nueva, la creo con una sentencia sql

El paso 1º es necesario para comprobar  si ya hemos hecho una vez el proceso, y no volver a repetir el paso 2º (crear la tabla nueva)

Pero ¿como veo las tablas que tiene la base de dato?

Con la sentencia:

SELECT * FROM sqlite_master where type="table"

Obtenemos la información de las tablas existentes.



El campo "name" indica el nombre, con lo cual ya puedo comprobar si existe la table, y en caso de no existir, crearla con la sentencia sql.

Para listar las vistas (view) la sentencia sería:

SELECT * FROM sqlite_master where type="view"


Nota: 01/10/2017

Ejemplo de como se haria en gambas:
gambas class file
Public conexion As Connection

Public Sub Button1_Click()
           Dim r As Result
 Dialog.Path = User.Home
       If Dialog.OpenFile() Then Return
  
      ListBox1.Clear()
      conexion = New Connection
      conexion.Type = "sqlite3"
      conexion.Host = File.Dir(Dialog.Path)
      conexion.Name = File.Name(Dialog.Path)
      conexion.Open()

      r = conexion.Exec("select * from sqlite_master where type='view'")

      If r.Available Then    
          Do While r.Available
             ListBox1.Add(r!name)
             r.MoveNext
          Loop
      Endif
     
     conexion.Close()

  End

Fuentes:
http://www.ajpdsoft.com/modules.php?name=Foros&file=viewtopic&t=1641
http://stackoverflow.com/questions/1601151/how-do-i-check-in-sqlite-whether-a-table-exists

jueves, 5 de junio de 2014

Código de Ejemplo de: INSERTAR, EDITAR, BORRAR Y BUSCAR en una base de datos


Un ejemplo completo de insertar, editar, borrar y buscar en una base de datos


En el curso de gambas3 (que es de acceso gratuito) añadí bastantes ejemplos para explicar los diversos controles, funciones, etc usando gambas3.  Uno de los ejemplos que creo que es más útil es este, donde hacemos lo básico con una base de datos: añadir, editar, borrar y buscar registros, y todo ello de modo visual, usando formularios, menús y botones. En este caso usaba SQLite3

Puede ser de mucha utilidad para los que deseen desarrollar aplicaciones en modo visual, para sus bases de datos y deseen conocer como hacerlo con gambas3.

Si no se sabe nada de programación, es muy recomendable que estudies el curso (que es de acceso gratuito) y no empecéis con  bases de datos antes de conocer  el lenguaje. En fin, lo que siempre se dice: no se empieza la casa por el tejado.

A continuación el programa:

En este este programa vamos a poder insertar, editar, borrar y realizar busquedas en una base de datos llamada "DatosEjemplos",  que tiene una tabla llamada "Personas".
Los campos de esta tabla son: nombre, apellidos, edad y la fecha de nacimiento

La estructura del proyecto es la siguiente:


Código fuente:
Modulo ModComun:
-

-

Módulo fuente:
FormMostrarResultados
-

-

Módulo fuente:
Fmain:
-

-

Ejemplo de la aplicación funcionando:

Varias cosas a comentar:
1) El propio programa tiene la base de datos internamente, que la copia al directorio  User.home &/ ".ejemploBD"  si no la encuentra en el disco duro.
2) Si pulsáis  el botón derecho del ratón en alguna fila del ColumView, tendréis acceso al menú popup :"Editar/Borrar/Filtrar/Quitar Filtro"

3) Se han usado los métodos de la clase connection para editar, insert, borrar y filtrar información. También se podía haber echo con sentencias SQL y usando el método .Exec()

4) El esquema de la tabla Personas:
El campo Id es una llave primaria integer, la cual se autoenumera cuando le damos valor Null.

5) Las fechas se guardan internamente en la base de datos en el formato mes/dia/año, por eso para mostrarlas en el columnview uso el formateo  "dd/mm/yyyy".
Para mostrarla en el formulario Fmain (añade o edita registros), al usar un DateBox, automáticamente se formatea correctamente.

enlace de descarga: archivo alojado en Box.com

Documentación Oficial:





Fuentehttp://cursogambas.blogspot.com.es/2013/07/conexiones-y-resultados.html

domingo, 4 de agosto de 2013

Modelo Vista Controlador (MVC): ejemplos usando base de datos sqlite3 (2º parte: mostrando en un gridviews)

Modelo Vista Controlador (MVC): ejemplos usando base de datos sqlite3  (2º parte: mostrando en un gridviews))



Bueno, como os comenté en el anterior post (http://jsbsan.blogspot.com.es/2013/08/modelo-vista-controlador-mvc-ejemplos.html ), le he añadido un gridviews , para mostrar todos los datos, y por supuesto sigo siguiendo el patrón de MVC para la ampliación de la aplicación:

Lo que se le ha añadido ha sido lo siguiente:
En la clase PersonaDAO, una nueva funcion:

Public Function MostrarPersonas() As Result
Dim resultadoConsulta As Result
Dim conectar As New Conexion
Dim sqlstring As String
conectar.Conexion()
SQLString = "Select * from dato"
Try resultadoConsulta = conectar.hconn.Exec(SqlString)
If Error Then Message.Info("No se ha podido obtener el listado de personas. Error: " & Error.Text)
Return resultadoConsulta
End

Que devuelve el resultado de la consulta "Select * from dato". Nota: la base de datos se llama "Personas" , pero la tabla se llama "dato"
En la clase Logica, otra función que haria la validación y llamaria a la funcion de PersonaDao.MostrarPersonas, devolviendo un Result


Public Function validadMostrarPersonas() As Result
Dim miPersonaDao As New PersonaDao
Return miPersonaDao.MostrarPersonas()
End
En la clase Coordinador, que usa la clase lógica para que haga la validación y devuelva un resul



Public Function MostrarPersonas() As Result
Return milogica.validadMostrarPersonas()
End

Y ya por ultimo, en el formulario principal, he definido el gridview, usado el evento DATA para rellenar y colorear las filas, y que cada vez que se Registre o Administre la base de datos, se actualice el gridview.



'--------------------------------formatero del gridview---------------------------------
Public Function gridFormatearColumnas(grid As GridView) As Gridview
With grid
.header = 3
.rows.count = 0
.columns.count = 5
.Columns[0].title = "id"
.Columns[0].width = 80
.Columns[1].title = "nombre"
.Columns[1].width = 80
.Columns[2].title = "edad"
.Columns[2].width = 80
.Columns[3].title = "profesion"
.Columns[3].width = 80
.Columns[4].title = "telefono"
.Columns[4].width = 80
.font.name = "Sans"
.font.size = 10
.Background = 16777215
.Foreground = 0
End With
Return grid
End

'-------------------------- Actualizacion datos gridview-------------------------
Public Sub GridViewMuestraDatos_Data(row As Integer, column As Integer)
' este evento se encarga de dibujar los datos en el gridviews, para que aparezcan en la pantalla.
resultado.MoveTo(row)
GridViewMuestraDatos.Data.text = Str(resultado[GridViewMuestraDatos.Columns[column].text])
' colorea la fila, según sea par o impar
If row Mod 2 = 0 Then GridViewMuestraDatos.Data.Background = Color.LightBackground
End

Public Sub RefrescarDatos()
resultado = coordina.MostrarPersonas()
GridViewMuestraDatos.Rows.count = 0 'lo ponemos a cero el numero de filas
GridViewMuestraDatos.Rows.count = resultado.count 'actualizamso al resultado de la consulta
End

Os dejo aqui el código fuente completo del ejemplo: enlace de descarga


Saludos