Cuadro combinado que toma los valores de un campo de otra tabla

En primer lugar gracias por tu atención y espero me puedas ayudar.
Tengo una BD en M. Access 2003 que tiene varias tablas relacionadas.
Una de las tablas ALUMNOS tiene un campo que toma los valores en otra tabla denominada CENTROS EDUCATIVOS. En concreto el campo Centro Educativo de la tabla Alumnos es un cuadro combinado donde aparecen los valores del campo Nombre del Centro de la tabla Centros Educativos.
Dentro del formulario ALUMNOS, en propiedades del cuadro combinado Centro Educativo, tengo puesta la propiedad “No limitar a la lista”, así si un centro educativo no esta dado de alta en la tabla Centros Educativos lo puedo poner.
El problema viene que al poner el centro educativo que no está en la tabla Centro Educativo, no se me actualiza esta aunque si aparece en el formulario Alumnos.
He estado mirando en la ayuda y me indica que tendría que poner una macro o procedimiento de evento en la propiedad “Al no estar en la lista” del cuadro combinado Centro Educativo (dentro de la tabla Alumnos) para que así al poner un valor nuevo lo grabe también en la tabla CENTROS EDUCATIVOS.
Para hacer esto me pierdo totalmente, no tengo ningún conocimiento de programación ¿me puedes indicar que debo poner exactamente o como lo harías tú si es de otra forma?

1 Respuesta

Respuesta
2

Disculpa la demora he estado un poco ocupado. Necesitas incluir el siguiente código en el evento AlNoEstarEnlalista

Private Sub cboEmpleado_NotInList(NewData As String, Response As Integer)
Dim intReply As Integer

intReply = MsgBox("El Cliente'" & NewData & _ "' no está en la lista, quiere adiconarlo ?", vbYesNo, "Remisión / Factura")

If intReply = vbYes Then 'Abre el formulario frmClientes pasando los nuevos 'datos en el paramétro OpenArgs

DoCmd.OpenForm "frmClientes", , , , acFormAdd, acDialog, NewData

'Registro añadido cancelamos el procedimiento predeterminado de Access

Response = acDataErrAdded

Else MsgBox "Por favor seleccione un Cliente de la lista", vbInformation, "Remisión / Factuara"

' Tratamos el error y decimos a Access que continué

Response = acDataErrContinue

End If
End Sub

Reemplaza cboEmpleado por el nombre de tu cuadro combinado y el frmCientes por el nombre del formulario de Centros Educativos

En el formulario CENTROS DE COSTO debes incluir el siguiente código en el evento Al cargar:

If Not IsNull(Me.OpenArgs) Then

Me.nit_cc = Me.OpenArgs ' Reemplaza nit_cc por el nombre del campo respectivo.

Endif

Es decir este formulario recibe compo parámetro el CENTRO DE COSTO pasado desde el formulario ALUMNOS.

Lo anterior te permite crear Centros Educativos desde el formularios Alumnos.

Hola de nuevo Eperezfer

En primer lugar muchas gracias pero no me funciona.

He seguido las indicaciones que me has pasado y he puesto.
He realizado todo lo que me indicas y he puesto en el formulario ALUMNOS en la propiedad NO ESTAR EN LA LISTA del cuadro combinado (campo que se denomina CENTRO EDUCACIÓN) he puesto un procedimiento de evento con el ss código:
Private Sub CENTRO DE EDUCACIÓN_NotInList(NewData As String, Response As Integer)
Dim intReply As Integer
intReply = MsgBox("El Cliente'" & NewData & _ "' no está en la lista, quiere adiconarlo ?", vbYesNo, "Remisión / Factura")
If intReply = vbYes Then 'Abre el formulario frm CENTROS EDUCATIVOS pasando los nuevos 'datos en el paramétro OpenArgs
DoCmd.OpenForm "frm CENTROS EDUCATIVOS", , , , acFormAdd, acDialog, NewData
'Registro añadido cancelamos el procedimiento predeterminado de Access
Response = acDataErrAdded
Else: MsgBox "Por favor seleccione un Cliente de la lista", vbInformation, "Remisión / Factuara"
' Tratamos el error y decimos a Access que continué
Response = acDataErrContinue
End If
End Sub

Private Sub Cuadro_combinado154_NotInList(NewData As String, Response As Integer)

End Sub
Y en el formulario CENTROS EDUCATIVOS he puesto el ss código en la propiedad AL CARGAR del propio formulario
If Not IsNull(Me.OpenArgs) Then

Me.nit_cc = Me.OpenArgs ' Reemplaza nit_cc por el nombre del campo respectivo.

End If


Private Sub Form_Load()

End Sub
Entiendo que cuando indicas: “ En el formulario CENTROS DE COSTO” te refieras al formulario CENTROS EDUCATIVOS.
Por si te ayuda, los nombres de todos los campos, formularios y tablas con como te lo indico en mayusculas.
Gracias de antemano

Enviame la base de datos a [email protected] para poderte colaborar. Me gustaría saber de que país haces la consulta.

Buenas tardes de nuevo

Acabo de enviarte la bd por mail. Muchas gracias por tu ofrecimiento.

Hago la consulta desde España.

Cualquier duda me dices y lo dicho muchas gracias

Ya te envíe a tu correo el ejemplo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas