Como evitar registros duplicados en visual foxpro

Tengo el siguiente problema y agradecería me pudieran ayudar

Como puedo hacer para que a la hora de ingresar un dato.. En un campo de texto...

El sistema me arroje un mensaje que que ya existe un registro.. En dado caso de que ya exista, esto para evitar registros duplicados

No me quedo muy claro en esta sección

http://www.todoexpertos.com/categorias/tecnologia-e-internet/programacion/visual-fox-pro/respuestas/2612235/evitar-registro-duplicado-en-campo-vfp

1 respuesta

Respuesta
1

Tendrías que hacer una búsqueda antes de que grabe el dato y tener un indice del campo que quieres ingresar por ej yo tengo la tabla datos y el campo apellido con indice y quiero que si cuando ingreso el apellido al grabar me diga ese apellido ya se encuentra en el registro tendrías que al botón guardar hacer lo siguiente te doy el ej con los nombres que t mencione antes, el textbox es donde vos ingresas el apellido que es el que va a comparar en el registro:

SELECT datos
SET ORDER TO apellido
SEEK (Thisform.textbox.Value)

If found() Then

MESSAGEBOX("EL APELLIDO QUE USTED INGRESO YA SE ENCUENTRA REGISTRADO")

RETURN .F.

ELSE

La rutina que usas para grabar

Gather memvar

Tableupdate o la que fuera

END IF

En el init del formulario donde tenes este botón tendrías que poner SET EXACT ON para que la búsqueda sea exacta y no te de falsos positivos

tengo algo parecido

este es el código de mi botón de guardar

SELECT basviat
SET ORDER TO docoreco
SEEK (Thisform.txtdocoreco.Value)
If found() Then
MESSAGEBOX("EL DOCORECO QUE USTED INGRESO YA SE ENCUENTRA REGISTRADO")
RETURN .F.
ELSE
APPEND BLANK
REPLACE basviat.mes with thisform.combo1.value
REPLACE basviat.Fec_ingr_d with thisform.txtFec_ingr_d.value
REPLACE basviat.numer_ur with thisform.combo2.value
REPLACE basviat.volante with thisform.txtvolante.value
REPLACE basviat.docoreco with thisform.txtdocoreco.value
REPLACE basviat.importe with thisform.txtimporte.value
REPLACE basviat.cheque with thisform.txtcheque.value
REPLACE basviat.observacio with thisform.txtobservacio.value
endif
THISFORM.REFRESH()

solo que al escribir en el cuadro de texto....cuando hace la búsqueda también me lo toma en cuenta. así que siempre me manda el mensaje de que ya existe. (no se si me explico)

tendrá algo que ver la propiedad de ControlSource.

muchas gracias

saludos

Si sacale la dirección de los datos en en control source del textbox porque esto por 2 motivos el 1ero vos al estar usando el replace le estas diciendo que el campo tal de la tabla tal use los datos del textbox correspondiente que es lo mismo que el control source y el otro motivo es que vos estas modificando al tabla directamente, no estas usando buffering entonces todo los que escribas porque siempre vas a tener que tener un registro en blanco t lo va a escribir directamente sobre el registro por eso t lo encuentra siempre. Sacale la propiedad control source a los textbox y en el init del formulario ese pone SET EXACT ON para que sea exacta la busqueda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas