[Resuelto] No sale valor seleccionado en combo
Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85608
Fecha de impresión: 26/Marzo/2026 a las 18:58
Tema: [Resuelto] No sale valor seleccionado en combo
Publicado por: zelarra
Asunto: [Resuelto] No sale valor seleccionado en combo
Fecha de publicación: 15/Noviembre/2020 a las 15:20
|
Buenas tardes.
Tengo un problema con los desplegables. Si establezco su el origen de la fila mediante VBA, cuando selecciono un valor del desplegable, este no aparece. Tengo que pinchar en él, o en otra desplegable, y ya aparece.
He probado a hacer una consulta previa, por si la que utilizara en VBA para el origen de la fila fuera compleja; también a establecer un origen de la fila en las propiedades del desplegable. Ninguna de las opciones me da resultado.
Esto es la segunda vez que me sucede. Tengo otra base de datos que sucede lo mismo, y no sé porqué es.
Este es el código:
Private Sub SrchTipo_Enter() Me.SrchTipo.RowSource = "SELECT TipoDeVideo, TTiposDeVideo.CodigoTipoDeVideo, CodigoEstado" _ & " FROM TTiposDeVideo INNER JOIN TVideos ON TTiposDeVideo.CodigoTipoDeVideo = TVideos.CodigoTipoDeVideo" _ & " WHERE TTiposDeVideo.CodigoTipoDeVideo <> 1 And CodigoEstado=" & DLookup("CodigoEstado", "TEstados", "Estado='" & Me.SrchEstado & "'") & "" _ & " GROUP BY TipoDeVideo, TTiposDeVideo.CodigoTipoDeVideo, CodigoEstado" _ & " ORDER BY TTiposDeVideo.CodigoTipoDeVideo" Debug.Print Me.SrchTipo.RowSource Me.SrchPrograma = "" Me.SrchFuente = "" End Sub
He grabado un video con el comportamiento:
https://www.dropbox.com/s/hjpjfcyz2lcvjfq/Video.avi?dl=0
Gracias.
|
Respuestas:
Publicado por: Mihura
Fecha de publicación: 15/Noviembre/2020 a las 16:37
|
Si quieres tener el combo activo 'todo el tiempo' dale vale al rowsource en el evento LOAD del formulario.
Y si lo quieres al entrar en él, yo usaría el evento GotFocus.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: zelarra
Fecha de publicación: 15/Noviembre/2020 a las 16:45
|
Hola, Mihura. Muchas gracias por responder. Lo he puesto en el evento GotFocus porque está vinculado a otro inmediatamente anterior, pero sigue haciendo lo mismo.
Por probar, he dado el origen de la fila también al cargar, y tampoco.
|
Publicado por: Mihura
Fecha de publicación: 15/Noviembre/2020 a las 16:56
|
Veamos, hasta que no ejecutas la instrucción me.SrchTipo.RowSource = ... el combo no puede tener ningún valor.
Sólo puede tenerlo a partir del momento en el que cargues el RowSource. Si depende de la modificación del campo Estado, cárgalo en el evento AfterUpdate de dicho campo.
De todas formas, me da que necesitamos que amplíes la explicación de que es lo que tienes y que es lo que quieres.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: zelarra
Fecha de publicación: 15/Noviembre/2020 a las 17:07
|
He grabado un vídeo con más detalles. Espero te sirva para darme un poco de luz:
https://www.dropbox.com/s/a1x5zu4ujaw566x/Video1.avi?dl=0
|
Publicado por: Mihura
Fecha de publicación: 15/Noviembre/2020 a las 17:12
Mejor explícalo aquí ...
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: zelarra
Fecha de publicación: 15/Noviembre/2020 a las 17:45
|
Vale, a ver si consigo explicarme.
Tengo un formulario continuo, y en el encabezado tengo creado una barra de búsqueda, con un campo para escribir lo que quiero buscar, y una serie de desplegables. Todos que van filtrando el formulario a través de la consulta de origen (Como "*" & [forms]![FVideos]![SrchText] & "*" para el campo; y, por ejemplo, uno de los desplegables sería Como "*" & [forms]![FVideos]![SrchTipo] & "*", que es el que me da el problema).
Estos desplegables van enlazados entre sí. Pero la vinculación no lo establezco después de actualizar un desplegable para que actualice el origen de la fila del siguiente, sino al entrar en el desplegable (con un select case compruebo el valor del desplegable anterior (segundo desplegable) / o desplegables anteriores (tercer desplegable y siguientes)).
El orden es Estado > Tipo > Programa > Fuente
En donde tengo el problema es en el segundo desplegable. El desplegable Estado tiene como valor pretederminado "Descargado". El resto de desplegables, "" (para no tener problemas con valores nulos).
Observo que, al entrar en el formulario, y, acto seguido, al entrar en el segundo desplegable (Tipo), y solo cuando selecciono una de las opciones ("Youtube"), no me aparece el valor en el desplegable. En el resto de posibilidades, siempre aparece.
|
Publicado por: zelarra
Fecha de publicación: 15/Noviembre/2020 a las 17:48
|
Ahora, dónde está el fallo.
Este se encuentra en el evento Después de actualizar ese desplegable Tipo, donde tengo el código siguiente:
Private Sub SrchTipo_AfterUpdate() DoCmd.SetOrderBy "Duracion" Call PersonalizarVista(Me, "TVideos", True, "CodigoEstado", DLookup("CodigoEstado", "TEstados", "Estado='" & Me.SrchEstado & "'")) End Sub
Function PersonalizarVista(FName As Form, Tabla As String, Optional HayCriterio As Boolean = False, Optional CampoCriterio As String, Optional Criterio As Variant) On Error GoTo err_lbl Dim Registros As Long If HayCriterio = False Then Registros = DCount("*", Tabla) Else Dim Criterio1 As String Criterio1 = CampoCriterio & " = " & Criterio Registros = DCount("*", Tabla, Criterio1) End If DoCmd.GoToRecord , , acLast Select Case Registros Case Is > 5 DoCmd.GoToRecord acDataForm, FName.Name, acPrevious, 3 Case 2 To 5 DoCmd.GoToRecord acDataForm, FName.Name, acPrevious, 1 End Select If Not Registros = 0 Then DoCmd.GoToRecord , , acNewRec End If Salida: Exit Function err_lbl: Select Case Err.Number Case 3075, 2105 Exit Function Case Else MsgBox "PersonalizarVista: " & Err.Number & " " & Err.Description, vbInformation, NombreBD End Select Resume Salida End Function
Si desactivo esta última función, de personalizarvista, que utilizo para que me muestre los cinco últimos registros, y no únicamente el nuevo registro, me aparece el valor del desplegable.
Ahora bien, no sé cómo poder solucionar esto para que lo ordene, y, además, solo me muestre esos cinco últimos registros.
|
Publicado por: zelarra
Fecha de publicación: 15/Noviembre/2020 a las 23:17
|
Voy a marcar este hilo como solucionado porque he averiguado porqué lo hace. Muchas gracias, @mihura
|
Publicado por: Mihura
Fecha de publicación: 16/Noviembre/2020 a las 08:52
|
Pues pon la explicación, así el siguiente que se encuentre con el mismo problema sabrá a que atenerse.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: zelarra
Fecha de publicación: 16/Noviembre/2020 a las 10:02
|
Sí, claro.
Mira, haciendo pruebas me he dado cuenta de que el origen de fila del desplegable, si está vinculado a uno anterior, debo ponerlo en el evento AfterUpdate de este desplegable anterior; y ponerle un origen de fila, no dejarlo independiente, para que, al abrir el formulario, coja valores (los valores como si no estuviera condicionado por el anterior, no sé si me explico). Si cargo el origen de fila en el evento Load del formulario, y en el GotFocus del desplegable, se pasaba al GotFocus y me borraba el valor.
Si alguien no entiende lo que he explicado, o quiere alguna aclaración, puede escribirme sin problemas.
Muchas gracias.
Un saludo.
|
|