En una consulta de Access quiero acceder a los valores de una tabla

Buenas tardes, espero explicarme bien y adelantar que mis conocimientos son muy básicos.
He creado una consulta y necesitaría poder utilizar el resultado de uno de los campos para acceder a los valores de una tabla, pongo el ejemplo:
Tenemos una tabla con agentes y otra llamada semanas, que tiene un campo por semana (39,40;41) y las horas que ha trabajado cada agente esa semana. El problema es que en la consulta, si pongo semana. 39, me da los valores fijos de esa semana y la idea es que nos pida el número de semana para posteriormente mostrar los valores. No tienen que tocar la consulta, pues se realizará a través de un informe.
En realidad, sería cambiar el campo de la tabla semana dependiendo de lo que pongamos.
No sé si me he explicado.
Gracias y un saludo.

1 Respuesta

Respuesta
1
Lo que tienes que hacer para que te pida el valor de la semana cuando ejecutes la consulta, es lo siguiente:
Abre tu consulta en vista diseño y ubicate en el campo que deseas filtrar, si ese campo se llama "semanas", entonces ve a la casilla que indica Criterios ( aparece bajo el cuadrito que dice mostrar en la consulta) y en esa casilla debes escribir [semana]
Así entre cochetes cuadrados, como ves se debe repetir entre estos corchetes el nombre del campo, de esta forma cada vez que ejecutes la consulta, se te pedirá el valor que buscas y la consulta te devolverá solo los datos que tu pediste
Gracias por la respuesta, hasta ahí he llegado y sé que marcándolo en criterio puedo filtrar el resultado, pero lo que necesito es que dependiendo la variable que ponga, acceda a un registro u otro de una tabla, te pongo el ejemplo:
Tenemos la tabla semanas y dentro de semanas 52 registros del 1-52. Si al lanzar la consulta introduzco 23, me muestra los valores almacenados en la tabla semanas. 23 y así sucesivamente, me mostraría siempre la información guardada en la semana que pongamos.
Mmmm. A ver colocando [semana] en el campo criterio cada vez que ejecutes la consulta se abrirá un cuadrito de texto que te pedirá que ingreses el valor buscado, y de esta forma podrás recuperar la info especifica, es decir el registro especifico. ¿Cuándo habkals de variable a que te refieres?. ¿Al valor buscado?.
¿Lo qué entendí de tu pregunta es si tienes n registros en tabla semana deseas poder extraer uno específicamente dependiendo del valor que indiques o me equivoco?
Gracias de nuevo calvuch. Como bien dices, lo que quiero es que access nos pida el nombre de la tabla para listar su contenido; semana! 39, semana! 40, etc...

Este sería el formato de la tabla.

Y esta la consulta.
Estuve revisando tu tema, pero para lo que tu quieres. No se me ocurre nada más que implementar una consulta sql en algún botón de tu formulario, mediante un recordset DAO poder consultar la tabla seleccionando el campo que tu deseas y los registros resultyantes si los hay, arrojarlos a algún list,
sorry es lo único que se me ocurre por ahora.
Bueno, por el momento se va a trabajar desde la misma consulta, no lo voy a vincular a un informe; ¿Sería posible implementar la consulta sql desde la misma consulta y que al lanzarla nos pida el nombre del campo a listar?
La idea de ralizarlo mediante SQL es para no tener que pasar por la consulta que ya tienes creada. La idea de trabajar mediante sql es que te da la flexibilidad necesaria para poder manejar los datos a tu antojo.
Por lo general en las consultas que he visto en Access la utilización de comodines como el [] da buen resultado, filtrando Datos específicos de los registros, pero cuando deseas optar por seleccionar campos específicos de una tabla allí el tema es algo más complejo ( al menos para mi), en ese caso optaría por SQL, pero eso depende del gusot de cada usuario
Gracias de nuevo por la paciencia. Entonces yo daría un paso atrás y la pregunta sería cómo desde SQL al listar datos de la tabla, puedo hacer un requester o pregunta e introducir el nombre de la tabla o el campo a mano.
SELECT AGENTES_CAPTACION.[37]
FROM AGENTES_CAPTACION;
Al ejecutar la consulta, necesitaría poder cambiar el campo 37 por 38, 39, etc... de forma que me muestre los datos de la columna indicada, ¿es posible desde sql?.
Esta super bein el query
Para poder solucionar el tema del número [37], te sugiero que ese valor se lo pases a una variable,
Te quedaría algo así como:
SELECT AGENTES_CAPTACION.[A]
FROM AGENTES_CAPTACION;
En donde la variable A le pasa el valor del número de tabla al Query
Yo lo hago así y no da problemas
Bien, ejecutando la consulta tay y como me dices, me pide el valor de SELECT AGENTES_CAPTACION.[A] Y al ponerle AGENTE que es nombre del campo que quiero listar, me asigna ese valor y me sale el listado con todos los campos como AGENTE. ¿Qué estoy haciendo mal?.
a ver si le pasaste el valor a la variable A, entonces debes escribir el SQL de esta forma
SELECT AGENTES_CAPTACION.[ " & A & " ] 
asi concatenando la variable con el resto de la sentencia sql, recuerda que las sql son string
aca corri un ejemplo con tu tabal semana y funciona bien
Nuevamente gracias por la paciencia... no hay manera, aunque lo ponga como [ " & A & " ], cuando me pide el valor y le introduzco 37 que es el campo a listar, me muestra tolas las filas con valor 37. Hay algo que me estoy dejando, está claro.
En mi base de prueba hago:
Private Sub Comando6_Click()
Dim db As DAO.Database
Dim r As DAO.Recordset
Dim sql As String
Dim A As Variant
A = InputBox("indica la semana", "Semana")
sql = "SELECT semana.login, semana.[" & A & "] FROM semana;"
Set db = CurrentDb()
Set r = db.OpenRecordset(sql)
r.MoveLast
r.MoveFirst
Do Until r.EOF = True
    MsgBox r("login") & " " & r(A)
r.MoveNext
DoEvents
Loop
r.Close
db.Close
Set r = Nothing
Set db = Nothing
End Sub
IMPORTANTE: ojo con la linea MsgBox r("login") & " " & r(A) esto te presenta un mensaje en pantalla con cada registro, así que tu modifícala ( yo tengo 4 registros nada más) si quieres listar la info a un list puedes poner list1. aditem r("login") & " " & r(A)
Esto es tomando como ejemplo tu tabla semana
esto esta el el evento click de un botón
acá funciona bien, no me explico que pasa con tu script

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas