Registros repetidos.

Tengo una base de datos en access y quiero detectar al insertar en un formulario si los campos de ese registro ya están repetidos. El formulario en sí, se basa en una tabla con los campos de un Balance de Situación y mis claves son Identificación, CIF, Ejercicio y Trimestre. No puede haber dos Balances para el mismo año y trimestre. Sin embargo cuando inserto el ejercicio y trimestre, si este ya existe me sale el registro que ya había y no es lo que quiero. Lo que necesito es que me diga que ese registro ya existe y que me deje meter otro ejercicio y trimestre distinto.
No se si me he explicado con claridad, espero que me puedas ayudar... Es urgente.
1

1 respuesta

Respuesta
1
Lo que te oasé primero está perfecto. Dígame que no entiende y le explico.
Siento decirte que esto me da errores y no funciona. Ahora se me ha ocurrido hacer un indice con los dos campos que quiero (Ejercicio y Trimestre)para impedir que me inserte registros repetidos y lo hace bien, pero cuando inserta un registro repetido me sale al intentar hacer otra inserción en la misma tabla el error nº 3059 y quiero que no me inserte un registro por defecto ante ese error sino que no inserte nada y que me de el mensaje de que ya existía ese registro.
¿Cómo se puede hacer eso o como puedo arreglar lo de antes?
Para explicarte un poco debes de crear un código o una macro que permita validar si un registro ya existe o no.
En este caso voy a hacer un ejemplo que valida un registro por la cedula y si ya existe me sale un mensaje de que ya existe:
¿Este código lo debe de colocar en las propiedades del campo? ¿Cedula? Para este caso, en el evento después de actualizar :
' Verifica si la cedula de la persona existe
Dim cedula As Double ? variable que recibe la cedula
cedula = CDbl(Me.cedula.Value) ? Campo en el que digita la cédula
Dim rsCedulaPersona As Recordset
Set rsCedulaPersona = New ADODB.Recordset
rsCedulaPersona.ActiveConnection = CurrentProject.Connection
rsCedulaPersona.Open "SELECT Id_cedula FROM personas ", , adOpenKeyset, adLockOptimistic, adCmdText ? Esto va al lado de la línea de arriba
Do Until rsCedulaPersona.EOF
If rsCedulaPersona.Fields("Id_cedula") = cedula Then
MsgBox "Esta Persona ya Existe", vbOKOnly, "Atención"
End If
rsCedulaPersona.MoveNext
Loop
Ahora que debes hacer:
Como esto es una consulta SQL a la tabla personas en este caso.
Debes de activar las siguientes referencias en código Visual Basic en la opción herramientas ítem referencias:
Visual Basic For Aplications
Microsoft Access 9.0 Object Library
OLE Automation
Microsoft ActiveX Data Objects 2.0 Library
Microsoft DAO 3.6 Object Library
Microsoft ADO Ext .2.6 for DDL and Security
Microsoft Jet and Replication Objets 2.6 Library
Eso es todo. ¿Fácil verdad?
Bueno la verdad si sabes un poco de SQL y programación lo sacas rápido.
Lo q me da error es rsCedulaPersona.ActiveConnection = CurrentProject.Connection
Porque yo no tengo un proyecto sino una base de datos. Lo he intentado poniendo CuerrentDb.connection pero me daba error. Además yo tengo dos campos por los que buscar y ambos se pueden repetir en otros registros, lo que no se puede hacer es repetirlos con el mismo CIF de la empresa, creo que es más complicado que lo que tu expones... siento molestarte tanto. A ver si ahora es la buena.
Gracias.
El código que te mandé es perfecto y sirve para validar datos existentes, mira bien en que estas errando y sino te mando una solución más sencilla.
Lo otro es que no importa que sea una bdatos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas