FoxPro/Visual FoxPro - Multiusuario

 
Vista:

Multiusuario

Publicado por Pablo (16 intervenciones) el 29/07/2005 14:14:54
Hola foro, estoy trabajando con 2 form de alta y modificaciones de productos en red:
1. la tabla productos se definen buffers=5, en entorno de datos (exclusive=.F.
2. en load del form: set exclusive off, set multilocks on
3. luego de cargar los campos del formulario, click en boton grabar y genero el registro así: (recordemos ke puedo estar haciendo lo mismo en 2 pcs al mismo tiempo)

SELECT producto

* capturo el ultimo codigo grabado, ya ke se codifica automáticamente numericamente en orden ascendente

SELECT MAX(codigo) as cod FROM producto INTO CURSOR ultimo

* debo preveer ke no se grabe el mismo codigo 2 veces, ya ke la otra pc puede estar haciendo esto tambien en este instante.

STORE ultimo.cod+1 TO newcod

SELECT producto
APPEND BLANK

IF RLOCK()
REPLACE codigo WITH newcod
REPLACE nombre WITH THISFORM.pag.paltarubo.nombreproducto.value
=TABLEUPDATE(.t.)
flush
UNLOCK

else

MESSAGEBOX("No se grabaron los datos",0,"Error!!!")

Endi

¿ESTA BIEN ASI?,¿ES LA MEJOR FORMA?, COMO PUEDO MEJORARLO O COMO SE USARIA BEGIN TRANSACTION Y END TRANSACTION EN ESTE CASO?.como sería en caso de una modificación?

MUCHAS GRACIAS
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:Multiusuario

Publicado por Foxperto (894 intervenciones) el 29/07/2005 15:42:20
Hola Pablo:

Ese codigo te funcionaria a medias, ya que como no bloqueas el ultimo registro, 2 usuarios pueden tener el mismo numero MAX(Codigo).

Te recomiendo y es lo que hago Yo, revisa en los Ejemplos de Solution que vienen en el VFP, el codigo de NEWID().

Prueba y me cuentas.

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