Access - Cuadro combinado (combobox) Deseleccionar items o identificar estado (completo/vacío)

 
Vista:
sin imagen de perfil

Cuadro combinado (combobox) Deseleccionar items o identificar estado (completo/vacío)

Publicado por Fernando (3 intervenciones) el 11/11/2015 18:51:34
Hola, buenas tardes. Por favor agradecería que me ayuden con este tema...

Estoy creando una base de datos en Access 2013 que cuenta con un formulario para ingresar datos. En este formulario tengo cuadros de texto, un cuadro combinado, botones de opción dentro de cuadros y 3 botones de comando.
Todos ellos son independientes a excepción del combobox. Dicho combobox despliega items que figuran en una de las tablas de la base de datos. Esto lo configuré desde las propiedades del combobox, en la línea "Origen de la Fila".
Ahora, los 3 botones son: Aceptar, Cancelar y Salir.
La base ya tiene algo de código que fui captando de distintos lugares y adaptando a mis necesidades. Deseo que al apretar el botón "Aceptar", se verifique que todos los campos necesarios estén completos. Habiendo verificado que todos los campos estén completos y registrado la información en la tabla correspondiente, se deberían limpiar los contenidos de todos los controles para seguir con el siguiente registro.
Lo que hago es verificar la propiedad .Value de los textbox, combobox y optiongroup. En caso de que sea = "" o Null, entonces hago aparecer un msgbox advirtiéndome del campo que está incompleto.
En el botón Cancelar puse las líneas que esperaría que hicieran la limpieza de los controles, pero el problema es el siguiente:
No encuentro manera de restablecer el combobox al estado que tiene (ninguna selección) cuando se inicia el formulario.
Intenté estableciendo Me.combobox.value = "" ; también intenté con Me.combobox.selected (-1) y muchas otras cosas que leí en estos días pero sin éxito.
Cuando inicio el formulario, si dejo el combobox incompleto y pulso "Aceptar", me sale la advertencia que programé. Pero si elijo un valor de la lista (por más que después borre el contenido con la tecla Supr, establezca .value = "", o Me.combobox.selected(-1) o combinaciones de ellos), al volver a pulsar "Aceptar" no puedo detectar el combobox como vacío o incompleto.
Para aumentar mi confusión encuentro en los foros que hacen mención a propiedades o métodos que aparentemente no tengo disponibles, y la ayuda de Microsoft no es nada clara.

Por favor, si me pueden ayudar se los voy a agradecer.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Cuadro combinado (combobox) Deseleccionar items o identificar estado (completo/vacío)

Publicado por Enrique Heliodoro (1664 intervenciones) el 12/11/2015 11:48:27
Suele suceder, cuando se utiliza Access como un simple 'block de notas'.

Aun en el supuesto de que se pretenda crear una toma de datos 'independiente' de los datos reales, se acostumbra a tener unas tablas (copias de las reales en su estructura) que se utilizaran para esa toma de datos y al finalizar se volcarían los datos a las tablas definitivas de forma volutiva, tras el volcado se limpian las tablas temporales y fin del problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil

Cuadro combinado (combobox) Deseleccionar items o identificar estado (completo/vacío)

Publicado por Fernando (3 intervenciones) el 12/11/2015 12:32:36
Gracias por tu aporte Enrique, pero es posible que no hayas comprendido lo que expliqué.
En cuanto a lo otro que mencionás, los datos serían volcados en una tabla intermedia, de transición, temporal o como quieras llamarle. El control combobox toma los datos de otra tabla que no es aquella en donde pretendo registrar los datos.
Por favor, el tema no está cerrado, si alguien tiene una solución concreta a mi problema, se lo voy a agradecer. Tengan en cuenta que no soy experto ni mucho menos, esto va saliendo a pura voluntad.
Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Cuadro combinado (combobox) Deseleccionar items o identificar estado (completo/vacío)

Publicado por Fernando (3 intervenciones) el 12/11/2015 19:17:40
Gente, encontré una solución. Se las comparto para que no padezcan lo mismo que yo buscando una solución a este tema. No sé si sea la más correcta desde el punto de vista de programación, pero hasta ahora me está funcionando bien (la estoy probando de distintas maneras y aún no le encuentro falla).
Les cuento que el combobox en cuestión (en el código de más abajo lo llamé "cuadrocombinado") está vinculado a una tabla por medio de la propiedad "Origen de la fila". Ésto no lo hice desde código sino desde las propiedades del elemento en vista diseño, solapa "Datos" (se puede hacer con el asistente también). Dicho combobox además no admite un valor diferente a los que muestre listados (propiedad "Limitar a la lista = Sí" de la misma solapa).
El siguiente código muestra la comprobación que se hace sobre el valor de la propiedad .Text del objeto cuadrocombinado, cuando se presiona el botón "Agregar Registro". La idea es que si detecta valor vacío o nulo, despliegue un aviso para que lo completemos.

1
2
3
4
5
6
7
8
9
10
11
Private Sub cmdAgregarRegistro_Click()
    With Me.cuadrocombinado
        .SetFocus
        If .Text = "" Or .Text = Null Then
            MsgBox "Debe completar el cuadro combinado", , "¡Atención!"
            Exit Sub
        Else
            'Agregar instrucciones que correspondan cuando haya un valor seleccionado en el cuadro combinado
        End If
    End With
End Sub

y además les dejo un Sub que conseguí investigando (a estas alturas ya no recuerdo donde) y que puse en mi base de datos para limpiar el contenido de los controles:

1
2
3
4
5
6
7
8
9
10
11
Private Sub LimpiarTodo() 'Limpia el contenido de todos los controles y establece el foco en el primer campo a completar
    Dim ctrl As Object
 
    For Each ctrl In Controls
        If TypeOf ctrl Is TextBox Then ctrl.Value = ""
        If TypeOf ctrl Is ComboBox Then ctrl.Value = ""
        If TypeOf ctrl Is OptionGroup Then ctrl.Value = ""
    Next ctrl
 
        Me.txtPrimerCampo.SetFocus 'Establece el foco en txtPrimerCampo, que es el primer campo a completar
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Cuadro combinado (combobox) Deseleccionar items o identificar estado (completo/vacío)

Publicado por Enrique Heliodoro (1664 intervenciones) el 13/11/2015 02:11:19
Aun que me vuelvas a poner otro punto negativo, insisto en que se esta utilizando Access como un bloc de notas (o una pizarra), se llenan UNOS CUADROS DE TEXTO y después de trastearlos y (se supone) guardarlos, se pasa la goma de borrar (o el cepillo) para reutilizar esos mismos cuadros de texto.....

Pero cada uno hace 'lo que le da la gana' (algunos con el tiempo aprenden a no lastimarse los dedos con el martillo).

Si deseas evitar el 'pasarle el foco' al objeto (para poder acceder a su propiedad 'text') ...

If Len(Trim(Nz(Me.CuadroCombinado,""))) = 0 Then ....

Mas simple:
If Nz(Me.cuadrocombinado,"") <> "" Then ....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar