FoxPro/Visual FoxPro - Alta Mutilusuario

   
Vista:

Alta Mutilusuario

Publicado por martin jose (6 intervenciones) el 06/09/2007 03:21:50
Hola! les cuento amigos estoy armando un sistema de manejo de gabinetes informaticos multiusuario.
Y necesito saber como hacer el alta de una reserva en modo multiusuario ya que al hacerla con el tableupdate se me presenta un incoveniente que si otro usuario grabo antes otra reserva me queda por duplicado el codigo de la reserva, yo pensaba que el tableupdate se fijaba que no hubiera cambios en la tabla fisica pero tengo entendido, despues de mucho buscar, que la verificacion es solo a nivel de registro y no de tabla.
El codigo lo genero con (en el init del form)
calculate max(cod_reserv) to xcod
xcod=xcod+1
y... para hacer la registracion hago un insert into... tendrà algo que ver que no use append blank y replace?
Desde ya muchas gracias y si me pueden enviar un ejemplo mejor.
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:Alta Mutilusuario

Publicado por RICARDO (153 intervenciones) el 06/09/2007 09:59:21
Mira si noquieres bloque de tablas, lo mejor es llevar una tabla de contadores, de tal forma que cuando hagas el append blank loincrementes en la talba de id(contadores) asi el siguiente ya no puede usar el mismo.
Problemas: puede que pierdas agun ID en los casos en que el usuario se arrepienta y no grabe el registro, pero a la larga esto no suele suponer problema, que tienes que tener una tabla mas,

Si tuvieras que reorganizar los registrso te seria bastante facil.

Espero que esto te ayude

Un saludo
Ricardo
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:Alta Mutilusuario

Publicado por enrique (1041 intervenciones) el 06/09/2007 14:09:12
El codigo de reserva (en tu caso) lo tenes que generar cuando grabas y no en el init, el proceso de agregar un registro a una tabla es muy rápido por lo que tenes una probabilidad muy baja de que se te dupliquen los códigos.

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

RE:Alta Mutilusuario

Publicado por alexcoinc (449 intervenciones) el 06/09/2007 14:36:43
POR DEFECTO DEBES TENER un archivo (TABLA) CON UN CAMPO QUE MANEJE LAS SECUENCIAS

SELE CONTADOR && tabla de secuencias
num=secuencia && esta secuencia es un campo de la tabla de contenedores, en lo que va en
&& ese momento el contador
nume=regsecue(2,num)

esta variable 'nume' la grabas en tus archivos, como la secuencia siguiente y no
corres riesgo de que otro usuario te repita este numero.

*--------------------
FUNCTION REGSECUE
parameters claa,consesi
DO CASE
CASE claa=1
consesi=secuencia+1
CASE claa=2
DO WHILE .T.
IF consesi>secuencia and RLOCK()
cam_can('secuencia',consesi)
exit
ELSE
consesi=consesi+1
ENDIF
ENDDO
ENDCASE
RETURN consesi

*--------------------
FUNCTION CAM_CAN
PARAMETERS nca,nva
DO WHILE .T.
IF RLOCK()
REPL &nca. with nva
UNLOCK
EXIT
ENDIF
ENDDO
RETURN


!!ESPERO TE SIRVA. alexcoinc@gmail.com (Colombia - Caldas - Manizales)
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:Alta Mutilusuario

Publicado por martin (6 intervenciones) el 08/09/2007 07:31:47
Muchas Gracias me funciono de maravillas solo que con el dbf contador tuve que utilizar used shared y no sele ya que si lo cargaba en el entorno de datos del form me seguìa dando la misma duplciacion de codigo, aparte de este detalle me funciono de maravillas de nuevo gracias y no dudes en consultarme lo que quieras
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