** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Selección múltiple como criterio de consulta refer
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoSelección múltiple como criterio de consulta refer

 Responder Responder
Autor
Mensaje
gadacc Ver desplegable
Nuevo
Nuevo


Unido: 18/Septiembre/2020
Localización: españa
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Tema: Selección múltiple como criterio de consulta refer
    Enviado: 24/Febrero/2021 a las 22:12
Buenos días,

A ver si podeis ayudarme:

Tengo una lista de selección múltiple en la que selecciono varios valores y ese resultado lo quiero utilizar como criterio en una consulta de referencias cruzadas.

Los valores los voy pasando a una caja de texto y los voy enlazando con una O.

Al lanzar la consulta me da un error:

Se ha producido el error 3070 en tiempo de ejecucción.

El motor de base de datos de Access no reconoce [ZZlista]' como un nombre de campo o expresión válidos

En cambio, si copio los valores en el campo criterio se ejecuta correctamente. Su SQL en este caso es:


TRANSFORM Count(Inscritos.Id) AS CuentaDeId
SELECT [Apellido 1] & " " & [Trabajadores].[Nombre] AS Expr1, Count(Trabajadores.[Apellido 1]) AS Inscrito
FROM Trabajadores RIGHT JOIN (Formación INNER JOIN Inscritos ON Formación.Id = Inscritos.IdFormación) ON Trabajadores.IdEmpleado = Inscritos.idEmpleado
WHERE (((Formación.Id)=5 Or (Formación.Id)=3 Or (Formación.Id)=21))
GROUP BY [Apellido 1] & " " & [Trabajadores].[Nombre]
PIVOT Formación.Nombre;

Si pruebo a poner una SQL con Id In (5, 3, 21) Access no reconoce la palabra TRANSFORM

¿Alguien me puede orientar?

Gracias
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 24/Febrero/2021 a las 22:50
Hola!

Prueba crear una consulta de selección con los filtros que precises, guárdala y sobre ella creas la consulta de referencias cruzadas.
Un Saludo.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14736
Enlace directo a este mensaje Enviado: 24/Febrero/2021 a las 22:51
Recorre los valores seleccionados en el cuadro de lista y los almacenas en un string. Cuando los tienes todos los metes dentro de un IN y el WHERE lo modificas. Quedaria algo así:

WHERE Formación.Id In(5,3,21)

¿Te vale?
Xavi, un minyó de Terrassa

Mi web
Arriba
gadacc Ver desplegable
Nuevo
Nuevo


Unido: 18/Septiembre/2020
Localización: españa
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 25/Febrero/2021 a las 22:50
No, vale.

Access no interpreta la palabra TRANSFORM en SQL
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14736
Enlace directo a este mensaje Enviado: 25/Febrero/2021 a las 22:55
¿Te has parado a leer el mensaje antes de enviarlo?

"No, vale" ¿Cómo quedamos? ¿no o vale?

"Access no interpreta la palabra TRANSFORM en SQL" ¿Perdón? ¿Qué significa eso?  Que yo sepa, Access interpreta perfectamente la palabra TRANSFORM. 

Vuelve a intentarlo, por favor.
Xavi, un minyó de Terrassa

Mi web
Arriba
gadacc Ver desplegable
Nuevo
Nuevo


Unido: 18/Septiembre/2020
Localización: españa
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 26/Febrero/2021 a las 21:54
Perdona Xavi. Tienes toda la razón.

Intentaré explicarme.

Lo de que no reconoce TRANSFORM era por qué estaba mal escrito.

He probado ejecutando una SQL que contenga In(2, 3, 4) pero me da un error 2342. La acción EjecutarSQL requiere como argumento una instrucción SQL.

No se cómo solucionarlo.

Gracias.


Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14736
Enlace directo a este mensaje Enviado: 26/Febrero/2021 a las 23:04
¿"Ejecutando"? ¿Cómo lo estás "ejecutando"?


Xavi, un minyó de Terrassa

Mi web
Arriba
gadacc Ver desplegable
Nuevo
Nuevo


Unido: 18/Septiembre/2020
Localización: españa
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 27/Febrero/2021 a las 00:14
Con DoCmd.RunSQL strSQL
Arriba
gadacc Ver desplegable
Nuevo
Nuevo


Unido: 18/Septiembre/2020
Localización: españa
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 27/Febrero/2021 a las 08:16
¡¡Lo conseguí!!

Implementando este código con la SQL que había creado:

   Dim dbs As DAO.Database
   Dim qdf As DAO.QueryDef
   Dim strSQL As String

   Set dbs = CurrentDb
   strSQL = "TRANSFORM count... "
   Set qdf = dbs.CreateQueryDef("APUNTADOS A CURSOS", strSQL)

Muchas gracias a todos por vuestra ayuda.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14736
Enlace directo a este mensaje Enviado: 27/Febrero/2021 a las 10:07
Solo como apunte (que ya has descubierto por tu cuenta): las consultas que se pueden ejecutar (bien con DoCmd.RunSQL, bien con CurrentDb.Execute) son las de acción (UPDATE, INSERT, DELETE SELECT.. INTO, ALTER TABLE, CREATE TABLE). Las consultas de selección sólo pueden abrirse (DoCmd.OpenQuery)
Y cualquiera de ellas puede ser asignada a una consulta (CreateQueryDef)

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
gadacc Ver desplegable
Nuevo
Nuevo


Unido: 18/Septiembre/2020
Localización: españa
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 28/Febrero/2021 a las 12:37
Gracias por el apunte Xavi.

Una pregunta, ¿Es posible integrar en un formulario una consulta de referencias cruzadas, como subformulario, y que se actualice, al pulsar un botón, sin cerrar el formulario?
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14736
Enlace directo a este mensaje Enviado: 28/Febrero/2021 a las 16:29
Si.

Para insertar:

Me!unControlSubformulario.SourceObject = "Query.NombreConsult"

Para refrescar

Me!unControlSubformulario.Form.Requery

Un saludo

EDITO: para próximas consultas, aunque estén tan relacionadas como esta, abre un nuevo hilo ya que no es lo mismo.


Editado por xavi - 28/Febrero/2021 a las 16:31
Xavi, un minyó de Terrassa

Mi web
Arriba
gadacc Ver desplegable
Nuevo
Nuevo


Unido: 18/Septiembre/2020
Localización: españa
Estado: Sin conexión
Puntos: 36
Enlace directo a este mensaje Enviado: 02/Marzo/2021 a las 23:14
Solucionado. Se puede cerrar.

Gracias.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable