Cuadro combinado que llena datos de otro automáticamente mediante código

Tengo un inconveniente con un código de microsoft access el cual esta en el evento (al no estar en la lista) de un cuadro combinado el código me sirve para añadir un nombre que no esta en la lista este es el código:

Private Sub cliente_NotInList(NewData As String, Response As Integer)
Dim Clientenuevo As Integer, titulo As String, mensaje As Integer
titulo = "El cliente que ha escrito no esta en la lista"
mensaje = vbYesNo + vbDefaultButton1
Clientenuevo = MsgBox("¿Desea agregarlo a la lista?", mensaje, titulo)
If Clientenuevo = vbYes Then
DoCmd.RunCommand acCmdUndo
DoCmd.OpenForm "Registro_Clientes", acNormal, "", "", acAdd, acDialog
Response = acDataErrAdded
End If
End Sub

Este código me sirve para agregar el cliente que no esta en la lista y al cerrar el formulario ya aparece el nombre y me envía al siguiente campo para llenar los demás datos.

INCONVENIENTE

Bueno siempre me toca escribir el nombre en el cuadro combinado y como no esta abre el formulario de clientes y debo volver ha escribirlo.

PREGUNTA

¿Mi pregunta es se puede modificar el código de modo que el al escribirlo en el cuadro combinado como no esta abra el formulario y ya aparezca el nombre en el formulario y solo sea llenar datos de teléfono y de dirección y al cerrarlo ya aparezca en el cuadro combinado?

Me dieron un código que puede hacerlo como pido pero tenia que cambian la propiedad de limitar lista de si a no y lo intente pero si lo cambiaba ya no aparecía el nombre del cliente sino el código de registro y la verdad no me deja cambiarlo entonces la idea sera hacer esto en este mismo código

1 respuesta

Respuesta
3

Rafael, puedes hacerlo de muchas formas. Por ejemplo, quita lo de limitar a la lista=Si y borra el código. Supongamos que tengo una tabla Clientes con NombreCliente, ciudad y País. También tengo un formulario Compras donde elijo el cliente. Si pongo un nombre que no está en la tabla

Cuando pulso Enter

Cuando pulso Sí

El código del evento Antes de actualizar del combinado Cliente es

Private Sub Cliente_BeforeUpdate(Cancel As Integer)
If Nz(DCount("*", "clientes", "nombrecliente='" & Me.Cliente & "'")) = 0 Then
Dim respuesta As Byte
respuesta = MsgBox("Ese cliente no está en la lista. ¿Desea agregarlo?", vbYesNo, "Lo que sea pero decídete ya")
If respuesta = vbYes Then
DoCmd.OpenForm "clientes", , , , acFormAdd, acDialog
Else
DoCmd.CancelEvent
End If
End If
End Sub

Y el código del evento Al activar el registro del formulario Clientes es

Private Sub Form_Current()
If CurrentProject.AllForms("compras").IsLoaded Then
NombreCliente = Forms!compras!Cliente
DoCmd.RunCommand acCmdSaveRecord
End If
End Sub

Es decir, que si el formulario Clientes lo "abres" desde el formulario Compras, el valor del control NombreCliente sea el mismo que figura en el combinado Cliente del formulario Compras. Te lo pongo así, por si Clientes lo abres directamente, que no te "moleste" el código.

Hola icue el problema es que no puedo quitar el limitar a la lista por que el ID esta asociado  con El nombre entonces si le doy en limitar a la lista no ya no aparece el nombre sino aparece el ID del cliente entonces hay no se como seria 

En principio, en el combinado, aunque la columna dependiente sea la del Id, también puedes poner el código como

If nz(dcount(...............................,"Idcliente=" & me.nombredelcombo & ""))..

Pero, si quieres, mándame una copia del formulario para que vea la construcción y te digo algo. Mi correo es [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas