Que se habrá formulario si no existe un usuario.

Bueno sucede que tengo dos tablas una es asignarservicios la otra personalobra y finalmente un formulario de ingreso de servicios que depende de la tabla asignarservicios.

Adjunto capturas.

Lo que yo busco es que si al momento de ingresar el dni en el formulario revise que exista el dni en la tabla personalobra si este dni ( el usuario) no se encuentra en esta tabla, me harba el formulario de carga de usuarios "PersonalObra"

1 Respuesta

Respuesta
2

Supongamos que el cuadro de texto donde escribes el DNI se llama Ingreso. En sus propiedades-eventos-Antes de actualizar crea un procedimiento de evento y entre Private Sub y End Sub escribe

If Nz(DCount("*", "personalobra", "DNI='" & Me.Ingreso & "'")) = 0 Then
MsgBox "Ese DNI no existe", vbOKOnly, "Ay señor, señor"
DoCmd. CancelEvent
DoCmd. OpenForm "PersonalObra",,,, acFormAdd
End If

Lo que hace es comprobar en la tabla PersonalObra si ese DNI que has escrito existe. Si no existe, te sale el mensaje y se abre el formulario PersonalObra en un registro nuevo para que "des de alta" el nuevo operario. Cierras ese formulario y ya está.

Hola gracias por la pronta respuesta pero algo hago mal

Lo puse tal cual se llaman los campos de donde debe extraer la información para verificar

En que estoy fallando amigo

Ya lo solucione amigo, un montón de gracias.

Así que do el código

Private Sub IdDNI_BeforeUpdate(Cancel As Integer)
If Nz(DCount("*", "personalObra", "[Id DNI]='" & Me.DNI & "'")) = 0 Then
MsgBox "Ese DNI no existe", vbOKOnly, "Ay señor, señor"
DoCmd.CancelEvent
DoCmd.OpenForm "Personal Obra", , , , acFormAdd
End If
End Sub

Muchas gracias por tu valioso tiempo..

hola..tu ayuda ha sido genial pero resulta , lo que deseo ahora es que ese mismo código a la hora de salir el mensaje me pregunte si quiero abrir o no el formulario de registro, ya que aveces hay demasiadas personas y por una que no exista en los registro quita mucho tiempo, a lo mismo me gustaría que preguntase, ya que así le podría decir que si o no, dependiendo del tiempo que tenga en el momento.

de ante mano muchas gracias 

Supongamos que tengo la tabla

Y tengo un formulario donde voy a escribir un DNI

Como no sé cuando quieras que te salga el mensaje se lo he puesto en el evento Antes de actualizar del cuadro de texto, que se llama Texto0.

Cuando pulso Enter

Si le digo Dí, me abre el formulario Otra en vista diálogo y en un registro nuevo.

Por el contrario, si le dijera que No, no hace absolutamente nada.

El código es(pero se le podría poner cualquier cosa, como también se le podría decir que si el DNI existe te abra...)

Private Sub Texto0_BeforeUpdate(Cancel As Integer)
If Nz(DCount("*", "otra", "dni like '" & Me.Texto0 & "'")) = 0 Then
Dim respuesta As Byte
respuesta = MsgBox("Ese DNI no existe. ¿Quiere darlo de alta?", vbYesNo + vbExclamation, "Habla ahora o calla...")
If respuesta = vbYes Then
DoCmd.OpenForm "otra", , , , acFormAdd, acDialog
ElseIf respuesta = vbNo Then
Exit Sub
End If
End If
End Sub

Gracias por tu respuesta amigo pero falto un detalle que al ponerle que no no cargue el registro del dni, pero en cambio al darlo de alta en el formulario de personal si cargue el registro, por que con el código que me has dado al poner que no carga el registro y ademas si le doy Escape me lo carga vació

No lo he entendido bien, pero podrías poner las dos líneas como

ElseIf respuesta = vbNo Then
Docmd. Cancelevent

Es decir, el cursor se queda en el cuadro de texto(texto0) para que cambies el valor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas