Incluir o excluí tablas Ayudame

Hola Fernando, agradezco tu apoyo que nos brindas y la capacidad de ayudar a los demas; De nuevo te pido me ayudes, resulta que voy a elaborar un ejecutable y quiero que me quede bien, e investigado y tengo un ejemplo del programa. Prg pero como es eso de incluir o excluir tablas por que resulta que mi base de datos esta excluida y mis tablas de las bse de datos están incluidas como he estado trabajando en fox funciona bien mi programa. Otra más es correcto hacer esto dentro de c/uno de mis formularios en la opción Load abro las tablas así: select 1
use c:\carpeta\tabla1.dbf
Y así todas las que ocupo en ese formulario, y si por ejemplo tabla 1 la ocupo en otro formulario también la vuelvo abrir pero ahora la pregunta resulta que mi proyecto lo voy a llevar a la escuela y no tengo fox tengo que llevar un ejecutable e instalarlo halla y nada mas; como debo de realizar esto de incluir o excluir tablas ya que dicen que si la incluyo debe existir la ruta y solo son de lectura, considerando que solo debo llevar un ejecutable como debo hacer todo este rollo de abrir mis ares de trabajo de excluir o incluir tablas para que funcione al final bien mi programa. Te agradeceré mucho me ayudes por que de eso no se mucho ahora si que desconozco. Si me puedes enviar un ejemplo del .prg por favor haa mi programa no va estar en red por ahora. Bayy
De antena mil gracias por tu apoyo brindado.

1 Respuesta

Respuesta
1
Magda:
Punto 1:
Nunca debes usar el comando USE.
¿Por qué?
Bueno, en cada formulario existe el "Entorno de Datos" que es el lugar donde defines las tablas que se van a usar en ese formulario y en todos aquellos otros que sean llamados por este formulario.
La forma de acceder es: Abre el formulario, Click derecho y selecciona "Entorno de Datos" (Data Enviroenment), luego agrega las tablas que uses en ese formulario.
Luego en la programación de los distintos objetos, usa el comando:
SELECT TABLA1
El problema de usar el comando USE es que cada vez que lo usas, mueves el puntero a la tabla al primer registro y pierdes el registro actual. Ademas se te complica para la programación en red, usando el Entorno de Datos te olvidas de programar en red, porque cada formulario maneja los bloqueos de registros y archivos automáticamente.
Si por una de esas, necesitas usar el comando USE, usalo de la siguiente forma:
SELECT 0
Use tabla1 alias tabla1 shared
Punto 2:
Tu sistema tendría que estar distribuido de la siguiente forma:
C:\CARPETA && El proyecto
C:\CARPETA\DATOS && Las tablas
C:\CARPETA\FORMS && los Formularios
C:\CARPETA\IMAGE && Los graficos e iconos
C:\CARPETA\REPOR && Los reportes
C:\CARPETA\MENUS && Los menues
etc,etc.
Luego en el .PRG principal debes tener las siguientes lineas:
SET DEFA TO C:\CARPETA
SET PATH TO C:\CARPETA\DATOS, C:\CARPETA\FORMS,C:\CARPETA\IMAGE, etc, etc.
Punto 3:
El tema de incluir o excluir archivos en el proyecto (que luego van a estar incluidos en el ejecutable) es el siguiente:
Todos aquellos archivos que tu sepas que van a tener modificaciones durante la ejecución del sistema deberías excluirlos, porque cuando los incluyes, automáticamente se transforman en solo lectura.
Por ello, es que las Bases de Datos y las Tablas no deben estar incluidas, en cambio, si puedes incluir los gráficos, los iconos, los menús, los reportes, los .PRG, etc.
Yo particularmente, al cliente, le instalo el ejecutable, las bases de datos, las tablas, los gráficos y los iconos. El resto (forms, menús, reportes, etc) no los copio en el Cliente porque se incluyen automáticamente en el ejecutable. Lo que si excluyo son los gráficos e iconos (porque se los grabo al cliente, así el ejecutable no se hace tan grande y no consume tanta memoria).
Recuerda que cuantos más archivos incluyas, más grande se hará el ejecutable y más gasto de memoria abra.
Espero haber disipado tus dudas.
Saludos.
Fernando ALVAREZ
La Pampa - ARGENTINA.
Cambia el código por:
select tabla1
Go top
Do whilw. Not. Eof()
if thisform.cpr.value=cp
Muestra datos
Endif
Skip
Enddo
En cuanto a tus dudas, si va a afectar a la programación, no te preocupes que al contrario, te la va a facilitar.
---------------------------
La base de datos, trata de ponerla en la subcarpeta "Datos" junto con las tablas.
Y el resto de la pregunta no ta la entendí.
De todos modos no te preocupes mucho por las carpetas, ubica los archivos donde quieras (pero en forma ordenada) y asegurate que se encunentren en la ruta del SET PATH TO...
Un saludo
Fernando ALVAREZ
La Pampa - Argentina
Antes que nada gracias por tu ayuda.
Pero por ejemplo yo puedo hacer lo que medicces desde el entorno abro las tablas que voy a utilizar para no tener que utilizar el use (por lo que me dices)pero por ejemplo no me va afectar la programación como ejemplo yo utilizo esto:
select 1
go top
Do whilw.not.eof()
if thisform.cpr.value=tabla1.cp
Muestra datos
Endif
skip
enddo(Considerando que en el Load de miformulario hago esto: select 1 ,use c:\rua\tabla1)
Esto no va a efectar la programación que ya realize, por que nada más las abriría las tablas en el entorno de datos y no las relacionaría o crees que se necesario después de que ya programe.
Otra preguntota : Yo tengo una carpeta donde guardo los formulario aparte, los reportes e imágenes pero cundo genere el ejecutable se cra automáticamente la carpeta y tengo que crear una como es eso donde queda la base de datos,
Espero tu respuestas mil gracias por todos
Hola de nuevo, que lata verdad, pero ahora no me sale hice lo me dijiste y en mi programación por ejemplo cundo le doy buscar un registro o varios por ejemplo:
Select nombre de mi tabla
go top
while.not.eof()
if thisform.cpr.value=tabla1.cp
Muestra datos
Endif
skip
enddo
Me dice aveces me sale no existe ninguna tabla abierta ; y por ejemplo si eliminaba varios registros con una condición me sale debe abrir la tabla en modo exclusivo a que se eferira esto lo hago así:
select tabla1
go top
do while.not.eof()
if thisform.horas.value=tabla1.hr
delete pack
set delete on(con esta instruccion ya no me sale el error que me salia como esta fuera de intervalo, nose si debia a que era aveces el ultimo registro y unico registro en la tabla)pero ahora me sale error en el skip y medice debe pornerlo en modo exclusivo)
endif
skip
enddo
hice como me dijiste abrir las tablas que ocúpo en el formlario en el entorno de datos; oye no sera por que en el Select debe ir tambien la ruta de mi tabla o por que
o dime como debo borrar varios registros que cumplan con X condicion y como borrar uno.
Gracias, Hsat pronto
Magda:
Cuando te dice que no existe ninguna tabla abierta, significa que no la tienes incorporada al Entorno de Datos o no tienes hecho el SELECT tabla_de_datos antes de procesar la tabla_de_datos.
Cuando te dice que debes abrirla en modo exclusivo es porque estas usando el comando PACK o el comando ZAP o el comando INDEX... por lo tanto, NO DEBES USARLOS porque dichos comandos hacen uso exclusivo de las tablas.
Si quieres eliminar registros, usa solamente el comando DELETE y con el comando SET DELETE en ON no los veras mas.
Es conveniente, que tengas una rutina, que periódicamente haga mantenimiento de las tablas. O sea que las abra en modo exclusivo y ejecute el PACK y el INDEX. Dicha rutina debe ser usada cuando no hay otro usuario usando el sistema, por ejemplo, al inicio del día, cuando se enciende el servidor o cuando se hacen los respaldos.
Espero haberte ayudado. Saludos
Fernando ALVAREZ
La Pampa - Argentina

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas