Uso de varias tablas en un mismo formulario

299 views
Skip to first unread message

Jonatan E

unread,
Mar 1, 2016, 2:30:33 PM3/1/16
to Comunidad de Visual Foxpro en Español
La pregunta del millón es: ¿cómo puedo trabajar con más de una tabla en un mismo formulario, especialmente cuando en algunas ocasiones tengo que eliminar registros o todo lo que hay en una tabla?

Ya que al usar más de una tabla aparecen errores, cuando sólo uso el select u otra cosa: Alias 'Nombre_de_tabla' is not found, File is in use, File must be opened exclusively (especialmente cuando uso el Pack después de usar el delete).

Lo que he podido hacer es que cada vez que voy a trabajar con una tabla (de muchas tablas) en un mismo formulario es:

IF USED('NombreTabla')
USE IN NombreTabla
USE NombreTabla EXCLUSIVE 
ELSE
USE NombreTabla EXCLUSIVE 
ENDIF 
SELECT NombreTabla

Ya que lineas más abajo del mismo código uso otra tabla y a veces otra (y otra y otra, etc)

Hay algún problema en hacer esto? ya que así (al menos a mi me funciona) no me salen más los "benditos" errores por uso de varias tablas (ya sea en el mismo botón o en distintos botones o llamadas)
O hay alguna manera mejor de trabajar con varias tablas al mismo tiempo en un mismo formulario? 
Se agradece

Pd: Al solucionar este problema de esta manera me es algo engorroso ya que tengo que usar más código de lo pensado, y más aún cuando uso el bendito grid :/

panchimancuso

unread,
Mar 1, 2016, 3:12:37 PM3/1/16
to Comunidad de Visual Foxpro en Español
EN EL LOAD DEL FORM

select 1
USE \winvet\agenda IN 0 exclu
SET INDEX TO agenda01
GO top
select 2
use .........
select 3
use .........

despues solo te manejas con los select para seleccionar las tablas

asi no usarias el entorno de datos del form.
saludos

Jonatan E

unread,
Mar 1, 2016, 3:41:49 PM3/1/16
to Comunidad de Visual Foxpro en Español
Despues de eso, que selecciono para seleccionar la tabla deseada??
Select N°?
Select NombreTabla? o
Select NombreTabla01?

Y cuando utitilize el pack?

Disculpa mi ignorancia que soy nuevo en esto
Gracias.

Jonatan E

unread,
Mar 1, 2016, 3:44:08 PM3/1/16
to Comunidad de Visual Foxpro en Español
Por cierto al usar en el Load del form me sale el sgte error: File in use

Carlos Miguel FARIAS

unread,
Mar 1, 2016, 5:11:54 PM3/1/16
to Grupo Fox
Si vas a usar varias tablas en un formulario, usa el entorno de datos. Abre más rápido que por código a mano.
En el entorno ya puedes activar indices (aunque normalmente no es necesario).
Si abres tablas a mano usa
USE tuTablaEnDisco IN 0 ALIAS tuTablaAbierta SHARED AGAIN
Luego seleccionas con 
SELECT tuTablaAbierta
nunca SELECT número de área
Lo más probable que te olvides del número de área, pero no del nombre de la tabla
Las tareas de PACK deben hacerse en procesos específicos por separado, ya que en un entorno multiusuario, te va a dar error permanentemente.
Es inapropiado hacer DELETE y luego PACK, porque como te comente el proceso requiere uso exclusivo (y si hay otro usuario o formularios abiertos te dará error).
Si te da File en Use, es justamente porque estás intentando abrir la misma tabla más de una vez.
Si lees con detenimiento la ayuda de VFP (y hay algunos libros interesantes) vas a ver como se comparten archivos.
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los acompañe

Jonatan E

unread,
Mar 1, 2016, 5:18:51 PM3/1/16
to Comunidad de Visual Foxpro en Español
 Gracias Miguel, voy a tener pte lo recomendado, veamos que pasa XD

alvarocastellar

unread,
Mar 2, 2016, 4:06:41 PM3/2/16
to Comunidad de Visual Foxpro en Español
Hola amigo cuando necesito hacer un pack, zap o comandos que necesitan la exclusividad de la tabla lo que hago es cerrar la base de datos, obviamente este proceso requiere que si otros usuarios estan dentro del programa salgan de el despues de eso abro las tablas que requiero de forma exclusiva y realizo el proceso. este seria el codigo:

Close Database All

Use tabla1 In 0 Pack
Pack

Use tabla2 In 0 Exclu
Zap

USe In Tabla1
Use In Tabla2

Open database NombreBaseDatos Shared

Esto cierra la base de datos, ejecuta el proceso y la vuelve a abrir para que los otros usuarios no tengan inconvenientes al volver a entrar

Espero haberte sido de ayuda


Saludos desde cartagena, colombia

Jonatan E

unread,
Mar 2, 2016, 4:11:51 PM3/2/16
to Comunidad de Visual Foxpro en Español
Gracias alvarocastellar, voy a ver como me va con eso, se agradece
Reply all
Reply to author
Forward
0 new messages