FoxPro/Visual FoxPro - ERROR 1585

 
Vista:

ERROR 1585

Publicado por Ariana (5 intervenciones) el 11/03/2003 13:31:46
TENGO UN SISTEMA EN QUE EN ALGUNOS PROCESOS ME DA EL ERROR 1585 (CONFLICTO DE ACTUALIZACION), EL CUAL CAPTURO A TRAVES DE UNA RUTINA DE ERROR. ¿COMO PUEDO RESOLVER ESTE ERROR UNA VEZ QUE ES CAPTURADO POR LA RUTINA?
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:ERROR 1585

Publicado por Carlos Lott (298 intervenciones) el 11/03/2003 16:14:06
Se ha detectado un conflicto de bloqueo optimista mientras se intentaba actualizar una vista.

Asegúrese de que su clave de actualización es válida.

Si desea confirmar los cambios en las tablas base, llame a TABLEUPDATE( ) con lForce. Esto sobrescribirá los cambios realizados en la tabla de base desde que se hizo la última búsqueda en la vista.

Para descartar los cambios locales hechos en la vista, llame a TABLEREVERT( ).

Este error se debe a que el campo clave no acepta duplicado y debes verificar si su condición es unico, candidato o principal, este puede ser el motivo, cuando te de ese mensaje puede puedes usar el comando tablerevert(.t.) para forzar el cambio o si quieres grabar puedes forzar el proceso de guardar con la instrucció n=tableupdate(.t.) pero no lo es lo recomendable

Saludos

Carlos Lott

Maracay-Venezuela
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:ERROR 1585

Publicado por Ariana (5 intervenciones) el 12/03/2003 15:19:12
GRACIAS POR CONTESTARME.
TE VOY A EXPLICAR MEJOR CUANDO ME OCURRE ESTO. TENGO UN PANTALLA PARA GENERAR ORDENES DE COMPRA (O/C). EL ULTIMO NRO. DE LA O/C GENERADO LO GUARDO EN UNA TABLA DE PARAMETROS. CUANDO VOY A GENERAR UNA O/C BUSCO EL ULTIMO EN LA TABLA DE PARAMETROS Y LO INCREMENTO EN UN Y LO ACTUALIZO.
SI HAY DOS USUARIOS EMITIENDO O/C, LLEGA UN MOMENTO (CASI SIEMPRE A PARTIR DE LA CUARTA O/C GENERADA ENTRE AMBOS) EN QUE CUANDO SE CONSULTA LA TABLA DE PARAMETROS PARA INCREMENTAR LA O/C, NO ME DA LA EL NRO. DE LA O/C QUE ESTA EN LA TABLA DE PARAMETROS SINO LA ANTERIOR, COMO QUE LA GUARDARA EN MEMORIA, ESTO LO SE PORQUE CONSULTE LA TABLA POR EL ADMINISTRADOR Y COLOQUE UN WAIT WIND EN LA FORMA A LA HORA DE CONSULTAR LA TABLA DE PARAMETROS, Y LOS VALORES SON DIFERENTES, Y ES ALLI EN DONDE ME DA EL CONFLICTO DE ACTUALIZACION. ¿POR FAVOR ME PUEDES AYUDAR A RESOLVER ESTE CANGREJO?
GRACIAS

LA CONSULTA LA HAGO ASI:
set reprocess to -1
select comtbpar
go top
if rlock()
*generar número oc.
if empty(comtbpar.n_oc)
*asigna código al primer registro
numero = "1"
else
*existen oc
numero = comtbpar.n_oc
*código del primer registro
maxoc = int(val(n_oc))
*incrementa en uno
maxoc = maxoc + 1
numero = alltrim(str(maxoc))
Endif
numero = rellenar_ceros(numero,7)
replace n_oc with numero
endif
unlock
set reprocess to 1
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