FoxPro/Visual FoxPro - En red... Urgente!

 
Vista:

En red... Urgente!

Publicado por Fernando (7 intervenciones) el 13/09/2003 02:03:49
Que tal!!

Tengo una rutina para borrar unos registros (los leo de otra en base al codigo y los borro en la principal), pero esta tabla principal esta compratida porque funciona el programa en red, ahora la duda es que cuando detecto que un registro esta en uso, puedo usar un SCATTER MEMVAR para copiarlos en otra tabla (los que estan en uso y no puedo borrar en ese momento) o con que otra funcion los puedo copiar?
Ya se que podria marcarlos en la tabla auxiliar si se borraron o no, pero el programa para borrar ya esta hecho, el chiste es evitar modificarlo para condicionar que si no ha sido borrado un registro, al ejecutarlo en otro momento, lo vuelva a intentar... asi solo cambiaria la tabla auxiliar por la tabla en donde se copien los no borrados, y el programa funcionaria normal...
Espero haberme explicado, si no, escribanme aqui, o a mi mail [email protected]
Gracias!!! Saludos!!
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:En red... Urgente!

Publicado por Roman Suazo (2723 intervenciones) el 13/09/2003 08:07:04
Ok, no entiendo bien tu problema, pero cuado trabajas con tablas
compartidas los registros que se usan deben ser bloqueados para que
otros usuario no puedan usarlos o borrarlos simultanemente, esa es
la forma mas correcta. Es decir, cuando un usario va a cambiar un registro debe chequear que el registro no este bloqueado, si es asi
ese usuario bloquea el registro mientras lo use. Mas o menos esa es
la idea checa comanados como:RLOCK( ), FLOCK( ),LOCK( )
SET REPROCESS,UNLOCK, ISRLOCKED( ) ,etc

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:En red... Urgente!

Publicado por Fernando (7 intervenciones) el 13/09/2003 17:27:19
Si ya se, me refiero a que cuando valide que el registro esta bloqueado por alguien más, puedo usar el scatter para sacar una copia de los datos o de un campo del registtro por lo menos para pasarlo a otra tabla y despues intentar borrar todos los de esa tabla (que son los bloqueados por alguien mas en el momento de la ejecucion)
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:En red... Urgente!

Publicado por Roman Suazo (2723 intervenciones) el 13/09/2003 18:54:10
Si se puede, lo probe en mi maquina (no en red).
use el siguiente codigo:

SELEC padre

IF !ISRLOCKED()
=MESSAGEBOX('bloqueamos el registro',32,'Mensaje')
RLOCK()
ELSE
=MESSAGEBOX('El registro esta bloqueado, pero lo usaremos en otra tabla',32,'mensaje')
SCATTER TO MEMVAR
CREATE CURSOR MiTabla (ID N(10))
APPEND BLANK
SELEC MiTabla
GO TOP
GATHER FROM MEMVAR
BROWSE
ENDIF

Obviamente que los cambios que hagas en miTabla no se estan haciendo sobre la tabla original asi que tendras que crear una rutina
que pase los datos entre las tablas. Por cierto, hasta cierto punto parece
buena tu solucion pero creo que a la larga te complicaras mucho y pueden resultar muchos errores y el progrma sera dificil de mantener.
Ademas de los bloqueos por ahi puedes usar un cmapo bandera para le mismo proposito

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