FoxPro/Visual FoxPro - VER CONECCION DE RED EN VFP

 
Vista:
sin imagen de perfil

VER CONECCION DE RED EN VFP

Publicado por Mario (5 intervenciones) el 19/05/2017 02:18:18
Hola Amigos de la WP.
Mi pregunta es sencilla. ¿Cómo puedo saber , desde un form o prg de VisualFox9, si una conección de red Lan en Windows está disponible antes de abrir las tablas?

Explico: tengo 3 PC y una de ellas tiene las tablas del sistema, haciendo de server.
Cuando desde las 2 pc "clientes" quiero iniciar mi sistema, empiezo a abrir tablas.

Pero cuando la coneccion no está disponible por alguna razon (el "server" está "suspendido", o la unidad lógica no está funcionando -para las pc clientes, las tablas están en una unidad "B:\" -) se tilda el vfp y tengo que abrir el administrador de tareas y forzar el cierre.

En resumen sería así:
IF CONECCION funciona
SELEC 0
USE TABLA 1
...... ETC
ELSE
MESSAGEBOX("la coneccion no funciona")
ENDIF

O si esto está mal encarado y me quieren dar mejor idea, será bienvenida.
Saludos,
Mario
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

VER CONECCION DE RED EN VFP

Publicado por Fidel José (657 intervenciones) el 19/05/2017 15:19:47
Hola Mario

Para un modelo de tablas compartidas en un equipo repositorio, lo aconsejable es no mapear el recurso compartido, sino utilizar el nombre de recurso, o si tenés configurado el "servidor" con IP fija, podés utilizar la IP en lugar del nombre de equipo:
lcRoot_Name = "\\Server_Name\Resource_Name"
lcRoot_IP = "\\192.168.0.1\Resource_Name"


Puedes utilizar una rutina como la siguiente en el inicio del sistema. Si no encuentra la dirección indicada, puede tardar un par de segundos en informar el problema, lo que depende de cómo trabaja la Lan.

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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
* Rutina de inicio del sistema
 
LOCAL loObjREsp as Object,;
	lcFolder_InServer,lcFileName,;
	lcString,;
	lQuit
 
* En la carpeta local de inicio tendrás algún archivo o tabla
* donde está guardado el acceso al servidor.
* Acá supongo que es un archivo de texto llamado "server_access.cfg" y tiene una tag:
* <folder>\\central\theodore</folder>
* lcFileName puede ser constante
 
lcFileName = "plancon\control.dbf"	&& en este caso está en una subcarpeta
IF FILE("server_access.cfg")
	lcFolder_InServer = STREXTRACT(FILETOSTR("server_access.cfg"),"<folder>","</folder>")
ENDIF
loObjResp = thisform.test_server(m.lcFolder_InServer, m.lcFileName)
IF VARTYPE(loObjREsp)="O"
	IF loObjResp.REsult
                * Si el resultado es exitoso, se graba el archivo "server_acces.cfg"
		STRTOFILE("<folder>"+loObjResp.Root+"</folder>","server_access.cfg")
	ELSE
		lQuit = .t.  && lo único razonable para hacer si no se puede establecer la conexión.
	ENDIF
 
 
ENDIF
loObjResp = null
IF m.lQuit
	QUIT	&& no hay qué hacer, más que salir del sistema
ENDIF
 
 
 
PROCEDURE Test_Server
*---------------------------------------------------
LPARAMETERS tcRoot_Server,tcFileTest
TRY
	LOCAL loFso as Object,;
		loex as Exception,;
		lcFileName_Test as String,;
		lcMessage as String,;
		lDoit as Boolean,;
		lnMess as Number,;
		loResp as Object
 
	loResp = NEWOBJECT("Empty")
	ADDPROPERTY(loResp,"Result",.f.)
	ADDPROPERTY(loResp,"Root",m.tcRoot_Server)
 
	loFso = NEWOBJECT("Scripting.FileSystemObject")
 
	*<solo para la prueba>
		tcRoot_Server = EVL(m.tcRoot_Server, "\\Server_Name\Shared_resource\Folder_Name")
		tcFileTest = EVL(m.tcFileTest,"control.dbf")
	*</solo para la prueba>
 
	lcFileName_Test = ADDBS(m.tcRoot_Server)+m.tcFileTest
 
	lcMessage = "Ruta Indefinida"
	ldoit = !EMPTY(m.tcRoot_Server)
	IF m.lDoit
		lcMessage = "No se encuentra la ruta "+m.tcRoot_Server
		lDoit = loFso.FolderExists(ADDBS(m.tcRoot_Server))
	ENDIF
	IF m.lDoit
		lcMessage = "La carpeta indicada no parece el destino correcto"+CHR(13);
				+ "TestFile="+m.lcFileName_Test
 
		lDoit = loFso.fileExists(m.lcFileName_Test)
	ENDIF
	IF !m.lDoit
		DO WHILE .t.
			lcMessage = m.lcMessage + CHR(13) ;
				+ "Desea buscar la ruta de acceso?"
			lnMess = MESSAGEBOX(m.lcMessage,4,"Mensage de Sistema")
			IF m.lnMess # 6
				EXIT
			ENDIF
			tcRoot_Server=GETDIR(FULLPATH(""),"Carpeta de archivos del sistema","Sistema » Ubicación de los Datos",16+32+64)
			IF !EMPTY(m.tcRoot_Server)
				lcFileName_Test = ADDBS(m.tcRoot_Server)+m.tcFileTest
				lcMessage = "La carpeta indicada no parece el destino correcto"+CHR(13);
					+ "TestFile="+m.lcFileName_Test
				lDoit = loFso.fileExists(m.lcFileName_Test)
				IF m.lDoit
					lcMessage = ""
					EXIT
				ENDIF
			ENDIF
		ENDDO
	ENDIF
	loResp.result = m.lDoit
	loResp.Root = m.tcRoot_Server
 
CATCH TO loex
	loex.UserValue = PROGRAM()
	ShowError(loex)
	lDoit = .f.
FINALLY
	loFso = null
ENDTRY
RETURN loResp
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

VER CONECCION DE RED EN VFP

Publicado por Eduardo Ureña (19 intervenciones) el 19/05/2017 22:42:24
Como lo dice el colega. La forma más simple es verificar si el sistema puede ver una tabla. Sin importar si está mapeada o no, el valor lógico negativo resultante en la función File() te dirá si está o no disponible la red.

Saludos
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

VER CONECCION DE RED EN VFP

Publicado por Mario (5 intervenciones) el 20/05/2017 01:40:52
Eduardo, gracias por molestarte en contestar.
Aprecio tan simple y eficiente idea. La consideraré junto conla de Fidel.
Gracias!
Mario
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

VER CONECCION DE RED EN VFP

Publicado por Mario (5 intervenciones) el 20/05/2017 01:39:32
José, muy agradecido por tu trabajosa colaboración!
Gracias por todo tu trabajo e interés.
La tomaré en cuenta.
Mario
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

VER CONECCION DE RED EN VFP

Publicado por Fernando (31 intervenciones) el 24/05/2017 23:01:22
en la pc que tiene las bases de datos osea el servidor, las puse en una carpeta y la identifico como si fuera un disco rigido v: y luego lo comparto y habro shared y anda bien .




Captura
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

VER CONECCION DE RED EN VFP

Publicado por Mario (5 intervenciones) el 25/05/2017 02:09:42
Sí, Fernando, gracias. Así lo tengo hecho desde hace años. Pero a veces, no sé porqué, el Windows cuando bootea, no vuelve a conectar la unidad "v:" con ese directorio donde tengo las tablas. Y es ahí donde el VisualFox se cuelga.
Gracias por tu respuesta.
Mario
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

VER CONECCION DE RED EN VFP

Publicado por Fernando (31 intervenciones) el 26/05/2017 16:12:25
si es verdad, a veces pasa, pero se soluciona al toque dandole un clic a coneccion de disco, igualmente fijate que el recurso compartido lo tegas bien configurado. Como tambien el codigo llamo al path por set path to v: y No : set path to"//nombrerecurso//v"



Captura
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