Você está na página 1de 4

' Basado ejemplo:

'http://www.gambas-es.org/viewtopic.php?f=3&t=1965
La clase {registro_Tabla}
Analizar Base de datos. Tipo Sqlite / MySql
Crear tantas clases Tablas como n de tablas que haya en la B.D.
Crear una clase Registro por cada Tabla
Crear tantos campos como n de campos haya en el registro
------------------------------------------------------------------------------------------------------------------ Clase de Registro ----------------------------------------------------------------------------------------------------------------Por cada Propiedad/Campo del Registro: listado de {nombre_campo}, campo.count
mtodos _read() y _write()
y crear variable private h{nombre_campo}
Segn el tipo de campo [integer, string, etc]
repetir tantas veces como campos haya:
PRIVATE h{nombre_campo} AS {tipo_datos}
PROPERTY {nombre_campo} AS {tipo_datos}
'-----------------------------------'Metodos de lectura y escrituras
'de los atributos de la clase
'------------------------------------FUNCTION {nombre_campo}_read() AS {tipo_datos}
RETURN h{nombre_campo}
END
SUB {nombre_campo}_write(Valor AS {tipo_datos})
h{nombre_campo} = Valor
END
'-----------------------------------'Metodo constructor
'-----------------------------------PUBLIC SUB _New(
repetir tantas veces como campos haya:
{nombre_campo}_write( {tipo_datos} [0,] )
END SUB
La clase {tabla}
INHERITS {registro_Tabla}
PRIVATE hRes AS Result
PRIVATE hConexion AS Connection
'---------------------------------------------------------------'Metodos de operaciones sobre la Base de Datos (abrir para MySql)
'---------------------------------------------------------------PUBLIC SUB open()

' para crear la conexion a la base de datos


WITH hconexion
.type = **tipo** ' lo puede obtener del programa principal MYSQL
.host = **host** ' lo puede obtener del programa principal LOCALHOST
.login = **login** ' lo puede obtener del programa principal ADMIN
.password = **password** ' lo puede obtener del programa principal 123456789
0
.name = **name** ' lo puede obtener del programa principal PRUEBAS
TRY .OPEN
IF ERROR THEN
Message.Error("error abriendo las base de datos!!!\n" & Error.Text)
ME.Close
ELSE
'selecciono los campos de la tabla que contiene la BD
hRes = hConexion.Exec("SELECT * FROM & {**tabla**})
hRes.MoveLast
END IF
END WITH
END SUB
'-----------------------------------------------------------------'Nos muestra Todos los registros de la Tabla {tabla}
'----------------------------------------------- -----------------PUBLIC FUNCTION SelVist() AS Result
RETURN hconexion.Exec("SELECT * from {**tabla**} ")
END FUNCTION
'------------------------------------------------'Nos mueve al ultimo introducido en la tabla {tabla}, del campo {campo}
'------------------------------------------------'repetir por cada campo
PUBLIC FUNCTION UltimoRegistro_{**campo**}() AS Integer
DIM lRs AS Result
lRs = hconexion.Exec("SELECT * FROM & {**tabla**} & order by & {**campo**) & \)
IF NOT lRs.Available THEN
RETURN 0
ELSE
lRs.MoveFirst
RETURN lRs["\ & {campo} & \]
END IF
END FUNCTION
'-----------------------------------------------------------------------------------'Para buscar
' Repetir por cada campo que haya.
'------------------------------------------------------------------------------------PUBLIC FUNCTION SelBuscaPalabra_{**campo**}{(mCadena AS String) AS Result
RETURN hconexion.Exec("SELECT * FROM & {**tabla**} & WHERE " & {**campo**} & "
Like '%" & mCadena & "%' ORDER BY " & {campo} & " ASC")
END FUNCTION
'---------------------------------------------------------------------------------------'Nos dice la cantidad de Registros que hay en la tabla {tabla}
'----------------------------------------------------------- ---------------------------PUBLIC FUNCTION NumeroRegistros() AS Integer
DIM lRs AS Result
lRs = hconexion.Exec("SELECT * from & {**tabla**} \")

RETURN lRs.Count
END FUNCTION
'--------------------------------------------------------------------------------------'NOs posiciona en la primer registro de la Tabla
'----------------------------------------------------PUBLIC SUB Primero()
IF hresul.Available THEN
hresul.MoveFirst
Leer
END IF
END
'----------------------------------------------------------------------------------------'nos mueve al siguiente registro de la tabla
'---------------------------------------------PUBLIC SUB Siguiente()
IF mRs.Available THEN
mRs.MoveNext
Leer
END IF
END
'---------------------------------------------------------------------------------'Nos mueve al registro anterior de la tabla
'--------------------------------------------PUBLIC SUB Anterior()
IF mRs.Available THEN
mRs.MovePrevious
Leer
END IF
END
'----------------------------------------------------------------------------------'nos mueve al ultimo registro de la tabla
'---------------------------------------------------------------------------------PUBLIC SUB Ultimo() as
IF mRs.Available THEN
mRs.MoveLast
Leer
END IF
END
'----------------------------------------------------------------------------------'Nos muestra el registro donde estamos posicionado
'---------------------------------------------------'repetir por cada campo
PUBLIC FUNCTION ver_{**campol**}(Dato AS {**campo_tipo**) AS Boolean
DIM Criterio AS String
Criterio=\ & {**campo**} & = & dato & \ 'ver tambien subst
hresult = hconexion.Exec("SELECT * FROM {**tabla**} WHERE " & Criterio)
IF mRs.Count > 0 THEN
Leer
RETURN TRUE
ELSE
RETURN FALSE
END IF
END FUNCTION
'-------------------------------------------------------------------------------

-'Adiciona un registro add


'------------------------------------------------------------------------------PUBLIC FUNCTION add()
DIM SQLString AS String
'aade un registro
SQLString = "INSERT INTO {tabla} ( "
SQLString &= {campo[0]} & =' & super.{campo[0]}
For a=1 to numero_de_campos.count-2
SQLString &= ', & {campo[a]} & = & super.{campo[a]}
next
SQLString &= ', & {campo[campos.count-1]} & = & super.{[campos.count-1]} & "')"
hconexion.Exec(SQLString)
END FUNCTION
'-------------------------------------------------------------------------------' actualiza un registro update dado campo y valor (normalmente ID y n de este)
'------------------------------------------------------------------------------PUBLIC FUNCTION update(Id as string,campoupdate as string)
DIM SQLString AS String
'modifica un registro
SQLString = "UPDATE {tabla} SET "
SQLString& = 12campo[0]} & ='" & SUPER.{campo[0]} & "',"
For a=1 to numero_de_campos.count-1
SQLString &= ', & {campo[a]} & =' & super.{campo[a]}
next
SQLString& "' WHERE & campoUpdate & =" & Id
hconexion.Exec(SQLString)
END FUNCTION
'-----------------------------------------------------------------------------------------'Elimina un registro
'------------------------------------------------------------'repetir por cada campo
PUBLIC SUB erase_campo(Id as {tipo dato de campo})
hconexion.Exec("DELETE FROM {**tabla**} WHERE & {**campo**} & =" & id )
END SUB
'--------------------------------------------------------------------------------------------------PRIVATE SUB Leer()
IF mRs.Available THEN
'repetir tantas veces como campos halla
SUPER.{campo} = hresult["\ & {campo} & \]
END IF
END SUB
'---------------------------------------------------------------------------------------

Você também pode gostar