Problema al llamar a un subformulario

Hola y gracias por leer esta pregunta:

Soy nuevo en el mundo de access y he creado una minibase de datos para mi trabajo y no puedo hacer que se activen los filtros por que al llamar al subformulario siempre dice que no existe el dato o miembro, ¿que estare haciendo mal?

Anexo un link con la base de datos

https://drive.google.com/file/d/0B7JnIPuGj5T3ZFZkaFZLM3BmRGs/view?usp=sharing 

Muchas gracias

1 respuesta

Respuesta
1

Tu error es que no estás trabajando con un subformulario, sino con un cuadro de lista, que no es lo mismo.

En este caso, lo que tienes que hacer es "recalcular" el origen de dicho cuadro de lista cada vez que construyes el filtro. Primero construyes la SQL y se la asignas a su propiedad RowSource, y luego lo actualizas con el método Requery
Te dejo el archivo con el código para eso aquí.

Si quieres trabajar con un subformulario, has de crearlo primero, y luego insertarlo en el formulario en vez del cuadro de lista. El código que tienes es correcto para trabajar de esta forma.

¡Gracias!, aunque no me queda del todo claro estas secciones del código (como ya comente tengo 2 semanas tratando de aprender por mi cuenta, pero es muy difícil sin entender lo básico),

Const inicioSQL As String = "SELECT clasificacion.Nomenclatura_Unidad, clasificacion.Carroceria, clasificacion.Descripcion_Ruta, clasificacion.Rendimiento_Combustible, clasificacion.Litros_Cargados FROM clasificacion"
Const ordenSqL As String = "ORDER BY clasificacion.Nomenclatura_Unidad;"

y la siguiente seccion tampoco me queda muy claro...

If sFiltro <> "" Then
Me.displayID.RowSource = inicioSQL & " WHERE " & sFiltro & " " & ordenSqL
Else
Me.displayID.RowSource = inicioSQL & " " & ordenSqL
End If
Me.displayID.Requery

Me disculpo por mi falta de conocimiento, ¿podrías explicar un poco más a fondo?, saludos

Tengo otra pregunta, ¿Como puedo diferenciar de un cuadro de lista y un subformulario, es decir, como se puede identificar cual era el error?, saludos

Las dos lineas que empiezan por Const son la SQL que determina los datos que muestra tu cuadro de lista.

Como toda SQL tiene esta estructura: SELECT Campos FROM Tabla [WHERE Criterio] [ORDER BY Campo], siendo las partes en corchetes opcionales.

Esta SQL la puedes ver si casa las propiedades del cuadro de lista, en la pestaña "Datos", propiedad "Origen de la fila"

La separé en dos constantes, porque cuando le quieras añadir el filtro se lo tienes que poner en la parte del WHERE.

Las lineas del bloque If lo que hacen es:

Si el filtro no está "vacío" (If sFiltro <> "") entonces asigna al origen de la fila del cuadro de lista la SQL con el filtro, construida con la forma SELECT Campos FORM TablaWHERE filtro ORder BY Campo.

Si el filtro está vacío, le asigna al cuadro de lista el origen pero sin la parte del filtro.

La última linea es para "recalcular" o "refrescar" los datos del cuadro de lista.

Un subformulario no es más que un formulario dentro de otro. Si abres tu formulario en vista diseño, y te colocas cobre cada control, ya te dice el tipo que es (cuadro de texto, cuadro de lista, subformulario...)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas