Como se hace para detectar un registro eliminado para poderlo reactivar

hola experto gracias por toda su ayuda de ante mano

sigo recurriendo a usted

e estado batallando con esto de ase una semana

estoy trabajando con un Cursoradapter1 que esta siendo alimentado desde el servidor donde tengo la base de datos creada en fox pro

elimino un registro, perfecto se desaparece del grid, mi problema es que si trato de insertar un registro con la misma clave me sale un error de registro duplicado, pero no lo detecta la validación de entrada.
en la validación de entrada hago un locate de el registro y me da falso el found(), pero al tratar de insertarlo me da error de clave duplicada.
entonces como hago para detectar el registro eliminado

1 Respuesta

Respuesta
1

Muy grande. Gracias por consultar y espero poder ayudarte.

No recuerdo bien si LOCATE respeta la marca de eliminación o no... mmm! ¿Cómo haces la validación si?

¿Qué tal si en lugar de usar un locate for contás mas bien si hay algún registro ay eliminado con el código clave?

Por ejemplo:

LOCAL lnReg

SELECT tabla

COUNT FOR DELETED() WHILE campodesado = valorainsertar TO lnReg

IF lnReg > 0

MESSGEBOX("El campodeseado ya tiene un valor. No acepta duplicados")

ELSE

**--Acá la acción que deseas

endif

**--//

Esto podría solucionar. Proba y me avisas!

hola gracias por contestar :

el código me quedo así

LOCAL lnReg
SELECT personas
COUNT FOR DELETED() WHILE código = thisform.txtCodigo TO lnReg
IF lnReg > 0
messagebox("El campodeseado ya tiene un valor. No acepta duplicados")
ELSE
messagebox("listo papa")
endif

pero me da error

Operator/operand type mismatch

¿Ese error donde te da? Imagino que en esta linea:

COUNT FOR DELETED() WHILE código = thisform.txtCodigo TO lnReg

Eso es cuando usas un operador para relacionar o validar dos tipos de datos y uno de los datos no coincide con el operador. Por ejemplo: si el campo código es numérico y el tipo de datos del text es carácter... no podes comparar números vs. letras. Verifica que el tipo de datos del text sea igual que el campo. Si no... podes usar una función para convertir. Si el tipo de datos del campo código es numérico (es lo que deduzco) entonces usa VAL() para transformar el tipo de datos del text y así queden numéricos ambos y los podas comparar, así:

COUNT FOR DELETED() WHILE código = VAL(thisform.txtCodigo) TO lnReg

Proba y me avisas! :)

gracias por contestar

saludos desde Managua_Nicaragua

si se quita el error pero ahora me da este

command contains unrecognized phrase/keyword

el código es de tipo character

LOCAL lnReg
SELECT personas
COUNT FOR DELETED() WHILE código = VAL(thisform.txtCodigo.Value) TO lnReg)
IF lnReg > 0
messagebox("El campodeseado ya tiene un valor. No acepta duplicados")
ELSE
messagebox("listo papa")
endif

nota: se me olvido decirte que es toy trabajando con un cursorAdapter
la base de datos esta en un servidor

Al final de la expresión hay un paréntesis. Ese es el error que te marca.

COUNT FOR DELETED() WHILE código = VAL(thisform.txtCodigo.Value) TO lnReg)

Quítalo. La expresión a convertir a VAL es solo THISFORM. TXTCODIGO.VALUE. Ahí cerras paréntesis.

Eso debe solucionar el problema.

Un saludo! :) ¿Sos de Nicaragua también? ¿OO?

si ese era mi error

ahora funciona de maravillas

gracias por dedicar un poco de su tiempo valioso

si también de nicaragua ejejej

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas