Ejemplo de servidor de Automatización de Gopher

En este ejemplo se simula un objeto comercial de búsqueda inteligente que localiza a un cliente que puede encontrarse en una o varias bases de datos distintas. Lo que ocurre en realidad es que el código del evento BeforeOpenTables del entorno de datos crea un objeto basado en la clase Gopher y solicita al usuario el nombre de la base de datos que va a utilizar. El código de la clase Gopher abre la base de datos adecuada. Esta estrategia le permite utilizar Visual FoxPro en un modelo de 3 capas en el que los servicios de usuario no sean estrechamente dependientes de los servicios de datos, como ocurre en muchos de los entornos cliente-servidor actuales.

Mientras este ejemplo sólo proporciona una elección entre las bases de datos de ejemplo TESTDATA y Tastrade de Visual FoxPro, usted puede utilizar esta introducción básica para proporcionar un objeto comercial de búsqueda inteligente que sabe cuándo y dónde hay que mirar en una red corporativa en busca de las bases de datos necesarias.

Para abrir el proyecto para el ejemplo de Gopher

  • Escriba la siguiente línea de código en la ventana Comandos:

    MODIFY PROJECT (HOME(2) + 'servers\gopher\foxsrch')
    

Para ejecutar el ejemplo de Gopher

  1. Abra el proyecto Foxsrch.pjx en la carpeta de Visual FoxPro …\Samples\Servers\Gopher.

  2. Seleccione Srchdata.prg en el Administrador de proyectos y elija Modificar.

  3. Cambie la siguiente línea para definir FOXHOME de forma que refleje la carpeta de ejemplos de Visual FoxPro:

    #DEFINE FOXHOME HOME(2)
    
  4. Guarde y cierre Srchdata.prg.

  5. En el Administrador de proyectos, elija Generar.

  6. En el cuadro de diálogo Opciones de generación, seleccione Generar ejecutable y elija Aceptar para crear Foxsearch.exe. Se registrará el servidor cuando genere el archivo ejecutable.

  7. Ejecute Wing1.scx en la carpeta de Visual FoxPro …\Samples\Servers\Gopher.

Se incluye el siguiente código en el evento BeforeOpenTables del Entorno de datos en Wing1.scx:

LOCAL oGopher,lUseRemote
THIS.AddObject('cursor1','cursor')
THIS.cursor1.Alias = 'employee'
lUseRemote=(MESSAGEBOX('Do you want to use Remote Data?',36) = 6)

oGopher=CreateObject('FoxSearch.Gopher')
oGopher.UpdateDE(THIS,m.lUseRemote)
RELEASE oGopher

El siguiente código define la clase Gopher. El método UpdateDE toma una referencia de un objeto y la lleva a un entorno de datos y un valor lógico como parámetros. Basado en el valor del valor lógico, el método UpdateDE establece valores de CursorSource distintos para un cursor en el entorno de datos.

#DEFINE FOXHOME   HOME(2)

DEFINE CLASS Gopher AS Custom OLEPUBLIC
oDERef = ''

PROCEDURE UpdateDE
   PARAMETER oNewDE,lRemote
   IF TYPE('oNewDE')#'O' OR ISNULL(m.oNewDE)
      RETURN .F.
   ENDIF
   THIS.oDERef = m.oNewDE

   IF !m.lRemote
   * Use local data
      THIS.oDERef.cursor1.database = FOXHOME + 'DATA\TESTDATA.DBC'
      THIS.oDERef.cursor1.cursorsource = 'Employee'
   ELSE
   * Use remote data (simiulated)
      THIS.oDERef.cursor1.database = FOXHOME + ;      'Tastrade\DATA\Tastrade.DBC'
      THIS.oDERef.cursor1.cursorsource = 'Employee'
   ENDIF
   THIS.oDERef = ''
ENDPROC

ENDDEFINE

Vea también

Ejemplos de soluciones | Ejemplos de servidor