Manejo de dos bases de datos diferentes

577 views
Skip to first unread message

Norberto Mario Alvarez

unread,
Nov 21, 2019, 6:27:55 AM11/21/19
to Comunidad de Visual Foxpro en Español
Estimada lista, en un mismo servidor tengo dos bases de datos nativas de VFP, y cada una trabaja con su respectivo Sistema. Ahora se me presenta que necesito trabajar desde uno de los sistemas con tablas de la otra Base de Datos, es posible? y de ser así que me recomiendan. Desde ya muchas gracias por vuestra atención.

Norberto Alvarez
Buenos Aires, Argentina

Jorge Galván Pérez

unread,
Nov 21, 2019, 10:20:17 AM11/21/19
to Comunidad de Visual Foxpro en Español
Si tienes las dos base de datos (DBC) abiertas y quieres abrira una tabla en expecifico haz lo siguiente 


USE BaseDatos1!Tabla1 in 0 share       && y puedes abrir otra 
USE BaseDatos2!Tabla2 in 0 share

Jorge Galvan
Caracas-Venezuela



Norberto Mario Alvarez

unread,
Nov 21, 2019, 11:58:53 AM11/21/19
to Comunidad de Visual Foxpro en Español
Hola Jorge, por tu respuesta. Una pregunta mas, yo puedo abrir las dos bases de datos?
Gracias

Norberto Alvarez
Buenos Aires, Argentina




Jorge Galván Pérez

unread,
Nov 25, 2019, 7:51:22 AM11/25/19
to Comunidad de Visual Foxpro en Español
Con el commando 

OPEN DATABASE baseDatos1 SHARED
OPEN DATABASE baseDatos2 SHARED
...
...
OPEN DATABASE baseDatos99 SHARED

Saludos

Norberto Mario Alvarez

unread,
Nov 28, 2019, 6:09:55 AM11/28/19
to Comunidad de Visual Foxpro en Español
Hola Jorge, gracias por tu respuesta, pero te voy agregar, una más. Ya que tres sistemas iguales, con las tres bases de datos iguales, e igual tablas. En rutas diferentes y tengo que trabajar con una tabla de cada base (la misma). En este caso, puedo abrir tres bases con el mismo nombre, y supongo,en el caso de hacerlo, con las tablas trabajo con alias diferente. Gracias por vuestra atención.

Norberto Álvarez, Buenos Aires, Argentina

Antonio.xt

unread,
Nov 28, 2019, 9:57:16 AM11/28/19
to Comunidad de Visual Foxpro en Español

Norberto Álvarez, creo que no hay "alias" para la BDD, pero lo que puedes hacer en ese caso es guardar el nombre de cada BDD en una variable, por ejemplo:

nombreBDD = "labdd.DBC"
_bdd1 = "C:\ruta_de_bdd_1\" + nombreBDD
_bdd2 = "C:\ruta_de_bdd_2\" + nombreBDD
_bdd3 = "C:\ruta_de_bdd_3\" + nombreBDD

La abres de manera normal:
OPEN DATABASE (_bdd1) SHARED
SET DATABASE TO (_bdd1)

Abres las tablas necesarias de la base de datos seleccionada

Y cada vez que necesites cambiar de base de datos usas SET DATABASE TO (_bdd..N), ya que fox identifica el nombre de la base de datos con todo y el path.

HernanCano

unread,
Nov 28, 2019, 6:06:16 PM11/28/19
to Comunidad de Visual Foxpro en Español
Norberto:

Creo entender que las DBF tienen el mismo nombre; está bien, no creo que tengamos problema con eso (: con un alias diferente).

En lo que dices, no veo las bases de datos DBC tengan el mismo nombre; si las DBC tienen el mismo entonces yo creo que sí podemos tener problema con eso (claro que hay solución: abrir la primera, traer los datos, tener el cursor sin cerrarlo --o usar una DBF física no permanente--, cerrar la primera bdatos; abrir la segunda bdatos, y hacer el mismo proceso; luego procesar los cursores....)

Investigando.


Luis suescún

unread,
Nov 29, 2019, 6:10:38 AM11/29/19
to publice...@googlegroups.com
Hernán y si al final no abre ninguna bd y todo lo mueve por string de conexión con 3 conexiones diferentes a las 3 bd y todo lo trabaja por medio de sqlexec.

Me parece ser buena opción.


--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/663b7cf2-8717-4b7d-8464-7462f1d08a9f%40googlegroups.com.

HernanCano

unread,
Nov 29, 2019, 1:58:08 PM11/29/19
to Comunidad de Visual Foxpro en Español
Norberto:
Sería bueno saber qué error/dificultad/impasse te sucedió cuando quisiste hacer lo que dices.

La dificultad está en resolver ¿qué pasa si las tres bases de datos DBC tiene el mismo nombre?

Deberías decirnos qué se te presentó cuando quisiste hacer éso: abrirlas.

Mientras nos contestas, te propongo que ejecutes un escenario similar al sgte con el ánimo que nos puedas responder algo.


** EJEMPLO.PRG

** 
** en DATOS1\ están la primera DBC y sus DBFs
** en DATOS2\ están la primera DBC y sus DBFs
** 


**
**
do Alternativa1
do Alternativa2
do Alternativa3


** ** Alternativa 1:
procedure Alternativa1
close databases all
use DATOS1\CLIENTES shared noupdate in 0 alias CLIENTES1
use DATOS2\CLIENTES shared noupdate in 0 alias CLIENTES2
**
Messagebox('Estamos en la '+prog())
select CLIENTES1
acti scre
brow nomo title prog()
select CLIENTES2
acti scre
brow nomo title prog()

** ** Alternativa 2:
procedure Alternativa2
close databases all
open database DATOS1\LOSMUEBLES shared
use LOSMUEBLES!CLIENTES shared noupdate in 0 alias CLIENTES1

open database DATOS2\LOSMUEBLES shared
use LOSMUEBLES!CLIENTES shared noupdate in 0 alias CLIENTES2

Messagebox('Estamos en la '+prog())
select CLIENTES1
acti scre
brow nomo title prog()
select CLIENTES2
acti scre
brow nomo title prog()


** Alternativa 3:
procedure Alternativa3
close databases all
open database DATOS1\LOSMUEBLES shared
open database DATOS2\LOSMUEBLES shared

set database to DATOS1\LOSMUEBLES
use CLIENTES shared noupdate in 0 alias CLIENTES1

set database to DATOS2\LOSMUEBLES
use CLIENTES shared noupdate in 0 alias CLIENTES2

Messagebox('Estamos en la '+prog())
select CLIENTES1
acti scre
brow nomo title prog()
select CLIENTES2
acti scre
brow nomo title prog()

**

El jueves, 28 de noviembre de 2019, 6:09:55 (UTC-5), Norberto Mario Alvarez escribió:

HernanCano

unread,
Nov 29, 2019, 2:00:55 PM11/29/19
to Comunidad de Visual Foxpro en Español
Sí, Luis.
El escenario que propones es acertado.

Norberto puede decidir cuál de los dos usar.

HernanCano

unread,
Nov 29, 2019, 2:02:34 PM11/29/19
to Comunidad de Visual Foxpro en Español
Corrección:

** EJEMPLO.PRG

** 
** en DATOS1\ está la primera DBC y sus DBFs
** en DATOS2\ está la SEGUNDA DBC y sus DBFs
** 

Antonio Meza

unread,
Nov 29, 2019, 2:41:30 PM11/29/19
to Comunidad de Visual Foxpro en Español
Tiene años que no uso dbfs, pero cuando las use se me presento un caso parecido.

Recuerdo que simplemente al abrir las tablas debes indicar su ruta y poner el alias y asunto arreglado, es decir así como indicas la ruta para el contenedor de base de datos DBC, también hay que indicar la ruta para abrir la tabla dbf, de esta forma minimizas los errores de confundir las tablas.

Nota: En VFP por error o costumbre muchos le llaman base de datos a los archivos DBC, pero en realidad es un Contenedor de Tablas!!!!

saludos
Antonio Meza

Norberto Mario Alvarez

unread,
Dec 2, 2019, 8:05:01 AM12/2/19
to Comunidad de Visual Foxpro en Español
Gracias a todos por vuestra respuesta, ya me puse a trabajar con todas estas opciones y me aclararon bastante el panorama, esto es solo para un cliente en especial. Pero no lo podía haber logrado si no habría sido por sus respuestas. Saludos

Norberto Alvarez
Buenos Aires, Argentina

El jueves, 21 de noviembre de 2019, 8:27:55 (UTC-3), Norberto Mario Alvarez escribió:

Norberto Mario Alvarez

unread,
Dec 2, 2019, 10:18:12 AM12/2/19
to Comunidad de Visual Foxpro en Español
Hola Lista, comencé con las pruebas y evidentemente estoy haciendo algo mal. Como las tablas tienen el mismo nombre y están en rutas diferentes, he creado una tabla donde guardo la ruta de cada uno, y mediante un scan quiero armar un cursor, para usarlo después, mANDO EL CÓDIGO:

*------------------*
SELECT RUTAS
GO TOP
SCAN FOR pathchetros # SPACE(150)
   m.latabla = ALLTRIM(RUTAS.PATHCHETROS)+"CHETROS.DBF"
   m.elalias = "CHETROS"+ALLTRIM(STR(RUTAS.NRO_ID))
   use &m.latabla shared in 0 alias &m.elalias
   SELECT * FROM m.elalias WHERE NRO_OP == 0 AND NOT DELETED() INTO CURSOR C_TC ORDER BY NRO_CH  
   SELECT C_TC
   GO TOP
   SCAN
     INSERT INTO C_CHETROSCARTERA (NRO_CH, BCO_CH, FEC_CH, NRO_CHK, DIF_CH, LIB_CH, END_CH, IMP_CH, NRO_OP, NRO_REC, RUTA) VALUES (C_TC.NRO_CH, C_TC.BCO_CH, C_TC.FEC_CH, C_TC.NRO_CHK, C_TC.DIF_CH, C_TC.LIB_CH, C_TC.END_CH, C_TC.IMP_CH, C_TC.NRO_OP, C_TC.NRO_REC, TC.NRO_ID)
     SELECT C_TC
   ENDSCAN
ENDSCAN


El problema de sintaxis esta en Rojo, y no veo que estoy haciendo mal. Muchas Gracias

Norberto Alvarez
Buenos Aires, Argentina


El jueves, 21 de noviembre de 2019, 8:27:55 (UTC-3), Norberto Mario Alvarez escribió:

Edwin Duran

unread,
Dec 2, 2019, 11:07:25 AM12/2/19
to Comunidad de Visual Foxpro en Español
pruebas

 use (m.latabla) shared in 0 alias (m.elalias)

Zarlu

unread,
Dec 2, 2019, 11:12:40 AM12/2/19
to Comunidad de Visual Foxpro en Español
Buenos días Norberto Mario Alvarez!

Mencionas un error de sintaxis...no sé si "RUTAS.PATHCHETROS" contenga la diagonal al final. Revisa..

m.latabla = ALLTRIM(RUTAS.PATHCHETROS)+"\CHETROS.DBF"

Suerte
zarlu
Chetumal, Quintana Roo, México

Norberto Mario Alvarez

unread,
Dec 2, 2019, 11:49:24 AM12/2/19
to Comunidad de Visual Foxpro en Español
Hola, gracias por TU respuesta, pero si la tiene.

Norberto

Zarlu

unread,
Dec 2, 2019, 11:56:14 AM12/2/19
to Comunidad de Visual Foxpro en Español
Que tal Norberto Mario Alvarez!

Podrías subir la imagen del error y de la tabla RUTAS.PATHCHETROS ?

Norberto Mario Alvarez

unread,
Dec 2, 2019, 12:33:57 PM12/2/19
to Comunidad de Visual Foxpro en Español
Hola Zarlu

en RUTAS.PATHCHETROS tengo C:\SISTEMAS\VMILNUEVO\DATOS\      

y me tira Sintex Error en la linea

use &m.latabla shared in 0 alias &m.elalias

Gracias

Edwin Duran

unread,
Dec 2, 2019, 12:42:05 PM12/2/19
to Comunidad de Visual Foxpro en Español
probaste de esta forma use (m.latabla) shared in 0 alias (m.elalias)

Zarlu

unread,
Dec 2, 2019, 1:00:03 PM12/2/19
to Comunidad de Visual Foxpro en Español

Prueba como te dice Edwin Duran, entre paréntesis!

 use (m.latabla) shared in 0 alias(m.elalias)

"&" arroja error por el "m."

Suerte
zarlu
Chetumal, Quintana Roo, Mexico
 

Norberto Mario Alvarez

unread,
Dec 2, 2019, 4:41:26 PM12/2/19
to Comunidad de Visual Foxpro en Español
Hola Zarku, muchas gracias funcionó OK

Norberto Alvarez
Buenos Aires, Argentina

Reply all
Reply to author
Forward
0 new messages