Diseño de una Aplicación Cliente-Servidor
en Visualfoxpro9

Enviado por lankansi
  1. Creación de la Base de datos dentro de SQLSERVER
  2. Formulario de artículo.

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 datosFactura’ 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:

  1. Inicio
  2. Panel de Control
  3. Herramientas Administrativas
  4. Orígenes de Datos ODBC
  5. Escoger la pestaña DNS de Usuario; y
  6. La opción Agregar.
  7. Seleccionar el nuevo origen de datos
  8. Escogemos el SQLServer
  9. Especificamos que nombre utilizar para referirse al origen de los datos(‘Prueba’); y.
  10. Por ultimo declaramos con que servidor se va a conectar.
  11. 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:

FORMULARIO DE ARTICULO.

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

lankansi[arroba]yahoo.com

Machala – El OroEcuador.

Comentarios


Trabajos relacionados

  • Internet

    ¿Que se entiende por Internet?. Un poco de historia. La Internet ha madurado. TCP/IP, el protocolo de comunicaciones. Se...

  • Diseño de un servidor temático para las cabinas de acceso a internet

    Durante los últimos años el uso de las tecnologías de información y comunicación en las distintas áreas del sector educa...

  • Internet Explorer

    Introducción al explorador de web Microsoft Internet Explorer. ¿Qué es la barra de estado?. ¿Qué es el Scroll-bar?. ¿Qué...

Ver mas trabajos de Internet

   

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.


Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.