Clipper/FiveWin - Guardar

 
Vista:
sin imagen de perfil

Guardar

Publicado por Cesar (28 intervenciones) el 14/07/2006 16:50:22
Buenos dias amigos del foro, les hago una consulta debido a un problema que tengo, en una red de tres maquinas, una de ella hace de server con windows 2000, las otras dos como terminales una con windows 98 y la otra con windows 95, lo que quiero saber es suponiendo que las dos maquinas facturan, tiene cargados una lista de productos una vez que confirmo la operacion la maquina imprime y luego empieza a guardar los respectivos datos en los archivos del servidor en ese momento que esta guardando la otra terminal tambien empieza a guardar los datos en el servidor y es aqui donde les consulto, la maquina que hace, termina de guardar uno y despues empieza a guardar el otro o interrumpe al que esta guardando y comienza a guardar estos ultimos datos.
Los saludo y gracias por el tiempo dedicado.
Cesar, Argentina
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

RE:Guardar

Publicado por Gabriel Pascual (913 intervenciones) el 14/07/2006 21:51:56
Aqui entran en funcion los bloqueos, la maquina B no puede guardarlos datos mientaras la maquina A tenga bloqueado el archivo.

Supongamos que la maquina A comienza primero a hacer la factura, en el momento de comenzar a guardar los datos FORZOSAMENTE tienes que llamar a la funcion FLOCK() la cual bloqueara el archivo mientras el ordenador A esta haciendo el guardado de datos.

Si el ordenador B intenta guardar los datos, el programa que corre en B tiene que hacer otro FLOCK(), esta funcion regresa un valor .T. si se pudo bloquear el fichero, .F. si no se pudo bloquear, mientras A tenga abierto el fichero, FLOCK() regresara .F. para B, asi que puedes hacer un bucle que este revisando el valor de FLOCK() cuando este sea .T. entonces comienzas a hacer el guardado en B:

DO WHILE .T.
IF FLOCK()
haz el guardado aqui
EXIT
ELSE
pon un mensaje aqui que e fichero esta en uso, que espere un momento
ENDIF
ENDDO
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

RE:Guardar

Publicado por Ricardo Ramirez E. (1 intervención) el 15/07/2006 21:13:06
Cesar....
La solucion de Gabriel es algo ortodoxa.... quias lo mejor seria usar objetos.. en las DBfs
revisa la clase tDatabase.prg ella ... controlo esto de los bloqueos..en registros.

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

RE:Guardar

Publicado por Gabriel Pascual (7 intervenciones) el 17/07/2006 04:06:13
Ricardo:

No sabemos si utiliza FW, si no lo utiliza, como que dificil usar objetos DBF.
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