Access - Si el registro no esta en la tabla

 
Vista:

Si el registro no esta en la tabla

Publicado por susana0000 (54 intervenciones) el 16/11/2007 19:02:48
Hola de nuevo.

Tengo un formulario de facturas de compra, con un subformulario de artículos.

En el subformulario meto la referencia del artículo y me sale su descripción y ultimo precio de compra.
Cuando meto una referencia de un producto que no existe, me gustaría que me abriera el formulario de NUEVO ARTICULO.

¿Como puedo decirle, "si la referencia no está en la tabla"?

Muchas gracias

ayssss que haria yo sin vuestra ayuda!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Si el registro no esta en la tabla

Publicado por Juan Amorós (218 intervenciones) el 16/11/2007 19:46:22
Hola Susana:

1.- En el campo de la REFERENCIA, debes de situarte en las líneas:
LIMITAR A LA LISTA: SI
AL ENTRAR: seleccionar PROCEDIMIENTO DE EVENTO y escribe (entre el Sub y el End Sub):

Me!TUCAMPO.Dropdown ' para que abra la lista


Private Sub EMunicipio_NotInList(DatosNuevos As String, Respuesta As Integer)

' Agregar un Municipio nuevo escribiendo un nombre en el cuadro combinado Municipio.

Dim entMunicipioNuevo As Integer, entNombreTruncado As Integer, cadTítulo As String, entCuadroMensaje As Integer

' Mostrar un cuadro de mensaje preguntado al usuario si desea agregar un nuevo Municipio.
cadTítulo = "El Municipio no está en la lista"
entCuadroMensaje = vbYesNo + vbQuestion + vbDefaultButton1
entMunicipioNuevo = MsgBox("¿Desea agregar un Municipio nuevo?", entCuadroMensaje, cadTítulo)

If entMunicipioNuevo = vbYes Then
' Quitar el nombre nuevo del cuadro combinado EMunicipio para que el usuario
' pueda volver a consultar el control al volver al formulario.
DoCmd.RunCommand acCmdUndo

' Mostrar cuadro de mensaje y ajustar la longitud del valor introducido
' en el cuadro combinado EMunicipio.
cadTítulo = "Nombre demasiado largo"
entCuadroMensaje = vbOKOnly + vbExclamation
If Len(DatosNuevos) > 50 Then
entNombreTruncado = MsgBox("Los nombres de Municipios no pueden ser más largos de " _
& "50 caracteres. El nombre que introdujo se truncará.", _
entCuadroMensaje, cadTítulo)
DatosNuevos = Left(DatosNuevos, 30)
End If

' Abrir el formulario AgregarDepartamento.
DoCmd.OpenForm "CEEI001011", acNormal, , , acAdd, acDialog, DatosNuevos

' Continuar sin mostrar el mensaje de error predeterminado.
Respuesta = acDataErrAdded
End If


End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Si el registro no esta en la tabla

Publicado por Juan Amorós (218 intervenciones) el 16/11/2007 19:46:22
Hola Susana:

1.- En el campo de la REFERENCIA, debes de situarte en las líneas:
LIMITAR A LA LISTA: SI
AL ENTRAR: seleccionar PROCEDIMIENTO DE EVENTO y escribe (entre el Sub y el End Sub):

Me!TUCAMPO.Dropdown ' para que abra la lista


Private Sub EMunicipio_NotInList(DatosNuevos As String, Respuesta As Integer)

' Agregar un Municipio nuevo escribiendo un nombre en el cuadro combinado Municipio.

Dim entMunicipioNuevo As Integer, entNombreTruncado As Integer, cadTítulo As String, entCuadroMensaje As Integer

' Mostrar un cuadro de mensaje preguntado al usuario si desea agregar un nuevo Municipio.
cadTítulo = "El Municipio no está en la lista"
entCuadroMensaje = vbYesNo + vbQuestion + vbDefaultButton1
entMunicipioNuevo = MsgBox("¿Desea agregar un Municipio nuevo?", entCuadroMensaje, cadTítulo)

If entMunicipioNuevo = vbYes Then
' Quitar el nombre nuevo del cuadro combinado EMunicipio para que el usuario
' pueda volver a consultar el control al volver al formulario.
DoCmd.RunCommand acCmdUndo

' Mostrar cuadro de mensaje y ajustar la longitud del valor introducido
' en el cuadro combinado EMunicipio.
cadTítulo = "Nombre demasiado largo"
entCuadroMensaje = vbOKOnly + vbExclamation
If Len(DatosNuevos) > 50 Then
entNombreTruncado = MsgBox("Los nombres de Municipios no pueden ser más largos de " _
& "50 caracteres. El nombre que introdujo se truncará.", _
entCuadroMensaje, cadTítulo)
DatosNuevos = Left(DatosNuevos, 30)
End If

' Abrir el formulario AgregarDepartamento.
DoCmd.OpenForm "CEEI001011", acNormal, , , acAdd, acDialog, DatosNuevos

' Continuar sin mostrar el mensaje de error predeterminado.
Respuesta = acDataErrAdded
End If


End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Si el registro no esta en la tabla

Publicado por Juan Amorós (218 intervenciones) el 16/11/2007 19:55:39
Hola Susana:

Perdona los 2 mensajes INICIALES (me he equivocado de tecla y han salido "disparados" con los ejemplos de municipios que tengo). ESTE ES EL BUENO.

1.- En el campo de la REFERENCIA, debes de situarte en las líneas:
LIMITAR A LA LISTA: SI
AL ENTRAR: seleccionar PROCEDIMIENTO DE EVENTO y escribe (entre el Sub y el End Sub):

Me!TUCAMPO.Dropdown ' para que abra la lista

en la linea: AL NO ESTAR EN LA LISTA:

copia este código:

Private Sub TUCAMPO_NotInList(DatosNuevos As String, Respuesta As Integer)

' Agregar un producto nuevo escribiendo un nombre en el cuadro combinado tucampo.

Dim entCAMPONUEVO As Integer, entNombreTruncado As Integer, cadTítulo As String, entCuadroMensaje As Integer

' Mostrar un cuadro de mensaje preguntado al usuario si desea agregar un nuevo PRODUCTO.
cadTítulo = "El producto no está en la lista"
entCuadroMensaje = vbYesNo + vbQuestion + vbDefaultButton1
entCAMPONUEVO = MsgBox("¿Desea agregar un producto nuevo?", entCuadroMensaje, cadTítulo)

If entCAMPONUEVO = vbYes Then
' Quitar el nombre nuevo del cuadro combinado producto para que el usuario
' pueda volver a consultar el control al volver al formulario.
DoCmd.RunCommand acCmdUndo

' Mostrar cuadro de mensaje y ajustar la longitud del valor introducido
' en el cuadro combinado producto. CAMBIA el 50 por el límite de caracteres que uses tú (está en 3 sitios).

cadTítulo = "Nombre demasiado largo"
entCuadroMensaje = vbOKOnly + vbExclamation
If Len(DatosNuevos) > 50 Then
entNombreTruncado = MsgBox("Los nombres de productos no pueden ser más largos de " _
& "50 caracteres. El nombre que introdujo se truncará.", _
entCuadroMensaje, cadTítulo)
DatosNuevos = Left(DatosNuevos, 50)
End If

' Abrir el formulario Agregar Producto.
DoCmd.OpenForm "FORMULARIOPRODUCTOS", acNormal, , , acAdd, acDialog, DatosNuevos

' Continuar sin mostrar el mensaje de error predeterminado.
Respuesta = acDataErrAdded
End If

End Sub

Deberás CAMBIAR los nombres de los CAMPOS y FORMULARIO por los tuyos.

Si tienes dudas me lo dices.

Saludos

Juan Amorós
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Si el registro no esta en la tabla

Publicado por susana0000 (54 intervenciones) el 19/11/2007 18:37:43
Síiiii, funcíona a la perfección.

Muchísimas gracias.

un saludo

susana
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar