Como Crear Sistemas Multiempresa

Como crear sistemas multiempresa VISUAL FOXPRO TIPS Por: Lic. Sergio Hugo Sanchez O. 29, Abril, 2002 - H. Matamoros, Tam

Views 178 Downloads 2 File size 80KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Como crear sistemas multiempresa VISUAL FOXPRO TIPS Por: Lic. Sergio Hugo Sanchez O. 29, Abril, 2002 - H. Matamoros, Tam. Mexico - I.D. Systems Hay ocasiones en que es necesario que nuestras bases de datos o nuestras tablas cambien de ubicación. Tal es el caso de un sistema multiempresa. Supongamos que al hacer un sistema multiempresa necesitamos que nuestras diferentes tablas o base de datos esten cada una en una carpeta diferente para que se manejen de manera individual. Esto lo podemos hacer facilmente utilizando por ejemplo el codigo dentro de nuestras formas o programas al abrir nuestras tablas de la siguiente manera; view source print? 1. 2.USE c:\sistemas\carpeta\tabla.dbf IN 0

Esto como vemos abre la tabla desde la carpeta especificada. En FoxPro anterior que no teniamos las formas y codificabamos la mayor parte del tiempo no era tanto problema. En algunas ocasiones teniamos una tabla donde especificabamos el nombre de la empresa y la ubicación, esto se pasaba a una variable desde el principio del programa y mas adelante al abrir las tablas respectivas se utilizaba el siguiente codigo: view source print? 1. 2.VPath = "c:\sistemas\carpeta2" 3.CTabla = vPath + "\tabla.dbf" 4.USE (cTabla) IN 0

O con una macro

view source print? 1. 2.VPath = "c:\sistemas\carpeta2" 3.CTabla = vPath + "\tabla.dbf"

4.USE &cTabla IN 0 5.

Bien. Lamentablemente el VisualFoxPro me encontre que al poner mis tablas (trabajo con tablas libres y en este ejemplo asi las usare) dentro del DATAENVIRONMENT de la Forma este queda de una manera fija (hardcode) y hace referencia para abrirse directamente desde esta ubicación, no importando si la forma se cambia de carpeta. En algunas ocasiones he copiado una forma de un sistema a otro y la tabla al abrirse conserva su ubicación original. ¿Cómo entonces decirle a la forma que abra una tabla desde otra ubicación si esta esta dentro del DATAENVIRONMENT de la Forma? Una sencilla respuesta seria poner la propiedad AUTOOPENTABLES como .F. y incluso en el INIT de la forma codificar de la manera antes mencionada. Pero para probar algo nuevo y para tener mis tablas en la misma forma dentro del DATAENVIRONMENT he aquí un ejemplo de cómo se podria codificar y hacer que las tablas contenidas dentro del DATAENVIRONMENT cambien de ubicación aunque este prefijadas. 1. Se tiene una tabla con los datos de la empresa a abrir con un campo que indique la ubicación. Mas o menos asi:

EMPRESA Ubicación DEMO1 C:\SISTEMAS\CARPETA1 DEMO2 C:\SISTEMAS\CARPETA2 Etc.

2. Tener una variable PUBLICA dentro de nuestro programa principal o con el cual arranquemos, algo asi como: PUBLIC vPath 3. Hacer una forma donde podamos seleccionar la empresa que queramos, y una vez seleccionada, pasar a nuestra variable publica la ubicación correspondiente.

4. Hacer nuestra forma donde abrimos nuestras diferentes tablas. Creamos una nueva forma, abrimos el area del DATAENVIRONMENT y agregamos a ella nuestra tabla o tablas (estamos usando tablas libres, pero puede usar una base de datos tambien). Recuerde que no importa de donde venga el camino. Cada tabla hace un CURSOR, una tabla temporal que es la que se abre con la forma. El cursor tiene una propiedad llamada CURSORSOURCE que veremos esta en italica y no se nos permite modificar dentro de nuestra ventana de propiedades. 5. Ahora pondremos los campos que deseemos en la forma tal y como se haria con una tabla de manera normal. 6. Abrimos de nuevo nuestro DATAENVIRONMENT (o lo seleccionamos si no lo hemos cerrado) y haremos dos cosas: 1) poner la propiedad AUTOOPENTABLES como .F. y 2) Poner dentro del metodo OPENTABLES: view source print? 1. 2.this.cursor1.cursorsource = TRIM( vPATH ) + "\tabla.dbf"

Si tiene mas de una tabla entonces debera poner esta referencia por cada tabla que este ahí, cambiando el numero de cursor de que se trate. 7. Ahora cerramos nuestro DATAENVIRONMENT y en el INIT de nuestra FORMa tecleamos lo siguiente: view source print? 1. 2.ThisForm.DataEnvironment.OpenTables()

Esto ejecutara el metodo OPENTABLES que hemos programado y listo, nuestra forma abrira la tabla desde la ubicación correcta. Si incluso desea pasar un parametro a la forma para una nueva ubicación, dentro del INIT de la forma debera poner:

view source print? 1. 2.PARAMETER cWhichDBC 3.

Luego creamos una propiedad en la forma llamada por ejemplo * WhichDBC Y ahí ponemos: view source print? 1. 2.This.WhichDBC=cWhichDBC 3.ThisForm.DataEnvironment.OpenTables() 4.

En el OPENTABLES del DATAENVIRONMENT pondremos: view source print? 1. 2.This.Cursor1.Database=ThisForm.WhichDBC 3.This.Cursor2.Database=ThisForm.WhichDBC 4.