Este proyecto
enseña como diseñar una aplicación de tipo
CLIENTE–SERVIDOR utilizando como plataforma de datos
SQLSERVER2000 en conjunto con el lenguaje de
programación VISUALFOXPRO9; aquí creo las
conexiones y vistas remotas para poder acceder
a la información contenida dentro de la base de datos
‘Factura’
que se encuentra almacenada en SQLSERVER. Además
aprenderemos a utilizar los cursores de memoria en el
entorno de datos y a modificar sus principales
propiedades.
También indico a breves rasgos como llamar y
ejecutar procedimientos
almacenados de una tabla especifica dentro de SQLSERVER mediante
la TECNOLOGIA DE PASO SQL de
Visualfoxpro. Se necesitan conocimientos previos de programación en la herramienta visualfoxpro
y manejo de SQL-Transact en Sqlserver para poder diseñar
los procedimientos almacenados.
Creación de la
Base de datos dentro de SQLSERVER:
El primer paso consiste en crear la base de datos y para
ello tenemos primeramente que entrar al ‘Administrador
Corporativo del Sqlserver’ y clickear el icono
‘Grupos de
SqlServer’ ahí se despliegan todas las bases de datos
contenidas del programa
incluidas las del sistema luego
procedemos a seleccionamos la opción base de datos y vamos
al menú donde dice : Acción
– Nueva Base de Datos y automáticamente el programa le
ayuda a generar las tablas que usted necesita para su
sistema.
Para objetivo de
nuestro estudio creamos una base de datos que se llama
‘FACTURA’ que contiene 8 estructuras de
datos: Articulo, Cliente, Factcab, Factdet, Proveed, Resultados,
Secuencia y Usuario como podemos visualizar en el siguiente
gráfico.
Ejemplo:
Ahora que ya hemos creado la base de datos
‘Factura’ el siguiente paso es realizar la
conexión de la misma en las ‘FUENTES DE
DATOS ODBC’ con el nombre ‘Prueba’; los pasos
se describen a continuación para el sistema operativo
Windows XP
Professional:
- Inicio
- Panel de Control
- Herramientas Administrativas
- Orígenes de Datos ODBC
- Escoger la pestaña DNS de
Usuario; y - La opción Agregar.
- Seleccionar el nuevo origen de datos
- Escogemos el SQLServer
- Especificamos que nombre utilizar para referirse al
origen de los datos(‘Prueba’); y. - Por ultimo declaramos con que servidor se va a
conectar. - Especificamos que la autenticidad del inicio de
sesión se encargue el Windows
mediante el inicio de sesión de la red.
Para una mayor comprensión de estos pasos
mostrare gráficamente lo anteriormente
expuesto:
Como podemos darnos cuenta a través de todos
estos gráficos, la conexión ODBC se
realizo satisfactoriamente y finalmente se creo la fuente de
datos ODBC ‘PRUEBA’.
Ahora ingreso al visualfoxpro y creo un archivo *.PRG
donde realizo mediante programación la conexión
remota y la creación de vistas remotas y vistas locales,
Ejemplo:
* – EN LOS CURSORES NO HAY COMO ESTABLECER RELACIONES
PERMANENTES ENTRE VARIAS VISTAS MEDIANTE INDICES YA QUE ESTOS SON
TEMPORALES.
*
—————————————————————————————
* – RUTINA PARA CONTROLAR ERRORES EN ESTE
MODULO.
ON ERROR DO ERRORES
*
—————————————————————————————
* – CONFIGURACION DEL AMBIENTE.
*
——————————————————
* – LAS SESIONES DE DATOS(DATASESION=2) SON
PRIVADAS
* – EN CADA FORMULARIO.
SET DEFAULT TO C:ODBCSIS
CLOSE DATABASE ALL
CLEAR MACRO
SET ECHO OFF
SET TALK OFF
SET SAFETY OFF
SET NOTIFY OFF
SET STATUS BAR OFF
SET SYSMENU OFF
SET CENTURY ON
SET DATE TO BRITISH && DD/MM/AAAA
SET EXACT ON
SET FIXED ON
SET DECIMALS TO 2
SET OPTIMIZE ON
SET DISPLAY TO VGA25
SET CONFIRM ON
SET DELETED ON
SET ESCAPE OFF
SET CONSOLE OFF
SET AUTOSAVE ON
SET EXCLUSIVE OFF
SET MULTILOCKS ON
SET REPROCESS TO AUTOMATIC
SET LOCK ON
SET DEBUG OFF
SET STEP OFF
* – ABRIR LA BASE DE DATOS.
OPEN DATABASE FACTURA.DBC SHARED VALIDATE
* – CREAR CONEXION.
********************************************************************************
* – REMOTE01.- NOMBRE DE LA CONEXION.
* – ORIGENFACTURA.- NOMBRE DE LA CONEXION DE LA
FUENTE
DE DATOS ODBC.
* – DATABASE.- NOMBRE DE LA BASE DE DATOS
EXTERNA.
* – PASSWORD.- CLAVE DE LA BASE DE DATOS.
********************************************************************************
*/- SE CREA UNA CONEXION PARA UNA FUENTE ODBC QUE SE
ENLAZA CON UNA CON UNA BASE DE DATOS EN SQLSERVER7.
CREATE CONNECTION REMOTE01 DATASOURCE
PRUEBA;
DATABASE FACTURA
********************************************************************************
* – CREAR VISTAS REMOTAS.
* – LAS VISTAS REMOTAS PERMITEN CONSULTAR Y ACTUALIZAR
DATOS.
* – SE RECOMIENDA PARAMETRIZAR TABLAS DE DATOS EXTENSAS
QUE
* – SE EXTRAEN DE ORIGENES DE DATOS REMOTOS.
* – DBSETPROP:
ESTABLECE UNA PROPIEDAD PARA
LA BASE DE DATOS ACTUAL O PARA CAMPOS, CONEXIONES CON NOMBRE,
TABLAS O VISTAS DE LA BASE DE DATOS ACTUAL, SE DEBE UTILIZAR EL
NOMBRE DE LA VISTA NO EL NOMBRE DE LA TABLA ORIGINAL.
* – KEYFIELD:
LA PROPIEDAD KEYFIELD CON UNO O MÁS NOMBRES DE
CAMPOS LOCALES DE VISUAL FOXPRO
QUE, JUNTOS, DEFINAN UNA CLAVE ÚNICA PARA LA TABLA DE
ACTUALIZACIÓN.
* – SENDUPDATES:
* – LA PROPIEDAD SENDUPDATES ESTABLECIDA COMO VERDADERA
(.T.) SE TRATA DEL CONMUTADOR PRINCIPAL QUE INDICA A VISUAL
FOXPRO QUE DEBE
CREAR Y ENVIAR ACTUALIZACIONES A CUALQUIERA DE LAS TABLAS Y
CAMPOS QUE USTED ESPECIFICÓ COMO ACTUALIZABLES.
*
————————————————————
* – CREAR UNA VR DE LOS ARTICULOS.
CREATE SQL VIEW ARTICULO REMOTE;
CONNECTION REMOTE01 SHARED;
AS SELECT * FROM ARTICULO;
ORDER BY COD_ART
DBSETPROP('ARTICULO.COD_ART','FIELD','KEYFIELD',.T.)
DBSETPROP('ARTICULO','VIEW','SENDUPDATES',.T.)
&&Vuelve actualizable la vista.
DBSETPROP('ARTICULO','VIEW','MAXRECORDS',-1)
&&Extrae todos los registros del
origen remoto.
DBSETPROP('ARTICULO','VIEW','FETCHSIZE',50)
&&Aumento progresivo de registros, de 50 en
50.
DBSETPROP('ARTICULO','VIEW','BATCHUPDATECOUNT',50)
&&Nro. de intrucciones actualizadas por
lotes.
DBSETPROP('ARTICULO','VIEW','FETCHASNEEDED',.T.)
&&Obtiene los registros segun se vayan
necesitando.
* MAXRECORDS :
* 0 Solo se copia la estructura de
la tabla remota,
* -1 Copia la estructura y todos los registros de la
tabla remota.
* <nro> Copia la estructura y un nro especifico de
registros desde la tabla remota.
* – CREAR UNA VISTA DE LA TABLA CLIENTES.
CREATE SQL VIEW CLIENTE REMOTE;
CONNECTION REMOTE01 SHARED;
AS SELECT * FROM CLIENTE;
ORDER BY CED_CLI
DBSETPROP('CLIENTE.CED_CLI','FIELD','KEYFIELD',.T.)
DBSETPROP('CLIENTE','VIEW','SENDUPDATES',.T.)
DBSETPROP('CLIENTE','VIEW','MAXRECORDS',-1)
DBSETPROP('CLIENTE','VIEW','FETCHSIZE',50)
DBSETPROP('CLIENTE','VIEW','BATCHUPDATECOUNT',50)
DBSETPROP('CLIENTE','VIEW','FETCHASNEEDED',.T.)
* – CREAR UNA VISTA DE LA TABLA DE PROVEEDORES.
CREATE SQL VIEW PROVEED REMOTE;
CONNECTION REMOTE01 SHARED;
AS SELECT * FROM PROVEED;
ORDER BY COD_PROV
DBSETPROP('PROVEED.COD_PROV','FIELD','KEYFIELD',.T.)
DBSETPROP('PROVEED','VIEW','SENDUPDATES',.T.)
DBSETPROP('PROVEED','VIEW','MAXRECORDS',-1)
DBSETPROP('PROVEED','VIEW','FETCHSIZE',50)
DBSETPROP('PROVEED','VIEW','BATCHUPDATECOUNT',50)
DBSETPROP('PROVEED','VIEW','FETCHASNEEDED',.T.)
* – FACTURA CABECERA.
CREATE SQL VIEW CABECERA REMOTE;
CONNECTION REMOTE01 SHARED;
AS SELECT NUMFAC_CAB, ANULADA;
FROM FACTCAB
DBSETPROP('CABECERA.NUMFAC_CAB','FIELD','KEYFIELD',.T.)
DBSETPROP('CABECERA','VIEW','SENDUPDATES',.T.)
DBSETPROP('CABECERA','VIEW','MAXRECORDS',-1)
DBSETPROP('CABECERA','VIEW','FETCHSIZE',50)
DBSETPROP('CABECERA','VIEW','BATCHUPDATECOUNT',50)
DBSETPROP('CABECERA','VIEW','FETCHASNEEDED',.T.)
* – FACTURA DETALLE.
CREATE SQL VIEW DETALLE REMOTE;
CONNECTION REMOTE01 SHARED;
AS SELECT NUMFAC_CAB, ARTICULO, CANT_DET,
PVP_DET,
SUBT_DET;
FROM FACTDET
DBSETPROP('DETALLE.NUMFAC_CAB','FIELD','KEYFIELD',.T.)
DBSETPROP('DETALLE','VIEW','SENDUPDATES',.T.)
DBSETPROP('DETALLE','VIEW','MAXRECORDS',-1)
DBSETPROP('DETALLE','VIEW','FETCHSIZE',50)
DBSETPROP('DETALLE','VIEW','BATCHUPDATECOUNT',50)
DBSETPROP('DETALLE','VIEW','FETCHASNEEDED',.T.)
* – VISTA DE DATOS REMOTA PARAMETRIZADA.
* – (FACTURA DE VENTA
DETALLE).
CREATE SQL VIEW Q_DETALLE REMOTE;
CONNECTION REMOTE01 SHARED;
AS SELECT NUMFAC_CAB, ARTICULO, CANT_DET,
PVP_DET,
SUBT_DET;
FROM FACTDET;
WHERE FACTDET.NUMFAC_CAB = ?'FACTURA:'
DBSETPROP('Q_DETALLE.NUMFAC_CAB','FIELD','KEYFIELD',.T.)
DBSETPROP('Q_DETALLE','VIEW','SENDUPDATES',.T.)
* – REQUERY() : VUELVE A ACTUALIZAR LA VISTA.
* – CREAR UNA VISTA DE LA TABLA USUARIOS.
CREATE SQL VIEW USUARIO REMOTE;
CONNECTION REMOTE01 SHARED;
AS SELECT * FROM USUARIO
DBSETPROP('USUARIO.COD_USU','FIELD','KEYFIELD',.T.)
DBSETPROP('USUARIO','VIEW','SENDUPDATES',.T.)
* – CREAR UNA VISTA DE LA TABLA SECUENCIA.
CREATE SQL VIEW SECUENCIA REMOTE;
CONNECTION REMOTE01 SHARED;
AS SELECT * FROM SECUENCIA
DBSETPROP('SECUENCIA.NUM_FAC','FIELD','KEYFIELD',.T.)
DBSETPROP('SECUENCIA','VIEW','SENDUPDATES',.T.)
*
———————————————————————————————————–
* – CREAR TABLAS LOCALES DENTRO DEL CONTENERDOR DE BASE
DE DATOS, HAY QUE ABRIR EL CONTENEDOR DE LA BASE DE DATOS ANTES
DE CREAR LAS ESTRUCTURAS DE DATOS(EN ESTE CASO LA BDD YA ESTA
ABIERTA), SINO LAS ESTRUCTURAS DE DATOS SE CREAN COMO TABLAS
LIBRES.
*
———————————————————————————————————–
* – ELIMINAR TABLAS LOCALES.
DROP TABLE L_DETALLE
DROP TABLE L_DETALLE01
DROP TABLE L_DETALLE02
DROP TABLE L_CABECERA
DROP TABLE L_CABECERA01
DROP TABLE L_CABECERA02
* – TABLA CABECERA.
CREATE TABLE L_CABECERA ;
(NUMFAC_CAB C(5) PRIMARY KEY,;
ANULADA L(1))
* – TABLA DETALLE, CON UN INDICE RELACIONADO CON LA
TABLA CABECERA.
CREATE TABLE L_DETALLE ;
(NUMFAC_CAB C(5), ;
ARTICULO C(15),;
CANT_DET N(8,2),;
PVP_DET N(8,2),;
SUBT_DET N(8,2),;
FOREIGN KEY NUMFAC_CAB TAG NUMFAC_CAB
REFERENCES
L_CABECERA)
*
———————————————————————————————————–
* – TABLAS PARA USUARIO CON EL IDEN : 01
* – TABLA CABECERA.
CREATE TABLE L_CABECERA01 ;
(NUMFAC_CAB C(5) PRIMARY KEY,;
ANULADA L(1))
* – TABLA DETALLE, CON UN INDICE RELACIONADO CON LA
TABLA CABECERA.
CREATE TABLE L_DETALLE01 ;
(NUMFAC_CAB C(5), ;
ARTICULO C(15),;
CANT_DET N(8,2),;
PVP_DET N(8,2),;
SUBT_DET N(8,2),;
FOREIGN KEY NUMFAC_CAB TAG NUMFAC_CAB
REFERENCES
L_CABECERA)
* – TABLAS PARA USUARIO CON EL IDEN : 02
* – TABLA CABECERA.
CREATE TABLE L_CABECERA02 ;
(NUMFAC_CAB C(5) PRIMARY KEY,;
ANULADA L(1))
* – TABLA DETALLE, CON UN INDICE RELACIONADO CON LA
TABLA CABECERA.
CREATE TABLE L_DETALLE02 ;
(NUMFAC_CAB C(5), ;
ARTICULO C(15),;
CANT_DET N(8,2),;
PVP_DET N(8,2),;
SUBT_DET N(8,2),;
FOREIGN KEY NUMFAC_CAB TAG NUMFAC_CAB
REFERENCES
L_CABECERA)
*
———————————————————————————————————–
CLOSE TABLES ALL
CLOSE DATABASE ALL
* – DESACTIVO CONTROL DE
ERRORES.
* – CONTROL DE ERRORES POR DEFECTO
* – DEL VISUALFOXPRO.
ON ERROR
MESSAGEBOX("Conexión REMOTA SQLSERVER7 EXITOSA!",
"Sistema ODBCSIS")
* – FIN.
* – SE IGNORA LOS ERRORES.
PROCEDURE ERRORES
RETURN
Una vez creada la conexión y ejecutado este
procedimiento
de conexión interna del visualfoxpro9 se pueden utilizar
las estructuras remotas dentro del entorno de datos como si
fueran tablas locales, ejemplo:
Se va a proceder a agregar una vista al Entorno de
datos:
Agrego la vista artículos al entorno de
datos:
La vista Artículos ha sido agregada al entorno de
datos.
Las propiedades de la vista
‘Artículos’ en el entorno de datos son las
siguientes:
Este es el formulario del Módulo de
Artículos:
Botón Nuevo evento
‘Click’:
* – BOTON NUEVO.
* – ACTIVAR TEXT PARA EL INGRESO DE DATOS.
* – SE LLAMA AL METODO ACTIVARTEXT DEL
FORMULARIO.
* – ESTE METODO ES CREADO POR EL PS.
THISFORM.ACTIVARTEXT
******************************************************
* – GENERACION DEL CODIGO DEL
ARTICULO – *
******************************************************
LOCAL CEROS, NROGNDO, VALORMAX
SELECT SECUENCIA
VALORMAX=0
VALORMAX=NUM_ART
* – CONTADOR QUE INCREMENTA EL VALOR
ACTUAL.
VALORMAX=VALORMAX+1
REPLACE NUM_ART WITH VALORMAX
=TABLEUPDATE(.T.)
***************************************************
* – INCREMENTO DE CEROS.
CEROS=SUBSTR("0000",1,6-LEN(ALLTRIM(STR(VALORMAX))))
* – COMPLETAR CODIGO.
NROGNDO=ALLTRIM(CEROS)+ALLTRIM(STR(VALORMAX))
* – REEMPLAZAR DATO EN EL CAMPO DE LA TABLA
*.DBF.
SELECT ARTICULO
APPEND BLANK
REPLACE COD_ART WITH NROGNDO
***************************************************
* – MANIPULAR BOTONES DE COMANDO.
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.COMMAND3.ENABLED=.T.
THISFORM.COMMAND4.ENABLED=.T.
THISFORM.COMMAND5.ENABLED=.F.
THISFORM.COMMAND6.ENABLED=.F.
THISFORM.COMMAND7.ENABLED=.F.
* – SE OTORGA EL ENFOQUE AL TXTCOD_ART.
THISFORM.TXTCOD_ART.ENABLED=.F.
THISFORM.TXTNOM_ART.SETFOCUS
THISFORM.REFRESH
Botón Editar evento
‘Click’:
* – VARIABLE QUE CARGA CODIGO DEL PROVEEDOR.
VAL_CODIGO=0
VAL_CODIGO=LEN(ALLTRIM(THISFORM.TXTCOD_ART.VALUE))
* – VALIDACION DE DATOS.
IF VAL_CODIGO<>0 THEN
* – EDITAR REGISTROS.
SELECT ARTICULO
THISFORM.ACTIVARTEXT
* – MANIPULAR BOTONES DE COMANDO.
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.COMMAND3.ENABLED=.T.
THISFORM.COMMAND4.ENABLED=.T.
THISFORM.COMMAND5.ENABLED=.F.
THISFORM.COMMAND6.ENABLED=.F.
THISFORM.COMMAND7.ENABLED=.F.
THISFORM.TXTCOD_ART.ENABLED=.F.
* – ACTUALIZO TODOS LOS OBJETOS.
THISFORM.REFRESH
* – ENFOQUE AL SEGUNDO TEXT.
THISFORM.TXTNOM_ART.SETFOCUS
ELSE
MESSAGEBOX("NO HAY REGISTROS PARA EDITAR!")
ENDIF
* – FIN.
Botón Grabar evento
‘Click’:
* – GRABAR CAMBIOS.
SELECT ARTICULO
TABLEUPDATE(.T.)
FLUSH
*
—————————————————-
MESSAGEBOX("ACEPTAR CAMBIOS")
GO TOP
* – SE INACTIVAN LOS TEXT.
THISFORM.INACTIVARTEXT
* – MANIPULAR BOTONES DE COMANDO.
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.COMMAND4.ENABLED=.F.
THISFORM.COMMAND5.ENABLED=.T.
THISFORM.COMMAND6.ENABLED=.T.
THISFORM.COMMAND7.ENABLED=.T.
* – SE ACTUALIZA EL FORMULARIO.
THISFORM.REFRESH
Botón Cancelar evento
‘Click’:
* – CANCELAR CAMBIOS.
SELECT ARTICULO
* – SE BORRAN LOS BUFFERS DE MEMORIA.
TABLEREVERT(.T.)
* – SE MUESTRA UN
MENSAJE.
=MESSAGEBOX("CAMBIOS ANULADOS")
* – SE ENVIA EL PUNTERO AL PRIMER ELEMENTO.
GO TOP
* – SE DESACTIVAN LOS TEXT.
THISFORM.INACTIVARTEXT
* – MANIPULAR BOTONES DE COMANDO.
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.COMMAND4.ENABLED=.F.
THISFORM.COMMAND5.ENABLED=.T.
THISFORM.COMMAND6.ENABLED=.T.
THISFORM.COMMAND7.ENABLED=.T.
* – SE ACTUALIZA EL FORMULARIO.
THISFORM.REFRESH
Botón Buscar evento
‘Click’:
* – SI HAY REGISTROS.
SELECT ARTICULO
IF RECCOUNT() >0 THEN
* – SE LLAMA AL FORMULARIO DE BUSQUEDA.
DO FORM BUSC_ART.SCX
* – SI LA VARIABLE VARBUSCAR ESTA VACIA,
IF NOT EMPTY(VARBUSCAR) THEN
* – SELECCIONAMOS LA TABLA CLIENTES
SELECT ARTICULO
* – BUSCAMOS EL CODIGO INGRESADO.
LOCATE FOR
ALLTRIM(COD_ART)=ALLTRIM(VARBUSCAR)
* – SI NO LO ENCUENTRA,
IF !FOUND() AND !DELETED() THEN
* – PRESENTAMOS UN MENSAJE DE ERROR.
= MESSAGEBOX ("NO ENCONTRADO",64,"ERROR")
* – RETORNAMOS AL INICIO DE LA TABLA
CLIENTES.
GO TOP
ENDIF
ENDIF
ELSE
MESSAGEBOX("NO HAY REGISTROS PARA EDITAR!","MODULO DE
ARTICULOS")
ENDIF
* – REFRESCAMOS EL FORMULARIO.
THISFORM.REFRESH
* – FIN
Botón Eliminar evento
‘Click’:
* – PROCESO DE
ELIMINACION.
* – VARIABLE LOCAL.
LOCAL ANSWER
* – CONFIRMACION PARA REALIZAR ELIMINACION DE REGISTRO.
ANSWER=MESSAGEBOX("ESTA SEGURO
?",4+32+256, "PROCESO DE ELIMINACION")
DO CASE
CASE ANSWER=6
* – SI
SELECT ARTICULO
DELETE
TABLEUPDATE(.T.)
FLUSH
MESSAGEBOX("REGISTRO ELIMINADO")
ENDCASE
SELECT ARTICULO
* – SE ENVIA EL PUNTERO AL PRIMER ELEMENTO.
GO TOP
* – SE ACTUALIZA EL FORMULARIO.
THISFORM.REFRESH
Botón Salir evento
‘Click’:
* – CERRAR FORMULARIO DE DATOS.
THISFORM.RELEASE
EN ESTE BOTÓN LLAMAMOS A LOS PROCEDIMIENTOS
ALMACENADOS CREADOS EN LA BASE DE DATOS
SQLSERVER.
Botón ‘Procedimiento Almacenado’
evento ‘Click’:
* – PROCEDIMIENTOS ALMACENADOS EN SQLSERVER.
* – CONEXION CON LA BDD SQLSERVER2000 CON
'''DNS'''.
STORE SQLSTRINGCONNECT('dsn=Prueba') TO
gnConnHandle
*—————————————————————————————
* – EJECUTAR PROCEDIMIENTO ALMACENADO.
* – MY_PROCESO1 : Es el nombre del procedure en
SQL,
* – tiene que crearse dentro de la bdd 'FACTURA', no
se
* – envían parámetros al
procedimiento.
* =SQLEXEC(gnConnHandle,'execute
my_proceso1')
*
—————————————————————————————————
* – EJECUTAR PROCEDIMIENTO ALMACENADO CON
PARAMETROS.
* – MY_PROCESO2 : Es el nombre del procedure en
SQL,
* – tiene que crearse dentro de la bdd
'FACTURA'.
* – "00001" : Es el parámetro que se envía
para que
* – se ejcute el procedimiento es el
identificador
* – del registro a eliminar.
* =SQLEXEC(gnConnHandle,'execute my_proceso2
"00001"')
*
—————————————————————————————————-
* – Enviando parámetros a través de una
variable que
* – captura el código
del articulo desde una caja de
* – texto(El
parámetro es de tipo STRING).
STORE "" TO PARAM1
PARAM1 = ALLTRIM(THISFORM.TXtCod_art.Value)
=SQLEXEC(gnConnHandle,'execute my_proceso2
"&PARAM1"')
* – Actualizar los formularios.
THISFORM.Refresh
=MESSAGEBOX("Registros Eliminados!")
* – fin.
A continuación voy a presentar los procedimientos
almacenados que fueron diseñados dentro de la base de
datos SQLSERVER cuya finalidad es manipular los datos de la tabla
articulo.
Autor:
Tclgo. Juan Carlos Romero Jijón
Machala – El Oro –
Ecuador.