Agregar valores a un cuadro combinado

Me gustaría saber cómo puedo agregar valores a un cuadro combinado. La base de datos la tengo de al siguiente forma: Un formulario con el campo PAÍS, y un cuadro combinado con varios países, al seleccionar un país este se queda almacenado en el campo País. Cuando el país no está en la lista, tengo un botón de comando que me abre otro formulario, con el campo "nuevo país", al escribir el nuevo país, este se queda en una tabla "tabla2", donde el cuadro combinado obtiene "lee" los países amostrar en la lista. Hasta hay bien, lo que ocurre es que cuando cierro el formulario donde introduzco el nuevo país, y vuelvo al cuadro combinado, el nuevo país no aparece en la lista. Si cierro el formulario donde tengo el cuadro combinado y lo vuelvo a abrir, el nuevo país si aparece en la lista. ¿Cómo puedo hacer para que el país si aparezca en la lista sin tener que cerrar y abrir nuevamente el formulario.?

1 respuesta

Respuesta
1
De nuevo Jose Antonio. Eso se hace con un "requery" en el lugar adecuado. El lugar adecuado lo debes ver tu el código seria el siguiente:
Me. nombre_cuadro_combinado.requery
Sólo te falta buscar en que evento pones esto, pero eso lo sabes tú mejor que nadie.
Hola, es un placer Kepasada... Verás, he colocado el código en el evento Al cerrar, del formulario donde introduzco el nuevo país, pensando que este sería el evento aporpiado... el código queda de la siguiente forma:
Private Sub From_Close()
Me.Cuadro combinado125.Requery
End Sub
Me da error, y me dice "error de compilación. No se encontró el método o el dato miembro" y en el código me marca en azul el punto y Cuadro ".Cuadro".
Muchas gracias Kepasada.
Un abrazo.
Jose Antonio.
Jose Antonio es posible que no te haya entendido nada. Me explico:
"... Lo que ocurre es que cuando cierro el formulario donde introduzco el nuevo país, y vuelvo al cuadro combinado, el nuevo país no aparece en la lista. Si cierro el formulario donde tengo el cuadro combinado y lo vuelvo a abrir, el nuevo país si aparece en la lista.
Entiéndeme, es un poco complicado de saber que es lo que quieres decir.
Por eso lo que yo te decía es un requery para que vuelva a consultar el origen de datos, lógicamente eso "no se puede hacer" cuando cierras el formulario ya que los controles se cierran. Además no tiene mucho sentido, ya que cuando cierras el formulario, al volverlo a abrir ya vuelve a consultar el origen de datos.
Por ello creo que no he entendido tu pregunta. Intenta explicarme un poco mejor cual es tu problema. De todas maneras, tienes tres funciones que realizan cosas similares pero diferentes, por si les quieres echar un vistazo: Refresh, Requery, Recalc. Seguramente alguno de ellos es el que necesitas, solo hay que saber que es lo que quieres y luego aplicarlo en el evento oportuno.
Hola, buenas noches... Siento no haberme explicado bien. Vamos a ello. Tengo dos Tablas, en la Tabla1 un campo "pais", en otra Tabla2 otro campo "nuevo país". En un formulario tengo el campo país y un cuadro combinado, con el origen de datos "nuevo país", es decir, que el cuadro combinado "lee" los países que hay en la tabla2, en el campo "nuevo país" y los muestra al desplegar la lista.
Cuando tengo que añadir un nuevo país (que no existe en la lista), hago clic en un botón de comando y se abre el formulario para añadir un nuevo país a la lista, escribo el nuevo país y cierro éste formulario. Hago clic en el cuadro combinado y el país añadido no está en la lista. Cuando cierro el formulario donde tengo el cuadro combinado y lo vuelvo a abrir, el nuevo país si me aparece en la lista del cuadro combinado. Mi intención es que no tenga que cerrar y después abrir el formulario para que el país me aparezca en la lista.
No sé si me habré explicado bien.
Un cordial saludo.
Jose Antonio.
Jose Antonio. Ahora creo que te había entendido bien. Con lo cual mi contestación es totalmente valida. El problema es el evento en el que la pones, es decir, tu abres el formulario, rellenas los datos, y necesitas un evento antes de volver a hacer click en el cuadro combinado para que te realice el requery.
Pero te propongo otra solución más "profesional". Yo la uso y queda bien, aunque yo la complico un poco más. Básicamente la idea es la siguiente:
(Lo escribo de memoria por lo que pudiera equivocarme, espero que no, sino me dices...)
Private Sub Mi_cuadro_combinado_NotInList(NewData As String, Response As Integer)
  If MsgBox("Quiere agregar un nuevo registro" & vbCr & vbCr, vbExclamation + vbDefaultButton2 + vbYesNo) = vbYes Then
    DoCmd.OpenForm "Mi_formulario", acNormal, , , , acDialog
    Me.Mi_cuadro_combinado.Text = ""
    Me.Refresh
 End If
   Response = acDataErrAdded
End Sub

En el formulario "mi formulario", pones en el evento al abrir:
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acNewRec
End Sub

Lógicamente, en lo que esta en negrita, lo cambias por el nombre de tu cuadro combinado y de tu formulario.
Te explico: lo que hace esto, es que al no existir lo que introduces en el campo combinado, te abre el formulario de donde coge los datos para que lo rellenes. Una ve rellenado aparecerá en el cuadro combinado. Juega con el "newdata" y el "response".
El texto del mensaje: "Private Sub Form_Open(Cancel As Integer)
Pon el cuadro combinado a"limitar a a la lista a !SI!

Un cordial saludo
Hola Kepasada... me quito el sombrero. Excelente. Shapó (creo que se escribe así). Intenté solucionarlo de todas la formas posibles que se me ocurrián, consultas de actualización, etc, pero sin resultados. Con tu respuesta ha quedado perfecto.
Muchísimas gracias nuevamente.
Un abrazo, amigo.
Jose Antonio.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas