FoxPro/Visual FoxPro - abrir tabla en una carpeta que no esta en el servidor

   
Vista:

abrir tabla en una carpeta que no esta en el servidor

Publicado por Alejandro amssys@amssys.com.ar (58 intervenciones) el 06/08/2015 01:24:20
Buenas noches , estoy haciendo un sistema para red y trabajo con tablas temporarios, genero una tabla de forma exclusiva en una carpeta en cada maquina y el sistema esta en un server que tiene por ejemplo la letra s:
ahi estan cargadas las bases de datos y las tablas a compartir. yo tengo una tabla llamada auxfactu que esta dentro de la base de datos que esta en s: , pero la tabla esta en una carpeta en el c: de cada maquina .
yo abro la tabla de esta manera :
use c:\tempora auxfactu alias auxfactu exlusive
y me dice que no encuentra la base de datos que esta en el servidor o sea en la s:
como hago ? , necesito ayuda por favor
Alejandro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

abrir tabla en una carpeta que no esta en el servidor

Publicado por Fidel José (321 intervenciones) el 06/08/2015 02:10:14
Si la tabla está en una carpeta de cada máquina debería ser una tabla libre. O pertenecer a una dbc también local, pero no sé para que.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

abrir tabla en una carpeta que no esta en el servidor

Publicado por Alejandro (58 intervenciones) el 06/08/2015 12:48:58
Buen dia fidel , es para facturar , cada maquina factura y tiene su tabla propia para ir cargando los articulos y cuando termina de facturar se borra para volver a empezar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

abrir tabla en una carpeta que no esta en el servidor

Publicado por Saul (676 intervenciones) el 06/08/2015 16:14:18
Hola Alejandro:

Creo que estas interpretando mal la pregunta de Fidel.. ?' Que quieres hacer ..

Es decir, sabemos ya que tienes una tabla en tu Local (C:\Parametros) .. para que lo necesitas, o que es lo quieres hacer con esto.

Si usas una tabla, LOCAL para poner parámetros para que te llame tu programa, mm por temas de seguridad o algo, pues esta bien, pero si es por temas de guardar algunos registros, creo que el concepto que tienes de multiusuarios esta mal.

Explicarnos tu lógica, y como lo tienes y de allí partimos, mejor si pones algún código para ubicarnos.

Att.

Sha
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

abrir tabla en una carpeta que no esta en el servidor

Publicado por Alejandro (58 intervenciones) el 06/08/2015 16:25:08
Buen dia Saul, yo en mi sistema en clipper que use muchos años ponia todos las tablas de uso campartido las creaba en el servidor , menos las que son temporales , como por ejemplo la carga de articulos de una factura, la vista de una cta cte , etc y esas tablas las ponia en una carpeta que llamo tempora en cada disco c: , el server por ejemplo es s: .
Cuando yo creo el proyecto creo que el error que cometi fue cargar las tablas que van en el c;\tempora en la misma base de datos que las demas que van en el s: entonces cuando llamo la tabla use c:\tempora\auxfactu alias auxfactu exclusive me dice que no encuentra la base de datos , como se hace esto
Desde ya muchas gracias
Alejandro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

abrir tabla en una carpeta que no esta en el servidor

Publicado por Fidel José (321 intervenciones) el 07/08/2015 01:59:12
Supuestamente tendrás una tabla de detalle en tu base de datos (obviamente compartida). Si lo que pretendes es llenar esa tabla con datos, lo puedes hacer de varias maneras, pero nunca necesitas una tabla local:

1) Usar la misma tabla con set multilocks ON, buffering 5 y TableUpdate() al momento de confirmar.

2) Usar un cursor con la estructura de dicha tabla, llenarlo y luego actualizar la tabla en base a los datos del cursor.
2.1 ) Crear el cursor. supongamos que la tabla de detalle se llama "fact_detalle" (generalmente lo haces en el Load del formulario de facturas).
SELECT * FROM FAC_DETALLE WHERE .F. INTO CURSOR MIDETALLE READWRITE
2.2) Llenar el cursor de detalle "MiDetalle" con el mecanismo que fuere
2.3) Agregar los datos del cursor MiDetalle a la tabla "Fact_detalle"
INSERT INTO FAC_DETALLE SELECT * FROM MiDetalle
UNLOCK IN FAC_DETALLE
FLUSH

2.4) Limpiar el cursor:
SELECT MiDetalle
ZAP
Thisform.grdDetalle.refresh && suponiendo que hay un control Grid llamado "grdDetalle".

La ventaja del cursor así creado es que no necesitas tener (ni mantener) una tabla local. Te evita el problema de controlar la estructura de la tabla local si cambió la tabla de destino y trabaja en el directorio temporal de windows.
La única prevención con los cursores es que no puedes utilizar el comado PACK. Para eliminar los datos directamente utiliza ZAP.
Por otra parte, si necesitas poner en el cursor campos que no estan en la tabla (para información del usuario o para coordinar otras operaciones, lo debes hacer al crear el cursor:
SELECT *,SPACE(40) AS NOMBRE,CAST(0 as N(12,2)) as sumas, .F. AS INCLUYE FROM Fac_Detalle WHERE .F. INTO CURSOR MIDETALLE READWRITE
Con esto has agregado 3 campos al cursor creado (Nombre,Sumas e Incluye).
En este caso no puedes utilizar el INSERT SQL como en el ejemplo 2.3) porque te dará un error. Tienes dos alternativas: o indicas los campos que se actualizan o utilzas SCAN / ENDSCAN con SCATTER / GATHER
SELECT MIDETALLE
SCAN
SCATTER TO laDatos
INSERT INTO FACT_DETALLE FROM ARRAY laDatos
ENDSCAN
UNLOCK IN FAC_DETALLE
FLUSH

* Limpiar el cursor
SELECT MIDETALLE
ZAP

Nota:
También funcionaría
SELECT FACT_DETALLE
APPEND FROM DBF("MIDETALLE")
Pero hay que tener en cuenta que el append from bloquea la cabecera de la tabla y no resulta apropiado en una lógica de control de errores como TRY CATCH ENDTRY

En Clipper tampoco era necesario (ni recomendable) tener esa tabla local, aunque su generación en tiempo de ejecución resultaba algo más trabajosa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

abrir tabla en una carpeta que no esta en el servidor

Publicado por Saul Hernandez (676 intervenciones) el 07/08/2015 06:31:10
Bueno lo puedes hacer así..
1
2
3
4
5
xTabl1 = "auxfactu .dbf"
xTablas2 = 'c:\Tempora\'+xTabl1
 
SET EXCLUSIVE ON
USE (xTablas2) ALIAS TuTabla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

abrir tabla en una carpeta que no esta en el servidor

Publicado por Alejandro (58 intervenciones) el 07/08/2015 17:10:19
Muchas Gracias a los dos , lo voy a probar y les dijo
Saludos
Alejandro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ERROR AL ABRIR UNA TABLA EN UN GRID

Publicado por Alejandro (58 intervenciones) el 10/08/2015 19:35:18
BUENAS TARDES A TODOS TENGO UN PROBLEMA A VER SI ME PUEDEN AYUDAR , TENGO UN FORMULARIO DONDE TENGO UN GRID CON UNA TABLA QUE ESTA EN OTRA CARPETA QUE EL PROYECTO , EL PROYECTO ESTA EN \AMSCAM\ Y LA TABLA ESTA EN \TEMPORA\., CUANDO CORRO EL PROGRAMA DESDE LA MAQUINA QUE EL PROYECTO ESTA EN C: FUNCIONA CORRECTAMENTE , CUANDO PASO EL PROYECTO AL SERVIDOR QUE ES S: Y EL PROYECTO ESTARIA EN S:\AMSCAM EN VES DE C:\AMSCAM Y LA CARPETA TEMPORA SIGO ESTANDO EN C: , ME DA EL SIGUIENTE ERROR : ERROR AL CARGAR EL ARCHIVO - NUMERO REGISTRO 4 FORM 1 <O UNO DE SUS MIENBROS> O EL ENTORNO DE DATOS A MOVIDO EL ARCHIVO DE TABLA AUXFACTU.DBF VALIDE BASES CAMPOBASE Y VUELVA A INTERNAR.
LA TABLA QUE ESTA EN EL GRID ES AUXFACTU Y ESTA DENTRO DE LA BASE DE DATOS CAMPOBASE
TENGO OTROS FORMULARIOS DE ESA MANERA Y NO ME DA ERROR
POR FAVOR AYUDA
ALEJANDRO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar