Capas Fox Pinter y Otros
Capas Fox Pinter y Otros
Capas Fox Pinter y Otros
*==INICIO CÓDIGO
*--
*Programa : CapaConex.prg
*Fecha : 12/12/2004
*Elaborado por : Ing. Daniel E. Bojorge Sequeira
*Objetivo : Definición de la Clase CapaConex
*Modo Uso : oCapaConex NewObject([CapaConex].[CapaConex.prg])
*Asrgnacion : oCapaConex.RutaBaseDatos [Ruta Base Datos]
* oCapaConex.BaseDatos [Nombre Base Datos ] (Sin extensión)
* oCapaConex.MetodoAceso [DBF]
*Tipo Datos Manejados : DBF,MDB,SQL
*Ultima Actualización : 13/12/2004
*Bitacora de Agregados :
* - 12/12/2004 Inicio
*--
Define CLASS CapaConex as Custom olepublic
MetodoAcceso [] &&Cualquier asignación quedará atrapada por
AccessMethod_assign
BaseDatos [] &&Nombre de la Base de Datos
RutaBaseDatos [] &&Ruta Exacta Base Datos
nConn 0 &&Manejador de la Conexión
ConectString [] &&Cadena de Conexión a BD
*-Assing del Método de Acceso
Procedure MetodoAcceso_Assign
Parameters pMA
pMA upper(pMA)
Do case
Case pMA [DBF]
This.MetodoAcceso [DBF]
Case pMA [MDB]
This.MetodoAcceso [MDB]
Case pMA [SQL]
This.MetodoAcceso [SQL]
Otherwise
Messagebox([Método de Acceso Incorrecto ]+ pMA, 16 , [Error Servidor])
This.MetodoAcceso []
Endcase
If !Empty(This.MetodoAcceso)
This.GetConex
Endif
Endpro
*--
*Programa : CapaDatos.prg
*Fecha : 25/12/2004
*Elaborado por : Ing. Daniel E. Bojorge Sequeira
*Objetivo : Definición de la Clase CapaDatos
*Modo Uso : oCapaDatos NewObject([CapaDatos].[CapaDatos.prg])
*Comentarios : Retorna -1 si no ha logrado hacer conexió con la capa de
Conexión
*Ultima Actualización : 25/12/2004
*Bitacora de Agregados :
* - 25/12/2004 Inicio
* - 26/12/2004 Validación y Corrección de GenerCursor
* Creación de método EjecutaSQL
*--
Define CLASS CapaDatos as Custom olepublic
Procedure GeneraCursor
*Genera un Cursor a partir de los parámetros enviados.
*Recibe, Instruccion SQL y el Nombre Cursor a Devolver
Parameters pSQL,pCursor
Local vlSQL,vlEjec
If VarType(pSQL) # 'C' or VarType(pCursor) # 'C'
Messagebox([Parámetros Incorrectos en Función Genera Cursor], 16 ,
[Error Genera Cursor (Capa Datos)])
Return -1
Endif
pSQL AllTrim(UPPER(pSQL))
pCursor AllTrim(UPPER(pCursor))
If This.ValidaConex() < 0
Messagebox ([No se puede generar Cursor] , 16 , [Error Capa Acceso])
Return -1
Endif
pCursor iif ( Empty(pCursor),[Consulta],pCursor)
Do Case
Case oCapaConex.MetodoAcceso [DBF]
vlSQL pSQL + [ into cursor ] + pCursor
&vlSQL
Case oCapaConex.MetodoAcceso [MDB] or oCapaConex.MetodoAcceso [SQL]
vlEjec SQLExec(oCapaConex.nConn,pSQL,pCursor)
Otherwise
Messagebox([No se puede generar Cursor], 16 , [Error Capa Datos])
Return -1
Endcase
Endproc
Procedure EjecutaSQL
*Ejecuta cualquier instrucción SQL, propia para INSERT, UPDATE o DELETE
Parameters pSQL
Local vlSQL,vlEjec
If VarType(pSQL) # 'C'
Messagebox([Parámetros Incorrectos], 16 , [Error Ejecuta SQL (Capa
Datos)])
Return -1
Endif
pSQL AllTrim(UPPER(pSQL))
If This.ValidaConex() < 0
Messagebox ([No se puede Ejecutar SQL] , 16 , [Error Capa Acceso])
Return -1
Endif
Do Case
Case oCapaConex.MetodoAcceso [DBF]
&pSQL
Case oCapaConex.MetodoAcceso [MDB] or oCapaConex.MetodoAcceso [SQL]
vlEjec SQLExec(oCapaConex.nConn,pSQL,pCursor)
Otherwise
Messagebox([No se puede generar Cursor], 16 , [Error Capa Datos])
Return -1
Endcase
Return 1
Endpro
Enddef
*
*Programa : CapaNegocio.prg
*Fecha : 26/12/2004
*Elaborado por : Ing. Daniel E. Bojorge Sequeira
*Objetivo : Definición de la Clase CapaNegocio
*Modo Uso : oCapaNeg NewObject([CapaNegocio].[CapaNegocio.prg])
*Ultima Actualización : 26/12/2004
*Bitacora de Agregados :
* - 25/12/2004 Inicio
* - 26/12/2004 Validación y Corrección de GenerCursor
* Creación de método EjecutaSQL
* - 27/12/2004 Sección de Impuesto
* Definición de Clases: Inventario
*-
Define CLASS CapaNegocio as Custom olepublic
Codigo []
Descripcion []
Impuesto 15
Procedure Init
If !([CAPADATOS.PRG] $ UPPER(SET([PROCEDURE])))
Set procedure to [.\Lib\Capas\CapaDatos.prg] additive
Endif
Public oCapaDatos
oCapaDatos CreateObject([CapaDatos])
Endproc
Procedure Obtener
*--Ejecuta el método GeneraCursor de la Clase CapaDatos, pide:
* NombreTabla,CampoBusqueda y Código.
* Devuelve cursor curObtener
Parameters pNombreTabla,pCampoBusqueda,pID
Local vlSQL
*-Validar Parametros recibidos
If VarType(pNombreTabla) # 'C' or Empty(pNombreTabla)
Messagebox([Nombre Tabla No especificado],16,[Error Obtener (Capa
Negocios)])
Return -1
Endif
If VarType(pCampoBusqueda) # 'C' or Empty(pCampoBusqueda)
Messagebox([Nombre Campo Búsqueda No especificado],16,[Error Obtener
(Capa Negocios)])
Return -1
Endif
If VarType(pID) # 'C' or Empty(pID)
Messagebox([Nombre ID No especificado],16,[Error Obtener (Capa
Negocios)])
Return -1
Endif
pNombreTabla Allt(Upper(pNombreTabla))
pCampoBusqueda Allt(Upper(pCampoBusqueda))
pID (Allt(Upper(pID)))
vlSQL [SELECT * FROM ] + pNombreTabla + [ where ] + pCampoBusqueda + [
'] + pID + [']
Messagebox(vlSQL)
oCapaDatos.GeneraCursor(vlSQL,"curObtener")
Endproc
Procedure Grabar
*--Ejecuta el método EjecutaSQL de la Clase CapaDatos, pide:
* NombreTabla,Parametro
* Devuelve cursor 1
Parameters pNombreTabla,pCondicion
Local vlSQL
*-Validar Parametros recibidos
If VarType(pNombreTabla) # 'C' or Empty(pNombreTabla)
Messagebox([Nombre Tabla No especificado],16,[Error Obtener (Capa
Negocios)])
Return -1
Endif
If VarType(pCondicion) # 'C' or Empty(pCondicion)
Messagebox([Condición No especificado],16,[Error Obtener (Capa
Negocios)])
Return -1
Endif
pNombreTabla Allt(Upper(pNombreTabla))
pCondicion Allt(Upper(pCondicion))
vlSQL [INSERT INTO ] + pNombreTabla + pCondicion
Messagebox(vlSQL)
Return oCapaDatos.EjecutaSQL(vlSQL)
Endproc
Procedure Borrar
*--Ejecuta el método Ejecuta SQL de la Clase CapaDatos para eliminar un
Elemento, pide:
* NombreTabla,CampoBusqueda y Código.
Parameters pNombreTabla,pCampoBusqueda,pID
Local vlSQL
*-Validar Parametros recibidos
If VarType(pNombreTabla) # 'C' or Empty(pNombreTabla)
Messagebox([Nombre Tabla No especificado],16,[Error Obtener (Capa
Negocios)])
Return -1
Endif
If VarType(pCampoBusqueda) # 'C' or Empty(pCampoBusqueda)
Messagebox([Nombre Campo Búsqueda No especificado],16,[Error Obtener
(Capa Negocios)])
Return -1
Endif
If VarType(pID) # 'C' or Empty(pID)
Messagebox([Nombre ID No especificado],16,[Error Obtener (Capa
Negocios)])
Return -1
Endif
pNombreTabla Allt(Upper(pNombreTabla))
pCampoBusqueda Allt(Upper(pCampoBusqueda))
pID (Allt(Upper(pID)))
vlSQL [DELETE FROM ] + pNombreTabla + [ where ] + pCampoBusqueda + [ ']
+ pID + [']
oCapaDatos.EjecuteSQL(vlSQL,"curObtener")
Endproc
****Sección de Impuesto
Procedure SetImpuesto
*--Fija el Porcentaje de Impuesto, por defecto es 15%
Parameter pImp
*--Validar Valor
*Comprobar Tipo
If VarType(pImp) <> [N]
Messagebox([Impuesto No es Numérico], 16 , [Error Capa Negocio])
This.Impuesto 15
Return -1
Endif
If !BetWeen(pImp,0,100)
Messagebox([Inválido Intervalo de Impuesto], 16 , [Error Capa Negocio])
This.Impuesto 15
Return -1
Endif
This.Impuesto pImp
Return 1
Endpro
Procedure GetImpuesto
*-Devuelve el valor almacenado de Impuesto
Return This.Impuesto
Endpro
Enddef
oInv NewObject([Inventario],[CapaNegocio.prg])
*Luego Agregar un código
oInv.Set("100","Descripcion","Ref","01","01","001",23.35,1,1,1,1)
*= FIN CÓDIGO
Como verán, utilicé una forma parecida a la que da Les Pinter, recién
descubrí el MSDE que me ayudará mucho a trabajar y probar con Cliente
Servidor.
Dios Te Bendiga
Saludos,
-
Daniel (con 1 estrella DCE)
Nicaragua
www.lecturasbiblicas.ni.kz