Validar registros para que no se dupliquen

Espero y me puedan ayudar con este problema:
Tengo un proyecto universitario en visual basic conectado a una base de datos en access utilizando el data control como medio de conexión entre ambas. Guarda, modifica, agrega, elimina y todo lo demás va perfecto, el problema radica en que cuando ingreso datos nuevos que ya se encuentran registrados (la clave principal de la tabla a la que le agrego el registro) me sale un error y se me cierra el programa. ¿Cómo hago para que me valide la clave principal de la tabla a la que estoy a gregando es decir que no me permita el registro duplicado? Ya intente en access poniéndole sin duplicado pero a nivel de programación me sale un error y se cierra igual. También intente con este código:
Datacontrol.RecordSource = "select * from Tarjeta_Epidemiologica where Caso_numero = '" & Text_Cod_Paciente & "'"
     Datacontrol.Refresh
If Data_Moverse.Recordset.EOF = False Then
     MsgBox "EL CASO NUMERO " & Text_Cod_Paciente & " YA ESTA REGISTRADO"
else
Datacontrol.UpdateRecord
     MsgBox "La Tarjeta ha sido Guardada", vbExclamation, "Aviso Importante"
Todo esto lo puse en el botón de guardar para que al momento de guardar me diga si esta registrado y si no me guarde. Pero no sirve todos los códigos que inserto que no están en la base de datos me dice que ya esta registrado nunca me guard diciendo que se ha guardado es un desorden.

6 respuestas

Respuesta
1
Puedes controlar los errores sin que se rompa el programa de esta forma:
On error goto error
(Código donde da error a la hora del duplicado)
Luego terminas ese módulo de esta forma:
exit sub
error:
msgbox "El registro está duplicado"
end sub
De esta forma consegfuiras que cuando exista un duplicado de datos, en vez de salir del programa con un error, que se detecte este error y te mande un mensaje de que la operación no se puede aplicar, y seguir la ejecución del programa sin que se ejecute las operaciones posteriores al error.
Respuesta
1
Evalúa si el recordset tiene datos con el recordcount, en caso de distinto de cero es que ya existe y si es cero lo guardas
Disculpa pero no entiendo
si cuando haces Data_Moverse.Recordset.EOF es falso es porque existe el registro, es decir, porque tienes registros, pero si no tienes registros la propiedad eof no la evaluara correctamente
lo que te propongo es que has el sql en un recordset y hagas
set recordset  = openrecordsert("select * from Tarjeta_Epidemiologica where Caso_numero = '" & Text_Cod_Paciente & "'")
if recordset.recordcount <> 0 then ya existe y si no guardar
Respuesta
1
Utiliza un On Error goto etiqueta
En etiqueta, colocas el código para manejar el error.
Respuesta
Simplemente inserta y captura el posible error que te devuelva.
Pon un control de errores y comprueba el código y mensaje. Con eso sabes si el registro ya existe o no y lanzas el mensajes que quieras al usuario.
Respuesta
Yo lo que hago en la BDatos es poner tu código o id como llave principal(en vista diseño te aparece el icono de una llave) y mandas llamar el código del ultimo registro y le sumas 1 desde visual basic. Así el sistema te genera código automático antes de insertar tus datos
¿Y qué código puedo usar?
Si aprendiste este lenguaje en tu universidad, tuvieron que enseñarte a extraer datos, solo te ayudo con la propiedad del objeto
Objeto. Tabla. Tables ("nombre_tabla"). rows(0)(0)
Respuesta
-1
Según lo que veo lo estas haciendo bien,
¿Vos utilizas el creador de formularios de VB6?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas