Access - Recorrer los campos de una tabla para crear un filtro de consulta

 
Vista:

Recorrer los campos de una tabla para crear un filtro de consulta

Publicado por MJ (8 intervenciones) el 10/10/2016 10:27:48
Buenas a tod@s,
Estoy empezando en el mundo de programación en VBA y necesito vuestra ayuda. Tengo que crear una consulta en el que el filtro depende de un valor que viene de un formulario, que corresponde con el nombre del campo a filtrar. Este campo es un campo Yes/No. El código que tengo es el siguiente

1
2
3
4
5
6
For Each fld In tbl.Fields
    If fld.Name = vCurso Then
        MsgBox "Nombre del vCurso: " & vCurso, vbInformation, "vCurso"
        miSql = "SELECT [8_TrainingObjective].* FROM [8_TrainingObjective] WHERE '[fld]=' & YES;"
    End If
Next fld

Muchas gracias de antemano
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Recorrer los campos de una tabla para crear un filtro de consulta

Publicado por Neckkito (1157 intervenciones) el 10/10/2016 12:07:31
Personalmente, no soy capaz de entender ni tu explicación ni tu código, que no tiene mucho sentido a primera vista. Dices que el campo depende de un campo sí/no, pero en tu código hablas de un vCurso que, según tu msgbox, parece que devuelve un texto.

En fin, que yo no soy capaz de entenderlo.

Saludos,

Neckkito
http://bit.ly/neckkito
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

Recorrer los campos de una tabla para crear un filtro de consulta

Publicado por MJ (8 intervenciones) el 10/10/2016 12:16:58
Buenas, me he explicado muy mal, lo siento.
Tengo un formulario que permite seleccionar un curso (la variable vCurso (String) guarda el curso seleccionado). La tabla 8_TrainingObjevtive tiene varias columnas Si/no y cada una corresponde a un curso. Quiero hacer un filtro Curso1=Yes si el usuario ha seleccionado dicho curso.
Espero haberme explicado major. Muchas gracias por contestar
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Recorrer los campos de una tabla para crear un filtro de consulta

Publicado por Neckkito (1157 intervenciones) el 10/10/2016 12:28:48
Hola!

Sigo sin verlo del todo claro (me refiero a la estructura de tu tabla), pero prueba con esto:

miSql= "SELECT * FROM 8_TrainingObjevtive WHERE " & vCurso & "=True"

Lo anterior da por sentado que el valor de vCurso no contiene espacios. Si los contuviera cambia la SQL por esta:

miSql= "SELECT * FROM 8_TrainingObjevtive WHERE [" & vCurso & "]=True"

Ya me dirás si lo hemos acertado. Si no tendrás que explicarte un poco mejor.

Saludos

Neckkito
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

Recorrer los campos de una tabla para crear un filtro de consulta

Publicado por MJ (8 intervenciones) el 10/10/2016 12:58:44
Buenas, muchas gracias por tu respuesta.
A ver si consigo explicarme, en la tabla 8_TrainingObjective tengo los contenidos que aplican a unos cursos u otros. Los cursos los tengo en las columnas que son campos si/no. Cuando el usuario seleccione el curso quiero obtener una consulta con todo los contenidos que aplican a ese curso. Añadiendo la sentencia que pusiste me sale el siguiente mensaje de error

Error de sintaxis (falta operador) en la expression de consulta '07M03000 = True'.

Espero esta vez haberme explicado, si no es así dime que no entiendes. De nuevo, muchas gracias
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Recorrer los campos de una tabla para crear un filtro de consulta

Publicado por Neckkito (1157 intervenciones) el 10/10/2016 13:05:37
Comprueba que SQL te está escribiendo. Para ello, después de definir la variable miSql, escribe:

debug.print miSql

Copia y pega esa SQL de la ventana inmediato (si no la tienes, en el VBE, pulsa CTRL+G) y me la pones aquí.

De todas maneras, para clarificarnos, y en función de lo que escribes, entiendo que en en tu tabla tienes un campo llamado 07M03000 de tipo sí/no, ¿correcto?
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

Recorrer los campos de una tabla para crear un filtro de consulta

Publicado por MJ (8 intervenciones) el 10/10/2016 13:10:10
Buenas, me muestra esto

SELECT * FROM [8_TrainingObjective] WHERE 07M03000 = True

y sí, tengo un campo de tipo si/no que se llama 07M03000. Gracias
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Recorrer los campos de una tabla para crear un filtro de consulta

Publicado por Neckkito (1157 intervenciones) el 10/10/2016 13:29:55
Prueba a poner el nombre del campo de filtro entre corchetes. Que ese nombre contenga números, y encima empiecen por cero, probablemente hace que la SQL no entienda el valor de vCurso. Es decir:

miSql= "SELECT * FROM 8_TrainingObjevtive WHERE [" & vCurso & "]=True"

Ya me dirás.
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

Recorrer los campos de una tabla para crear un filtro de consulta

Publicado por MJ (8 intervenciones) el 10/10/2016 13:34:22
Muchas gracias, funcionó! Me has salvado!
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Recorrer los campos de una tabla para crear un filtro de consulta

Publicado por Neckkito (1157 intervenciones) el 10/10/2016 14:29:39
Bueno... pues me alegro :-)

Quizás lo haya dado por sentado, con lo cual lo he hecho mal, pero no es necesario todo el código que estás utilizando, al menos para esta parte en concreto. En realidad, tu código bastaría que se quedara en esto (o algo parecido a esto):

Dim vCurso as string
vCurso=me.NombreControl 'Doy por supuesto que ese valor lo escribes en alguna parte, o lo seleccionas de un combo o listbox
miSql = ' La SQL que te ha funcionado.

Salu2!
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