FoxPro/Visual FoxPro - Bloqueo de tablas o registros

 
Vista:

Bloqueo de tablas o registros

Publicado por Luis Tamez (77 intervenciones) el 22/08/2007 03:58:57
Que tal, me encuentro muy desesperado, siempre he utilizado bases de datos de sql para mis sistemas, en este proyecto me vi forzado a utilizar la propias tablas de fox los dbf, mi aplicacion esta en red para que varios usuarios la utilizen al mismo tiempo y estoy teniendo problemas con los id consecutivos de mis tablas (lo que en sql se resuelve con la propiedad identity de los campos, sql lo incrementa automatico y jamas se van a repetir), ya que todos los usuarios que utilizan el sistema en red corren el mismo proceso siempre, es decir siempre estan haciendo exactamente lo mismo que es captura pedido, y estoy teniendo el problema de que por ejemplo los id de la tabla de pedidos se me estan duplicando, esta de mas explicar el problema que me esta generando el tener dos pedidos con el mismo id. Ya he intentado varias formas que algunos colegas me han sugerido pero no he tenido exito, a continuacion le pongo los ejemplos que he utilizado

Ejemplo 1:

En este ejemplo tengo una tabla llamada idresumencomanda que tiene un campo llamado nxtid, esta tabla siempre tendra un solo registro que es el ultimo id generado para la tabla resumencomanda que es en donde se tiene toda la informcion. Posterior a este codigo hago un insert a la tabla resumencomanda poniendo el valor de var_nxtid al campo de id de la tabla

select idresumencomanda
set order to nxtid
seek(idresumencomanda.nxtid)
if found()
do while !rlock()
enddo
var_nxtid = idresumencomanda.nxtid + 1
if var_nxtid <= 0
select idresumencomanda
repl nxtid with 0
else
select idresumencomanda
repl nxtid with var_nxtid
endif
flush
unlock
ENDIF

Ejemplo 2:

En este ejemplo solo obtengo el maximo numero del campo rc_id de la tabla resumencomanda y le sumo 1 para obtener el siguiente id. Posterior a este codigo hago un insert a la tabla resumencomanda poniendo el valor de var_nxtid al campo de id de la tabla

SELECT resumencomanda
CALCULATE MAX(rc_id) TO var_ultimo
var_nxtid = var_ultimo + 1

estas son las dos formas que he intentado y no me han funcionado ya que me siguen generando id duplicados, les pido de favor me pudieran apoyar dandome algunos ejemplos probados que ustedes colegas les ha resultado con exito.

Saludos y gracias anticipadas
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:Bloqueo de tablas o registros

Publicado por Saul (728 intervenciones) el 22/08/2007 16:22:17
Ok. te explico

Haz un tabla que se llame correlativo
alli pones tu folio que llevas.

Cuando Guardes reeplaza el pedido que llevas es decir
si cuando le das nuevo lleva el 10100
pero cuando guardas checa otra vez el correlativo y dices ahora mi correlativo es
10150 por decir algo y lo reemplazas nuevamente asi te evitas ese problema de duplicidad.

(hablando solo de cabecera.. )
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