El que sigue nos muestra los datos provenientes desde dBASE.
0010 REM "Listar Registros de archivo.dbf Banco Popular"
0020 BEGIN
0030 SQLOPEN (1)"dBASE Files"
0040 SQLPREP (1)"select * from 109362"
0050 DIM r$:SQLTMPL(1); SQLEXEC (1)
0060 LET r$=SQLFETCH(1,ERR=final)
0070 PRINT r.cedula$," ",PAD(r.nombre$,32),r.ahotot
0080 GOTO 0060
0090 final:
0100 END
Con los ejemplos mostrados se muestra como se pueden efectuar las operaciones básicas de acceso a una determinada
Base de Datos, utilizando instrucciones básicas y estándar de SQL. Procesos
más sofisticados pueden ser realizados siempre y cuando el manejador de la Base
de Datos en uso externo lo permita.
Para aquellos que aún no usan SQL recuerden que una de las ventajas principales de usar SQL
en sus aplicaciones es la independencia de Base de Datos que se obtiene. Es
decir, si se usa SQL para el manejo de archivos su aplicación es portátil y
potencialmente se puede instalar con una Base de Datos externa como Oracle,
Sybase, Fox, etc. Esto puede hacer su aplicación más mercadeable entre usuarios
que tengan aplicaciones en otras bases de datos. Por ejemplo, puede vender un
sistema de Nómina que actualice un Mayor General residente en Oracle.
El uso de SQL
requiere cambios en la aplicación ya que los comandos y manejo de archivos es
diferente. Por lo general deben asumir un tiempo de aprendizaje si no han usado
SQL anteriormente. También SQL es menos eficiente que el acceso normal que siempre
ha ofrecido el BBx (READ RECORD, WRITE RECORD, etc.) por su estilo de manejo
de conjuntos de registros (record sets) en lugar de registros individuales.
Por otro lado, al manejar conjuntos puede ser más eficiente en modo cliente/servidor
ya que se minimiza la actividad entre el servidor y el cliente al procesar grupos
de registros. Con la tendencia hacia procesadores más veloces la menor eficiencia
en acceso navegacional es en algunos casos un factor de menor peso que lograr
portabilidad en el sistema de archivos.
El ODBC de Basis
emite una documentación que muestra la sintaxis de SQL que permite el Visual
PRO/5, para trabajar con la Base de Datos nativa o propia del Visual PRO/5.
Dynamic Data Exchange
Dynamic Data Exchange es una facilidad
que también nos brinda el Visual Pro/5, ya que con esta opción podemos accesar
documentos que estén cargados en la memoria de la estación de trabajo, como
lo son documentos de Word, Excel, Lotus y otros. Por ejemplo, desde Excel podemos
abrir una hoja electrónica cargada de datos que perfectamente podemos leer o
modificar desde Visual Pro/5. El requerimiento para este tipo de programa es
que por aparte se necesita conocer los parámetros necesarios para interactuar
con el documento en memoria, ya que estos parámetros no son algo propio del
Visual Pro/5.
El programa que a continuación se
muestra permite cargar las celdas de una hoja que tengamos abierta con Excel.
Está bastante documentado con REMs que van explicando el proceso. Note que en
la línea 0130 se hace la advertencia de que el programa debe condicionarse para
cuando se usa Excel en español o en inglés.
0010 REM "Muestra como CARGAR datos en una hoja de Excel
en memoria
0020 REM "Se requiere que el archivo Excel exista y que Excel este abierto
0030 BEGIN
0040 REM "La siguiente linea comprueba que Excel este abierto
0050 LET xls=UNT; OPEN (xls,MODE="DDECLIENT",ERR=xls_no_abierto)"EXCEL:SYSTEM"
0060 INPUT "Dar nombre del archivo de Excel (ENTER=Ninguno): ",arch$:(""=final
0060:,LEN=1,18); IF POS(".xls"=CVS(arch$,8))=0 THEN LET arch$=arch$+".xls"
0070 LET cmd$="[OPEN(""C:\temp\"+arch$+""")]"+$00$
0080 REM "La siguiente linea carga el archivo indicado en memoria
0090 WRITE RECORD(xls,KEY="DDE_EXECUTE",ERR=xls_no_abierto)cmd$
0100 CLOSE (1); REM "Despues de ponerlo en memoria hay que cerrar el canal
0110 REM "La siguiente linea abre el acceso hacia el Excel en memoria
0120 OPEN (1,MODE="DDECLIENT")"EXCEL:c:\temp\"+arch$
0130 REM "Abajo, para Excel en Ingles debe usar RxCx y para Espanol FxCx
0140 REM
0150 LET cli=UNT; OPEN (cli)"CLIENTE.tpl"; FIND (cli)tpl$; CLOSE (cli);
OPEN (
0150:cli)"CLIENTE.dat"; DIM cli$:tpl$
0160 REM ...
|