FoxPro/Visual FoxPro - Foxpro 9 en red con tablas shared y exclusive

 
Vista:
sin imagen de perfil
Val: 313
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Foxpro 9 en red con tablas shared y exclusive

Publicado por Jose Francisco (166 intervenciones) el 08/11/2018 22:32:38
Buenas tardes estimados , estoy implementando mi sistema en red, algunas tablas son shared,, y otras excllusieve por el tema de delete y pack, o algún Zap.
Estuve leyendo bastante en la web,
, unas de las opciones sacar el packpeto lo necesito dejar,,, Y otras es utilizar used (), que me sugieren ? Aguardo respuesta ,gracias !
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
sin imagen de perfil
Val: 62
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Foxpro 9 en red con tablas shared y exclusive

Publicado por Jose (129 intervenciones) el 08/11/2018 22:42:56
Hola, disculpa no te entendi el requerimiento, puedes detallar un poco mas.
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
sin imagen de perfil
Val: 313
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Foxpro 9 en red con tablas shared y exclusive

Publicado por Jose Francisco (166 intervenciones) el 08/11/2018 23:22:42
Probé mi sistema en red y me da error por estar algunas tablas en exclusive, que alternativa utilizo , gracias ?
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
Imágen de perfil de Leonardo Daniel A.
Val: 1.115
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Foxpro 9 en red con tablas shared y exclusive

Publicado por Leonardo Daniel A. (497 intervenciones) el 09/11/2018 02:54:30
Pues si el requerimiento es ese... tendras que estarlas cerrando y abriendo cuando se necesite... pero porque usas el pack, yo solo lo usaba cuando entraba o salia de la aplicacion, o ponia una opcion en un menu...... solo oculta los registros borrados con el SET DELETE
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
sin imagen de perfil
Val: 313
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Foxpro 9 en red con tablas shared y exclusive

Publicado por Jose Francisco (166 intervenciones) el 09/11/2018 03:09:53
Ok, gracias , si,,,eso ya lo hice de ocultar los registros borrados con delete,, y programé el pack cuando salgo pero si del otro lado de la red está el sistema abierto por otro usuario, me da error al salir , voy a tener que poner una opción de mantenimiento de tablas en el menu principal como vos decís , pero solo ejecutarlo cuando esté un solo usuario en red.
También quería probar el comando usted(), lo pondría en el menú de mantenimiento de tablas , que cuando otro usuario esté trabajando o sea que estén las tablas abiertas , el comando used() me indique que hay que esperar a que se de deslogue , para poder utilizar la opción de mantenimiento, donde hace el pack de varias tablas que te parece?
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Foxpro 9 en red con tablas shared y exclusive

Publicado por Fidel José (657 intervenciones) el 10/11/2018 00:29:18
La función USED(lcAlias) te indica si la tabla o cursor está o no abierto en un área de trabajo de tu equipo solamente. No te dice absolutamente nada sobre otros usuarios que puedan tener abierta la tabla.
Por eso se necesita algo como lo indicado por Abel, aunque se puede mejorar un poco.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
PROCEDURE pack_table
*-------------------
LPARAMETERS tcTabla
TRY
	LOCAL lnTypeUse,;
		loError as Exception,;
		loUse as Exception
 
	lnTypeUse = 0
 
	* Si tengo la tabla abierta la cierro
	IF USED(m.tcTabla)
		lnTypeUse = IIF(ISEXCLUSIVE(m.tcTabla),2,1)
		USE IN SELECT (m.tcTabla)
	ENDIF
 
	* Intento abrir en modo exclusivo
	* si no se puede salta al CATCH
	USE (m.tcTabla) IN 0 EXCLUSIVE
 
	* Si no hubo error, hago el PACK y vuelvo a cerrar la tabla
	SELECT (m.tcTabla)
	PACK
	USE IN SELECT (m.tcTabla)
 
CATCH TO loError
	loError.UserValue = PROGRAM()
	MESSAGEBOX("La tabla "+m.tcTabla+" está en uso por otro usuario",0,LOWER(PROGRAM()),2000)
FINALLY
	* Vuelvo a abrir la tabla (si estaba abierta)
	* en el modo indicado por lnTypeUse
	TRY
		DO CASE
			CASE EMPTY(m.lnTypeUse)
 
			CASE m.lnTypeUse = 1
				USE (m.tcTabla) IN 0 SHARED
			CASE m.lnTypeUse = 2
				USE (m.tcTabla) IN 0 EXCLUSIVE
 
		ENDCASE
	CATCH TO loUse
		MESSAGEBOX("No se pudo reabrir la tabla "+m.tcTabla,0,LOWER(PROGRAM()),2000)
	FINALLY
 
	ENDTRY
ENDTRY
ENDPROC
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
Imágen de perfil de Abel
Val: 642
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Foxpro 9 en red con tablas shared y exclusive

Publicado por Abel (286 intervenciones) el 09/11/2018 14:30:45
Es mejor así; ponerlo cuando se cierre el sistema y para evitar errores usa TRY ENDTRY; por ejemplo
1. Abre la tabla en modo exclusivo, si te da error mandas un mensaje; cuando se libere de otras máquinas ya hará el pack en cualquiera de ellas...

1
2
3
4
5
6
7
Try
    Select Select(1)
    Use <Tabla> Exclusive
    Pack
Catch To oError
	Wait Window "Tabla en uso"+Chr(13)+oError.Message Timeout 0.5
Endtry
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 313
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Foxpro 9 en red con tablas shared y exclusive

Publicado por Jose Francisco (166 intervenciones) el 10/11/2018 00:33:59
Gracias Sres Abel y José Fidel, ni bien pueda lo pongo en práctica y les aviso cómo me fue.
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
sin imagen de perfil
Val: 313
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Foxpro 9 en red con tablas shared y exclusive

Publicado por Jose Francisco (166 intervenciones) el 10/11/2018 00:59:50
Una consulta , son varias tablas que tengo que poner en la salida de mi programa y hacer el pack, las puedo poner todas juntas al medio de las instrucciones? O hay que realizar el método tabla por tabla ?
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
Imágen de perfil de Abel
Val: 642
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Foxpro 9 en red con tablas shared y exclusive

Publicado por Abel (286 intervenciones) el 10/11/2018 13:15:07
Puedes usar ADIR() para leer todas las tablas del disco o bien puedes crear una tabla con todos los nombres de tus tablas, luego la metes en un bucle para que le haga PACK a todas y cada una.

1
2
3
4
5
6
7
8
9
10
SELECT <TablaConNombresDeTablas>
SCAN
    Try
        Select Select(1)
        Use (TablaConNombresDeTablas.CampoNombre) Exclusive
        Pack
    Catch To oError
        Wait Window "Tabla en uso"+Chr(13)+oError.Message Timeout 0.5
    Endtry
ENDSCAN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar