FoxPro/Visual FoxPro - UTILIZAR UNA APLICACION EN RED

 
Vista:
sin imagen de perfil

UTILIZAR UNA APLICACION EN RED

Publicado por DEIMER (6 intervenciones) el 31/08/2016 16:54:42
ALGUIEN ME PUEDE AYUDAR A QUE MI APLICACION FUNCIONE EN RED SOY PRINCIPIANTE EN ESTO Y NO ENTIENDO MUY BIEN LAS INSTRUCCIONES PARA HACERLO LES ADJUNTO MI PROYECTO Y SI TAMBIEN ME PUDIERAN DECIR POR QUE CUANDO EJECUTO EL FORMULARIO SIEMPRE ME SALE QUE ***.IDX YA SE ENCUENTRA Y QUE SI DESEO SOBREESCRIBIRLO
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: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

UTILIZAR UNA APLICACION EN RED

Publicado por Fidel José (657 intervenciones) el 31/08/2016 17:46:24
Las cosas fundamentales
1) no utilices índices IDX. Utiliza los CDX ( INDEX ON (CAMPO) TAG (ETIQUETA)
2) Al abrir tus tablas
USE (lcTabla) IN 0 SHARED
3) Elige un método de bloqueo de registros. Puede ser manual o Buffering, pero tiene que se alguno.
4) Si eliges el método manual, siempre va UNLOCK IN (lcTabla) despues de agregar o modificar un registro.
5) Al finalizar cada sesión de grabación de datos, usa el comando FLUSH

También tendrás que decidir si tu aplicación va a correr distribuida o centralizada.
No puedes generar índices si la tabla se abre en modo compartido (shared)
No puedes abrir una tabla en modo exclusivo si alguien la abrió en cualquer modo.
No puedes utilizar comandos como PACK, ZAP, REINDEX en una tabla en modo SHARED.
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

UTILIZAR UNA APLICACION EN RED

Publicado por DEIMER (6 intervenciones) el 31/08/2016 20:23:41
EN DONDE TENGO QUE PONER EL COMANDO SHARED
EN DONDE DIGA USE (TABLE) ? POR QUE EN LA FORMA PRINCIPAL EN LOAD TENGO
SELECT A
USE (TABLE)
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

UTILIZAR UNA APLICACION EN RED

Publicado por Fidel José (657 intervenciones) el 01/09/2016 00:50:52
No sé con qué versión de FoxPro estás trabajando.
Si trabajas con Visual FoxPro 6, 7 , 8 o 9, la apertura de tablas debe ser:

lcFolder = "\\server\datos\loquesea"
lcTabla = "LaTabla"

USE (ADDBS(lcfolder)+lcTabla ) IN 0 SHARED

* ó, alternativamente
SELECT 0
USE (ADDBS(lcfolder)+lcTabla ) SHARED
* Ambos métodos te aseguran que la tabla se abrirá en un area de trabajo que no está ocupada.
* Esto evita que al abrirse una tabla, se cierra la que ocupaba el área de trabajo en cuestión
*
IF USED(lcTabla)
Messagebox("La tabla "+lcTabla+" está abierta")
ELSE
Messagebox("La tabla "+lcTabla+" no pudo abrirse"
ENDIF

En general, te convendrá usar un PROCEDURE para abrir cualquier tabla. Te paso un ejemplo

Para el ejemplo anterior, quedaría:
lExito = Netuse(addbs(lcFolder)+lcTabla )
if m.lExito
select (lcTabla)

endif

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
PROCEDURE NetUse
LPARAMETERS tcTabla, tlExclusive, tnIntentos ,tcAlias ,TlNotVerbose,tlNoUpDate
*!*	-----------------------------------------------------------------------------
*!*	Procedimiento de apertura de tablas
*!*	tcTabla			Addbs(path)+table_Name
*!*	tlExclusive 		.f. (shared) // tlExclusive (.t.) Exclusive
*!*	tnIntentos		9 por defecto
*!*	tcAlias			Alias con que se usará la tabla
*!*	TlNotVerbose		No presenta mensajes
*!*	tlNoUpdate		.t. Abre la tabla en solo lectura
*!*	-----------------------------------------------------------------------------
 
 
LOCAL lcAlias,;
	lcCursor,;
	lcFileName,;
	lForever,;
	lRetop,;
	NCASOP,;
	loex as Exception
 
 
tcAlias = iif(Vartype(m.tcAlias)#"C","",m.tcAlias)
tnIntentos = EVL(tnIntentos,9)
nCasop = 0
tcTabla = ALLTRIM(m.tcTabla)
lcCursor = JUSTSTEM(m.tcTabla)
lcFileName = FORCEEXT(m.tcTabla,"dbf")
 
lRetop = USED( EVL(m.tcAlias,m.lcCursor) )
IF !m.lRetop
	IF FILE(m.lcFileName)
 
		DO WHILE .t.
			IF EMPTY(m.tcAlias)
				lcAlias=JUSTSTEM(m.tcTabla)
				IF m.tlExclusive
					USE (m.tcTabla) IN 0 EXCLUSIVE AGAIN
				ELSE
					USE (m.tcTabla) IN 0 SHARED AGAIN
		 		ENDIF
			ELSE
				lcAlias = m.tcAlias
 
				IF m.tlNoUpdate
					IF m.tlExclusive
						USE (m.tcTabla) IN 0 EXCLUSIVE AGAIN alias (m.tcAlias) NOUPDATE
					ELSE
						USE (m.tcTabla) IN 0 SHARED AGAIN ALIAS (m.tcAlias) NOUPDATE
				 	ENDIF
				ELSE
					IF m.tlExclusive
						USE (m.tcTabla) IN 0 EXCLUSIVE AGAIN alias (m.tcAlias)
					ELSE
						USE (m.tcTabla) IN 0 SHARED AGAIN ALIAS (m.tcAlias)
				 	ENDIF
				ENDIF
			ENDIF
			IF USED(m.lcAlias)
				lRetop = .t.
				EXIT
			ENDIF
 
			nCasop = m.nCasop + 1
			if nCasop <= m.tnIntentos
				LOOP
			ENDIF
			lRetop=.f.
			nMess = Messagebox(tcTabla+" no pudo abrirse tras "+transform(nCasop)+" intentos.",5,Proper(PROGRAM())
			if m.nmess = 4
				nCasop = 0
				LOOP
			ELSE
				EXIT
			ENDIF
 
		ENDDO
	ELSE
		IF !tlNotVerbose
			MESSAGEBOX("El archivo "+LOWER(m.lcFileName)+" No Existe!",0,PROPER(PROGRAM()))
		ENDIF
	ENDIF
ENDIF
 
RETURN m.lretop
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
sin imagen de perfil

UTILIZAR UNA APLICACION EN RED

Publicado por wences (35 intervenciones) el 01/09/2016 10:24:52
Te devuelto tu programa con anotaciones varias en el código ...

Espero te sirva
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