Error 3141 la instrucción SELECT incluye..... |
Responder |
Autor | |
sculapio43a
Nuevo Unido: 22/Abril/2021 Localización: Colombia Estado: Sin conexión Puntos: 15 |
Tema: Error 3141 la instrucción SELECT incluye..... Enviado: 22/Abril/2021 a las 03:00 |
Hola a todo(as):
Espero pueda explicarme y me puedan colaborar: Tengo un formulario principal: FHorarios Un Subformulario: CBodega Un ListBox: listFiltro Un TextBox: txtQryHistorico Tabla Origen: Horarios Error: La instruccion SELECT incluye una palabra reservada, le falta un argumento o está mal escrito, o bien los signos de puntuación no son correctos CBodega muestra el historico de las ultimas cinco semanas, mostrando por cada CodSap el turno y la bodega de esas cinco semanas txtQryHistorico contiene CodSap de los registros que tenga en su momento lisFiltro CBodega es filtrado dependiendo de los valores que estén en txtQryHistorico, atraves del CodSap. Realmente txtQryHistorico es provisional, pues si logro correr la consulta enviaría directamente el filtro hacia CBodega desde listFiltro El codigo es: Dim maximasem As Integer Dim sqlfiltro As String maximasem = DMax("[Semana]", "Horarios") sqlfiltro = "TRANSFORM First(Temp.Valor) AS PrimeroDeValor" sqlfiltro = sqlfiltro & " SELECT Temp.CodSAP " sqlfiltro = sqlfiltro & " FROM (Select CodSAP, First(Bodega) As Valor " sqlfiltro = sqlfiltro & " Semana As Campo " sqlfiltro = sqlfiltro & " From Horarios " sqlfiltro = sqlfiltro & " WHERE Semana Between maximasem And maximasem -5 " sqlfiltro = sqlfiltro & " Group by CodSAP, Semana " sqlfiltro = sqlfiltro & " Union " sqlfiltro = sqlfiltro & " Select CodSAP, First(HoraEntrada) As Valor " sqlfiltro = sqlfiltro & " Semana As Campo " sqlfiltro = sqlfiltro & " From Horarios " sqlfiltro = sqlfiltro & " WHERE Semana Between maximasem And maximasem-5 " sqlfiltro = sqlfiltro & " Group by CodSAP, Semana) AS Temp" sqlfiltro = sqlfiltro & " WHERE Horarios.CodSAP = Forms!FHorarios.txtQryHistorico " sqlfiltro = sqlfiltro & " GROUP BY CodSAP " sqlfiltro = sqlfiltro & " ORDER BY Temp.Campo DESC " sqlfiltro = sqlfiltro & " PIVOT Temp.Campo" Me.CBodega.Form.RecordSource = sqlfiltro |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 22/Abril/2021 a las 08:15 |
Hola,
Yo pondría un punto de interrupción antes de la asignación del recordsource, copiaría la sqlfiltro y la pegaría en una consulta nueva. A ver por dónde se queja exactamente... Un saludo
|
|
sculapio43a
Nuevo Unido: 22/Abril/2021 Localización: Colombia Estado: Sin conexión Puntos: 15 |
Enviado: 22/Abril/2021 a las 22:43 |
Hola Xavi, gracia por responder, he realizado la consulta con el asistente y efectivamente me muestra que faltaba un signo coma (resaltado en rojo) justo en estas dos lineas:
sqlfiltro = sqlfiltro & " Select CodSAP, First(HoraEntrada) As Valor, " .... sqlfiltro = sqlfiltro & " UNION Select CodSAP, First(Bodega) As Valor, " Adicional estaba obviando colocar " & para los campos CodSap y Semana, y por último CBodega lo pasé a ListBox en vez de SubForm. El codigo quedó así: sqlfiltro = "TRANSFORM First(Temp.Valor) AS PrimeroDeValor" sqlfiltro = sqlfiltro & " SELECT Temp.CodSAP " sqlfiltro = sqlfiltro & " FROM (" sqlfiltro = sqlfiltro & " Select CodSAP, First(HoraEntrada) As Valor, " sqlfiltro = sqlfiltro & " Semana As Campo " sqlfiltro = sqlfiltro & " From Horarios " sqlfiltro = sqlfiltro & " WHERE Semana Between " & DMax("[Semana]", "Horarios") & " And " & DMax("[Semana]", "Horarios") - 5 & " and CodSAP" & Forms!FHorarios.txtQryHistorico sqlfiltro = sqlfiltro & " Group by CodSAP, Semana" sqlfiltro = sqlfiltro & " UNION Select CodSAP, First(Bodega) As Valor, " sqlfiltro = sqlfiltro & " Semana As Campo " sqlfiltro = sqlfiltro & " From Horarios " sqlfiltro = sqlfiltro & " WHERE Semana Between " & DMax("[Semana]", "Horarios") & " And " & DMax("[Semana]", "Horarios") - 5 & " and CodSAP" & Forms!FHorarios.txtQryHistorico sqlfiltro = sqlfiltro & " Group by CodSAP, Semana) AS Temp" sqlfiltro = sqlfiltro & " GROUP BY CodSAP " sqlfiltro = sqlfiltro & " ORDER BY Temp.Campo DESC " sqlfiltro = sqlfiltro & " PIVOT Temp.Campo" sqlfiltro = sqlfiltro Ahora surgió otro impase, la consulta solo me arroja hasta lo resaltado en azul, es decir las cinco semanas de turno, la unio no se está ejecutando. Comparé con la consulta creada mediante asistente y todo está OK, compilé y compacté pero nada. Pensé hacer dos consultas cruzadas y despues unirlas cona tercera consulta pero creo resulta muy costoso, ya que la tabla Horarios almacena todo el año de cada uno de los CodSap y no creo conveniente. Tienes alguna sugerencia para este nuevo impase?. Muchas gracias
|
|
sculapio43a
Nuevo Unido: 22/Abril/2021 Localización: Colombia Estado: Sin conexión Puntos: 15 |
Enviado: 22/Abril/2021 a las 23:04 |
Ah, por cierto si invierto Bodega y HoraEntrada entonces me trae solo las cinco semanas de Bodega y el resto de columnas quedan en blanco. Me disculpo por los errores ortográficos
|
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 22/Abril/2021 a las 23:58 |
Hola!
Si te funciona en consulta, entonces descarga ele ejemplo de este enlace del compañero rokoko para pasar de SQL a VBA http://www.mvp-access.com/foro/sql-a-vba_topic85706.html |
|
Un Saludo.
|
|
sculapio43a
Nuevo Unido: 22/Abril/2021 Localización: Colombia Estado: Sin conexión Puntos: 15 |
Enviado: 23/Abril/2021 a las 02:52 |
Hola Xavi, Mounir y Rokoko, he logrado arreglar el codigo con todas sus excelentes aportaciones, quedó así:
FiltroInicial reemplazó a txtQryHistorico sqlfiltro = "TRANSFORM First(Temp.Valor) AS PrimeroDeValor " & vbCrLf & _ "SELECT Temp.CodSAP " & vbCrLf & _ "FROM (Select CodSAP, First(Horarios.Bodega) As Valor, " & vbCrLf & _ """BSem "" & Semana As Campo " & vbCrLf & _ "From Horarios " & vbCrLf & _ "WHERE (((Horarios.Semana) Between DMax(""[Semana]"",""Horarios"") And DMax(""[Semana]"",""Horarios"")-5)) " & vbCrLf & _ "Group by Horarios.CodSAP, Semana " & vbCrLf & _ "Union Select CodSAP, First(Horarios.HoraEntrada) As Valor, " & vbCrLf & _ """TSem "" & Semana As Campo " & vbCrLf & _ "From Horarios " & vbCrLf & _ "WHERE (((Horarios.Semana) Between DMax(""[Semana]"",""Horarios"") And DMax(""[Semana]"",""Horarios"")-5)) " & vbCrLf & _ "Group by Horarios.CodSAP, Semana " & vbCrLf & _ ") AS Temp " & vbCrLf & _ "WHERE ((Temp.CodSAP)" & FiltroInicial & ")" & vbCrLf & _ "GROUP BY Temp.CodSAP " & vbCrLf & _ "ORDER BY Temp.Campo DESC " & vbCrLf & _ "PIVOT Temp.Campo;" Me.CBodega.RowSource = sqlfiltro Exitos y hasta pronto
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |