¿Cómo puedo comprobar si un registro ya ha sido cargado en la base de datos antes de insertarlo?

Tengo un formulario de entrada de datos para una tabla y quisiera verificar por intermedio del campo clave o los campos claves si ese registro ya existe en la tabla y dar un mensaje al usuario antes de cargar todos los campos al formulario (si intento grabarlo con los campos claves en caso de que no exista se ejecuta la acción y tengo que actualizar los campos restantes luego, esto me consume más tiempo), La finalidad es minimizar los tiempos de carga de datos. Gracias por su atención se que obtendré una solución satisfactoria

2 Respuestas

Respuesta
1
Si la clave ya existe, no te dejará grabar un nuevo registro.
Lo que ud. dice es correcto. Pero lo que yo no quiero es intrducir todos los datos en el formulario para que me de esa respuesta, pues con solo introducir un campo (clave) del registro yo podría buscar en la tabla y dar en un MSGBOX (El registro ya existe) y ahorrarme el tiempo de cargar toda la información en el formulario para que me de esa respuesta. ¿Si me puedes dar una solución?
No hace falta introducir todos los datos, solamente la clave, grabar y si no da error seguir introduciendo el resto de datos. Si la clave existe dará un error de clave duplicada que es lo que quieres. Puedes darle todas la vueltas que quieras pero esto es lo más sencillo.
Respuesta
2
Te envío el código que había dado en una de mis respuestas anteriores, solo sustituye las palabras (monto(nombre del campo del formulario)),(monto (nombre del campo de la tabla)). (Movimiento(nombre de la tabla)).
Saludos
P.D. Si te sirve por favor finaliza la pregunta y si te quedo duda vuelve a preguntar.
Private Sub Monto_BeforeUpdate(Cancel As Integer)
If (Not IsNull(DLookup("[monto]", "MOVIMIENTO", _
"[monto] ='" & Me!monto & "'"))) Then
MsgBox "El monto ya existe y solo puede ser duplicado por un administrador.", vbInformation, "Monto Duplicado"
Cancel = True
Me!monto.Undo
End If
End Sub
El código me ha funcionado pero tuve que borrarle la variable Cancel porque me da el error "La declaración del procedimiento no coincide con la descripción del evento o el procedimiento que tiene el mismo nombre", el código quedo de la siguiente manera:
Private Sub NroPlano_LostFocus()
If (Not IsNull(DLookup("[NroPlano]", "TablaPlano", _
"[NroPlano]='" & Me!NroPlano & "'"))) Then
MsgBox "El Plano ya existe y solo puede ser duplicado por un administrador.", vbInformation, "Plano duplicado"
Me!NroPlano.Undo
End If
End Sub
Quisiera que me explicaras porque da ese error y una preguntica más "si la clave esta formada por dos campos imagino que debo incluir una comparación adicional con el 2do."
Gracias me ha servido muy bien... creo que realmente eres excelente
Lo del error creo que debe tratarse a que el código que te envíe es para el evento Before_Update (antes de actualizar) y el tuyo es al salir del campo.
Estimado amigo tenias razón en la aclaratoria anterior, disculpa la molestia, la clave esta conformada por dos campos quisiera saber si el segundo campo podría incluirse en la misma pregunta resulta que un plano puede tener varias hojas entonces la clave sería Nroplano y Hoja. Coloque este código pero no me funcionó:
Private Sub NroHoja_BeforeUpdate(Cancel As Integer)
If (Not IsNull(DLookup("[NroPlano]", "TablaPlano", _
"[NroPlano]='" & Me!NroPlano & "'"))) Then
If ("[NroHoja]='" & Me!NroHoja & "'") Then
MsgBox "El Plano ya existe y solo puede ser duplicado por un administrador." & " hoja Nro: " & [NroHoja], vbInformation, "Plano duplicado"
Cancel = True
Me!NroPlano.Undo
Me!NroHoja.Undo
End If
End If
End Sub
Gracias amigo por tu asistencia
A pesar que no me contestaste la ultima aclaratoria la respuesta me ha servido mucho. Espero que más adelante pueda aclarar esta duda. Mi correo es [email protected]. Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas