Monografias.com > Computación > Internet
Descargar Imprimir Comentar Ver trabajos relacionados

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
    CLIENTESERVIDOR 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:

    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

    Machala – El Oro –
    Ecuador.

    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.

    Categorias
    Newsletter