Direccionar las tablas libres hacia la carpeta indicada

250 views
Skip to first unread message

foxteban

unread,
Aug 26, 2012, 12:50:00 AM8/26/12
to publice...@googlegroups.com

Hola grupo

Una consulta.
Estuve trabajando en mis sistemas con Bases de Datos con sus tablas incluidas.
A raiz de tener muchos inconvenientes con las DBC, he decidido trabajar con tablas libres.
El tema pasa que en el entorno de datos de cada formulario, pongo las tablas que se utilizan en cada formulario, pero como tengo varios clientes que estan en carpetas individuales, al invocarlas, debo poner en el OPENTABLE de cada entorno de datos, los siguiente:

this.cursor1.database = rutacont+'\mydbc.dbc'
this.cursor2.database = rutacont+'\mydbc.dbc'
etc.....

rutacont= contiene la ruta de la carpeta en donde estan los datos de un cliente determinado.
mydbc.dbc= es la base de datos de contiene las tablas.

Como hago ahora para direccionar las tablas libres que estaran en las mismas carpetas
por ejemplo

This.cursor1.???? = rutacont+'????'
????= es la duda de como la invoco a la tabla libre ?

Bueno amigos espero se entienda lo solicitado. Desde ya gracias y le dejo un saludo.

Esteban Micossi

 

 

 

 

José Medina

unread,
Aug 26, 2012, 2:01:48 AM8/26/12
to publice...@googlegroups.com
Hola Esteban;

Yo trabajo con varios clientes en el mismo sistema, al elaborar los formularios y los entornos de datos no pongo ningún código para indicar las direcciones de las tablas o bases de datos, te sugiero que veas los comandos "Set Path to" (que te permite indicar las carpetas donde VFP buscará los archivos que necesita y "Set Defa to" que le indica a VFP el directorio por defecto donde debe trabajar.

Saludos.

Ricardo Pina

unread,
Aug 26, 2012, 9:31:23 AM8/26/12
to publice...@googlegroups.com
Hola Esteban
 
Usa esta Sintaxis
 
THIS.AddObject("cursor1","cursor")
THIS.cursor1.Alias = "mydbc"
THIS.cursor1.CursorSource = rutacont+"mydbc.dbf"
Saludos

 

 

 

 

--
 
 
 



--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 


Guillermo MDQ

unread,
Aug 26, 2012, 10:56:39 AM8/26/12
to publice...@googlegroups.com
Que problemas has tenido con las DBC ?
He trabajado siempre con ellas y nunca tuve ningún inconveniente.

Saludos
Guillermo

Luis Maria Guayan

unread,
Aug 26, 2012, 1:35:36 PM8/26/12
to publice...@googlegroups.com
Al igual que Guillermo siempre he trabajado con DBCs y no he tenido
inconvenientes. Son muchas las ventajas en usar DBCs. Cual ha sido tu
problema?


On 8/26/12, Guillermo MDQ <gol...@gmail.com> wrote:
> Que problemas has tenido con las DBC ?
> He trabajado siempre con ellas y nunca tuve ningún inconveniente.
>
> Saludos
> Guillermo
>
>
>
> El domingo, 26 de agosto de 2012 10:31:23 UTC-3, Ricardo Pina escribió:
>>
>> Hola Esteban
>>
>> Usa esta Sintaxis
>>
>> THIS.AddObject("cursor1","cursor")
>> THIS.cursor1.Alias = "mydbc"
>> THIS.cursor1.CursorSource = rutacont+"mydbc.dbf"
>> Saludos
>>
>> El 26 de agosto de 2012 01:50, foxteban
>> <esteban...@hotmail.com<javascript:>
>> * *
>>
>> * Ricardo Pina*
>>
>> *Desarrollo y Servicios Informáticos*
>>
>> * Profesionales
>> www.dsip.com.ar*
>>
>>
>> **
>>
>>
>
> --
>
>
>
>


--

*Luis María Guayán
Tucumán, Argentina
_________________________
**http://www.PortalFox.com <http://www.portalfox.com/>*
*Nada corre como un zorro
_________________________*

foxteban

unread,
Aug 26, 2012, 1:52:12 PM8/26/12
to publice...@googlegroups.com

Hola Amigos

Bueno, agradesco a cada uno de Uds la ayuda, que me propiciaron
El tema de usar DBC, en un principio no tengo mayores inconvenientes salvo el hecho que cuando agrego una tabla nueva, en algunos casos, no me reconoce esa tabla, en el sistema, a pesar que que abro la DBC y esta incerta esa nueva tabla en la misma, pero algo debo estar haciendo mal por que como les digo, cada ves que en la rutina en donde se debe llamar a esa nueva tabla me aparece el cuadro de dialogo para que seleccione una tabla.
Ya vere como hago, pero ese es el inconveniente, el resto esta todo bien.
Bueno gente, les dejo un saludo y muchas gracias
Esteban

Guillermo MDQ

unread,
Aug 26, 2012, 3:12:56 PM8/26/12
to publice...@googlegroups.com
No has probado utilizar el comando VALIDATE DATABASE despues de hacer algún cambio o agregar una tabla a la DBC ?
Seguramente te dará una pista del error que puedas tener.

Tambien pordrías revisar el código que genera la utilidad GENDBC que viene con el visual fox que te puede ayudar a ver como se recrea una database.

Saludos
Guillermo

Edgar D.

unread,
Aug 27, 2012, 11:17:24 AM8/27/12
to publice...@googlegroups.com
Hola, yo tuve problemas con las rutas en el dataenvironment por lo estuve investigando y encontre este codigo que originalmente fue publicado en UT MAGAZINE. Va colocado en el BeforeOpenTables. 
Originalmente el codigo busca una DB, pero yo comentarice esa linea para hacer la busqueda por cursores o tablas libres debido que en las formas que las utilizo son tablas libres y manejo varias rutas.
Notaras que manejo el nombre del cursor con un numero al final el cual es extraido para indicar la condicion que debe cumplir para pertenecer a cierta ruta, cuando exede del numero 9 manejo una letra al final. Tu lo adecuaras a tu propio estilo.
Sin embargo tambien coincido en que las DB no dan ningun problema. Espero esto te sirva

cDataPath  = "Ruta1"
cDataPath2 = "Ruta2"
cDataPath3 = "Ruta3"
cDataPath4 = "Ruta4"

= Amembers( ACursors, Thisform.DataEnvironment, 1)
= Asort( ACursors, 2)

** nStartPos = ASUBSCRIPT( ACursors, ASCAN( ACursors, "Object"), 1)
** 2010-02-03, corrected by Igor Nikiforov
lnStartPos = Ascan( ACursors, "Object", -1, -1, 2, 15)
If .Not.Empty(lnStartPos)
For i = lnStartPos To Alen(  ACursors, 1)

If ACursors[ i, 2] = "Object"
cObjClass = "ThisForm.DataEnvironment." + ACursors[ i, 1] + ".class"

If Eval( cObjClass) = "Cursor"
cObjName = "ThisForm.DataEnvironment." + ACursors[ i, 1] + ".Database"
cDataName = Eval( cObjName)

*cNewDataPath = ALLTRIM( cDataPath) + ALLTRIM( SUBSTR( cDataName, RAT( "\", cDataName) + 1))

oRef = Eval( "ThisForm.DataEnvironment." + ACursors[ i, 1])
DO Case
* RUTA 1*
CASE Val(Substr(oRef.Name,7,1)) <= 4 AND Substr(oRef.Name,7,1) <= 'X'
cNewDataPath = Alltrim( cDataPath) + Alltrim( Substr( cDataName, Rat( "\", cDataName) + 1))
* OTRA RUTA*
CASE Val(Substr(oRef.Name,7,1)) = 5
cNewDataPath = Alltrim( cDataPath4) + Alltrim( Substr( cDataName, Rat( "\", cDataName) + 1))
* OTRA RUTA*
CASE Val(Substr(oRef.Name,7,1)) >= 6 
cNewDataPath = Alltrim( cDataPath3) + Alltrim( Substr( cDataName, Rat( "\", cDataName) + 1))
EndCase
oRef.CursorSource = cNewDataPath+oRef.Alias+".dbf"
*oRef.DATABASE = cNewDataPath
Endif
Else
Exit
Endif

Endfor
Endif

******** Fin del proceso ******

Espero te sea de utilidad
Saludos
Edgar D.
Reply all
Reply to author
Forward
0 new messages