Insertar texto en criterio de consulta con VBA

Tengo definida una consulta que extrae criterios desde un formulario (la mayoría con generador de expresiones).
Sin embargo, en el formulario, tengo un cuadro de lista desde el que me gustaría extraer los datos y copiarlos en el criterio de una de los campos de la consulta (la cual ya esta definida y tiene varios otros campos con otros criterios).
Mi interés es copiar todos los items del cuadro de lista (los cuales son números) y colocarlos en la celda de criterio. He visto ejemplo donde copian los items que están seleccionados (multiselect) los cuales tienen un origen en alguna tabla (pero esto no me ha servido). Mi cuadro de lista utiliza la opción de "lista de valores". A modo de ejemplo quiero copiar " 1 O 2 O 16 O 32 " dentro del criterio para que la consulta filtre sólo esos cuatro números
Lo que me gustaría pedirte es la manera en que puedo acceder al criterio especifico del campo de la consulta y copiar un texto dentro de él, utilizando VBA. (El cómo seleccionar los datos a copiar y cómo configurar el texto que deseo escribir no es problema.).
He probado con código de esta naturaleza:
Dim qdef As DAO.QueryDef
........
 Set qdef = CurrentDb.QueryDefs("consulta1")
qdef.SQL = strSQL
DoCmd. OpenQuery "consulta1", acViewNormal
pero finalmente sólo consigo crear una nueva consulta con un único criterio ó mantener la consulta definida pero borrando todos los valores previos.

1 respuesta

Respuesta
¿Has probado en los criterios de la consulta apuntar directamente a esa texbox?
Formularios!<nombre del formulario>!<nombre de la textbox>
Hola,
no es un textbox, es un cuadro de lista (listbox), y si he probado de distintas maneras algo similar a lo que propones sin resultados con la función SiInm, Entre, etc.
Nuevamente, mi pregunta es: ¿Qué código de VBA me permite acceder a un criterio determinado en una consulta, para poder insertar un texto dentro de él?
El texto que quiero insertar es, por ejemplo: 4 O 8 O 26 O 32
Mi problema es colocar todos los valores de un cuadro de lista dentro de los criterios de la consulta en la forma descrita en el ejemplo o algo similar que me permita los mismos resultados.
Saludos
Vale, ¿necesitas crearte una consulta y luego que?
Cuando necesito personalizarme una consulta me creo un código para navegar por una propia como esta:
 Dim rst As DAO.Recordset
 Dim strSql As String
 Dim NomCamp As String
 Dim NomTabla As String
 Dim Criteris As String
 NomCamp = <los nombres de los campos separados por comas y entre [] >
 NomTabla = "<nombre de la tabla que contiene los datos>"
 Criteris = "<criterios de la consulta>"
 If Nz(NomCamp, "") <> "" Then
    If Nz(NomTabla, "") <> "" Then
        strSql = "SELECT " & NomCamp & " FROM " & NomTabla & " WHERE " & Criteris & ";"
        Set rst = CurrentDb.OpenRecordset(strSql)
        With rst
            If (Not .EOF) And (Not .BOF) Then
                Do While Not .EOF
' En este espacio intermedio colocamos el codigo que queremos para trabajar con los registros uno a uno teniendo en cuenta que .fields(0) es el primer campo, .fields(1) el segundo ... etc etc
                    .MoveNext
                Loop
            End If
        End With
    End If
 End If
Hola,
Por lo que entiendo del código que propones, hace lo siguiente:
Selecciona un campo de una tabla al cual se le aplica un criterio para que busque las tuplas(filas) que cumplen con esa condición. Luego se puede modificar cualquiera de los valores de la tupla (usando .fields(i)).
Si esto es así, entonces no me sirve.
Quizás me explique mal, por lo que voy a tratar de ser más claro.
Cuando se diseña una consulta (en vista de diseño) por lo general uno incluye varios campos (de una tabla o de varias) y en cada uno de esos campos esta la posibilidad de incluir criterios (ya que hay una fila con el nombre de "criterios"). Lo que yo quiero es escribir un criterio para uno de esos campos usando Visual Basic. Para luego después ejecutar la consulta y que el criterio escrito tenga efecto.
Ahora el texto que quiero escribir en el criterio proviene de un cuadro de lista... pero eso es otro problema.
Saludos
Ok,
Modificar los criterios desde código no se puede.
Por eso te he dado las dos únicas opciones que tienes de hacerlo.
Una es que el criterio lo coja de un formulario:
Formularios!<nombre del formulario>!<nombre del objeto que tiene el criterio>
La otra es crearte una consulta virtual en código y hacer lo que se desea mediante código también:
Que es lo otro que te he dado
Listo.
Gracias. Hay otras cosas que necesito y en donde el código que enviaste será de utilidad.
Sin embargo me cuesta creer que no se pueda (especialmente colocar los valores de un cuadro de lista en el criterio de una consulta), teniendo en cuenta que la filosofía de la programación es "Todo es posible".
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas