Asignar un valor a un cuadro combinado

Quisiera saber si se puede asignar un valor a un cuadro combinado lo que quiero hacer es que cuando registre un cliente nuevo en formulario clientes al cerrar ese formulario me envíe el nombre al cuadro combinado y quede automáticamente escrito para no tener que volverlo ha escribir pero al hacerlo por el código me lansa un error que dice no se puede asignar un valor a este objeto.

Este es el código

Private sub form_close() 

Forms! Factura.refresh

Me.nombre = forms ("factura")! Cliente 

End sub

2 Respuestas

Respuesta
2

Si el combinado está en el mismo formulario puedes hacerlo de varias formas. Por ejemplo, supongamos que el origen de la fila es el campo Cliente. En el evento Después de actualizar del cuadro de texto Cliente puedes poner

Docmd. Runcommand accmdsaverecord

Con lo que cuando "abras" el combinado ya te aparece ese nombre

Otra forma. En el evento Al recibir el enfoque de ese combinado puedes poner

Me. Nombredelcombinado. Requery

Si pudieras concretar algo más.

No icue esta en otro formulario osea el de factura abre el de clientes y este cuando se cierra actualiza el de factura pero igual lo vuelvo a escribir la idea es que ya aparezca escrito 

Creo entender que el formulario Clientes está "abierto" sobre el de Factura. En ese caso, en algún evento del formulario Clientes puedes poner

If currentproject.allforms("factura").isloaded then

forms!factura!nombredelcombinado.requery

end if

Icue pero pongo solo ese código o con el que me dijiste anterior mente 

Hola icue intente usarlo pero no veo como el código toma el nombre que registro en el formulario clientes y me lo envía al formulario factura para no tener que escribirlo entonces no comprendo que hace el código en si gracias por tu ayuda 

Por lo que decías, me parece entender que si tengo una tabla(es sólo para que veas los nombres, uso el nombrecompañía)

Verás que no hay ningún Bernardo. Si tengo un formulario Formulario1 donde le pongo un combinado en el que en su origen de la fila le pongo el campo Nombrecompañia de la tabla Clientes

Como puedes ver no hay ningún Bernardo. Si pulso el botón se abre el formulario Clientes y anoto ese nuevo Cliente

Cuando cierro el formulario veo el formulario 1 y si abro el combinado

Ese cliente ya esta. En el evento Al cerrar(que creo que era lo que decías) del formulario Cliente tengo puesto

Private Sub Form_Close()
Forms!formulario1!ElegirCliente.Requery
End If
End Sub

Por cierto, también hay otra forma. Vamos a suponer que en el combinado( donde te recuerdo que no estaba Bernardo, este cliente nunca está cuando se le necesita), en sus propiedades-Datos-Limitar a la lista le pones Sí. Y en sus propiedades-eventos-Al no estar en lista le puedes poner

Dim Clientenuevo As Integer, título As String, mensaje As Integer

título = "El Cliente que ha escrito no está en la lista"
mensaje = vbYesNo + vbDefaultButton1
Clientenuevo = MsgBox("¿Desea agregar este cliente a la lista ?", mensaje, título)
If Clientenuevo = vbYes Then
DoCmd.RunCommand acCmdUndo

DoCmd.OpenForm "Clientes", acNormal, "", "", acAdd, acDialog

Response = acDataErrAdded
End If

Me explico, al escribir el nombre te aparecerá un mensaje advirtiéndote que no está en la lista, que si quieres agregarlo. Si le dices Sí, se abre el formulario Clientes, en vista diálogo y en un registro nuevo. Anotas sus datos y una vez cierres el formulario Clientes, en el combinado del formulario1 ya te aparece su nombre.

Si icue pero hay alguna forma de que al agregarse aparte de que aparezca en la lista del cuadro seria posible de que aparezca de una vez seleccionado? Que pena tanta molestia 

Es que ya te aparece en el combinado. Si tengo una tabla

Y tengo un formulario, con un combinado cuyo origen de la fila es el campo Alumno de la tabla Otra

Si ahora escribo Pedro Perez y pulso Enter

Si pulso Si

Anoto los datos y cuando cierro el formulario, "ya se ha quedado" en el combinado

En el combinado, al que he llamado Elegir, como te decía en sus Propiedades-Datos-Limitar a la lista=Si y en el evento Al no estar en lista tengo puesto

Si gracias icue eso era lo que quería ahora lo implementó y te digo como me fue 

Super me funciono gracias pero tengo una pregunta hay forma de que al escribir el nombre en el primer formulario no haya necesidad de que lo vuelva a escribir en el de clientes si no que aparezca también en el de clientes y solo sea llenar los otros datos como es tu ejemplo ciudad o país 

Entonces tienes que quitar en el combinado lo de Limitar a la lista, ponle No y eliminar el código que hay en el evento Al no estar en lista. En el formulario

Cuando pulso Enter

Si pulso Si

Anoto lo que sea y cierro

El código del evento ANTES DE ACTUALIZAR del combinado Elegir es

Es decir, antes de actualizar cuenta cuantos alumno hay con el nombre que acabas de escribir. Si no hay ninguno que te muestre el mensaje. Si le dices sí inserta en la tabla Otra el valor del alumno del combinado y abre el formulario otra en el registro en que alumno sea igual al que has puesto en el combinado.

Como no sé que tiene que hacer, en caso de que el alumno esté en la lista no le he dicho nada.

Respuesta
1

¿Que tipo de origen de la fila tiene tu cuadro combinado.?

El origen es de la tabla de clientes 

¿Te refieres a una consulta? Tipo de origen de la fila consulta. (Manda una captura para ver)

Si es así, solo tienes que hacer un requery a tu cuadro combinado.

Private sub form_close()
forms("factura")!CuadroCombinado.Requery
End Sub

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas