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

lunes, 6 de junio de 2016

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

1 comentario: