FoxPro/Visual FoxPro - Uso de Buffers

 
Vista:

Uso de Buffers

Publicado por Shirley (95 intervenciones) el 21/09/2005 02:37:02
Hola amigos de la Web:
Consulta cuando se usa buffers y se accede a una misma tabla cual sería la razon para que no se actualice la información en un registro al cual acceden varios usuarios para actualizarlo?
Shirley
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:Uso de Buffers

Publicado por Roman Suazo (2723 intervenciones) el 21/09/2005 03:08:14
No se pueden actualizar los registros a la vez, es decir, primero lo actualiza uno y despues el otro. Este proceso no se hace automaticamente. En otras palabras cuando vas a guardar la informacion con el TABLEUPDATE(), esta funcion bloquea la tabla para el resto de los usuarios. Hasta que la tabla este desbloqueda se podra guardar los datos nuevos.

Para solucionar esto, revisa los datos que te da la funcion TABLEUPDATE, si el dato te indica que la informacion no fue guardada, entonces le mandas un mensaje al usuario indicandole que intente guardar los datos de nuevo...

Ademas checa los comandos SET REPROCESS, BEGIN TRANSACTION,.ROLLBACK, ENDTRANSACTION
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:Uso de Buffers

Publicado por Shirley (95 intervenciones) el 22/09/2005 01:27:19
Mira el código va así:

*Esta es la tabla que está en buffer con bloqueo de tabla optimista con un *registro único que es el contador

select nume
EsperarNFacturaRenta=.T.
do while EsperarNFacturaRenta
select nume
if num_flag
replace num_flag with .F.
tableupdate(.t.)
store padl(int(val(num_fac)+1),10,"0") to Renta
replace num_fac with Renta, num_flag with .T.
tableupdate(.t.)
EsperarNFacturaRenta=.F.
else
loop
endif
enddo
Pero en cuanto un usuario entra solo el primero puede incrementar el contador y el resto recupera un número pero no actualiza el archivo
Estoy usando bien la cuestión de buffers o es que debo incrementar las opciones de TRANSACTION
Por tu ayuda gracias
Sirley
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:Uso de Buffers

Publicado por Roman Suazo (2723 intervenciones) el 22/09/2005 17:54:44
Ok, no entiendo muy bien tu problema. Viendo tus ultimas preguntas veo que lo que buscas es crear un numero secuencial automaticamente. Si eso es lo que deseas aqui te doy mas o menos el proceso de como se hace en algunos casos:

Primero, debes de tener una tabla especial para estos casos. Tendra dos campos: el nombre de la tabla y el ultimo numero autogenerado. El primer campo de caracteres y el segundo numerico. Segundo, creas una funcion o procedimiento que hara lo siguiente: recibira como parametro el nombre de la tabla a la cual le quieras crear el numero autonumerico, las buscas con un LOCATE si el registro es encontrado lo bloqueas (con RLOCK, lo bloqueas para que solo un usuario pueda leer ese registro) autoincrementas el valor en 1, desbloqueas el registro y con el RETURN le regresas el ultimo valor creado al usuario. Con este procedimiento no habra forma de que hayan problemas y te peude servir para todas las tablas que necesten un numero secuencial. No ocupas buffers en este caso.

Checa el SET REPROCESS, LOCATE, RLOCK , UNLOCK, USED, SELEC
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:Uso de Buffers

Publicado por Shirley (95 intervenciones) el 02/10/2005 04:30:22
Muchas gracias lo intentaré

Shirley
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