¿ Pasar una SQL a una consulta que existe en BD ? |
Responder
|
| Autor | |||
Jesus L
Nuevo
Unido: 04/Marzo/2021 Localización: Huelva Estado: Sin conexión Puntos: 22 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Tema: ¿ Pasar una SQL a una consulta que existe en BD ?Enviado: 04/Marzo/2021 a las 17:14 |
||
|
Hola a tod@s, Estoy haciendo para la empresa en la que trabajo de una gestión de costes. Para ello he creado la BD en Access y gestiono los partes de trabajo mediante un formulario que funciona perfectamente. El problema lo tengo al sacar esos partes en un informe. Me intentaré explicar mejor. La BD tiene entre otras 2 tablas que guardan los partes de trabajo. Una de se llama “ CabeceraPartes” y la otra “ LineasPartesTrabajao”. En la Cabecera se guardan los datos del trabajador, la fecha, la obra en la que trabajan, entre otros, y en la segunda, se guardan las distintas obras, el tiempo, el costo, etc, etc, de cada trabajador y para ese día. La cosa es que
necesito sacar un listado con los partes de trabajo de la obra que seleccione
el usuario en el menú principal. Es decir, en el menú principal al hacer click
en la casilla de verificación de “Informe partes de mano de obra “, se activan 2 cuadros en los que se le pide al
usuario que introduzca el código de la obra y el capítulo de dicha obra, en
definitiva 2 parámetros. Una vez que tengo
los datos de la obra que quiere el usuario listar, hago click sobre el botón “Vista Previa”, también situado
en el formulario MenuPrincipal y construyo
la siguiente instrucción SQL: ( Voy a
separar las partes para que se vea más claro ) SELECT
CabeceraPartes.Codigo_Trabajador, CabeceraPartes.Nombre_Trabajador,
CabeceraPartes.Año, LineasPartesTrabajo.Numero_Parte,
LineasPartesTrabajo.Fecha_Parte, LineasPartesTrabajo.Codigo_Obra,
LineasPartesTrabajo.Capitulo_Obra, LineasPartesTrabajo.Horas_Trabajadas,
LineasPartesTrabajo.Codigo_Seccion, LineasPartesTrabajo.Precio_Hora,
LineasPartesTrabajo.Concepto, LineasPartesTrabajo.Total_linea FROM
CabeceraPartes RIGHT JOIN LineasPartesTrabajo ON CabeceraPartes.[Numero_Parte]
= LineasPartesTrabajo.[Numero_Parte] WHERE
(((LineasPartesTrabajo.Codigo_Obra)=888) AND
((LineasPartesTrabajo.Capitulo_Obra)=2)) ORDER BY
CabeceraPartes.Codigo_Trabajador, LineasPartesTrabajo.Fecha_Parte; A partir de ahí
es donde no sé seguir. La consulta
existe, es más cuando pongo la instrucción
arriba indicada, funciona perfectamente.
En este caso estoy forzando que me lista los datos dela obra 888 y el capítulo 2 de dicha obra. Pero claro, eso no puede ser. El informe debe
listar la obra que selecciones el usuario en el menú principal en las casillas
habilitadas para tal efecto. La pregunta es ¿
cómo se hace para poderle pasar la instrucción SQL a la consulta “Consulta_Partes_Trabajo”?. Especificar que los datos de la obra y su
capitulo que debo consultar se extraen de 2 cuadros de textos del formulario MenuPrincipal. Si hay algo que
no está claro, por favor, no dudéis en decírmelo.
Intento responder rápido. Saludos y gracias
de antemano. |
|||
|
Siempre aprendiendo.
|
|||
![]() |
|||
rokoko
Colaborador
Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3071 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 04/Marzo/2021 a las 17:51 |
||
|
Algo asi... pruebalo a ver
WHERE (((LineasPartesTrabajo.Codigo_Obra)=Forms!NombreFormulario!NombreCuadroTexto) AND ((LineasPartesTrabajo.Capitulo_Obra)=Forms!NombreFormulario!NombreCuadroTexto)) Si esa SQl la has sacado de una consulta, en criterios de esos campos que quieres filtrar por Formularios!NombreFormulario!NombreCuadroTexto, pasa a vista sql y veras como queda
|
|||
![]() |
|||
Jesus L
Nuevo
Unido: 04/Marzo/2021 Localización: Huelva Estado: Sin conexión Puntos: 22 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 04/Marzo/2021 a las 18:50 |
||
|
Gracias @rokoko por tu respuesta.
El problema es que no sé dónde tengo que poner la instrucción para que cuando pulse el botón Vista Previa funcione. Saludos |
|||
|
Siempre aprendiendo.
|
|||
![]() |
|||
rokoko
Colaborador
Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3071 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 04/Marzo/2021 a las 19:30 |
||
Intruccion te refieres a la consulta en SQL?? Por lo que he entendido la quieres en un informe y un formulario?' En un informe deberia ir con Recordsource....en el Evento al abrir del informe Me.RecordSource="Select....." o Tambien basado en consulta norma.l Y en el formulario igual o basado en una consulta normal y en en un boton un Me.Requery para que una vez actualices los cuadros de texto se actualice el formulario con los nuevos datos filtrados... En ambos casos SQL o consulta normal deberian ir como criterio lo que te he explicado antes, para que pille los datos de los cuadros de texto Saludos
|
|||
![]() |
|||
Jesus L
Nuevo
Unido: 04/Marzo/2021 Localización: Huelva Estado: Sin conexión Puntos: 22 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 05/Marzo/2021 a las 13:05 |
||
Con la información que me has facilitado,
El procedimiento de al abrir el Informe ha quedado así. Private Sub Report_Open(Cancel As Integer) Dim StrSQL, Linea1, linea2, linea3, linea4 As String Linea1 = "SELECT CabeceraPartes.Codigo_Trabajador, CabeceraPartes.Nombre_Trabajador, CabeceraPartes.Año, LineasPartesTrabajo.Numero_Parte, LineasPartesTrabajo.Fecha_Parte, LineasPartesTrabajo.Codigo_Obra, LineasPartesTrabajo.Capitulo_Obra, LineasPartesTrabajo.Horas_Trabajadas, LineasPartesTrabajo.Codigo_Seccion, LineasPartesTrabajo.Precio_Hora, LineasPartesTrabajo.Concepto, LineasPartesTrabajo.Total_linea " linea2 = "FROM CabeceraPartes RIGHT JOIN LineasPartesTrabajo ON CabeceraPartes.[Numero_Parte] = LineasPartesTrabajo.[Numero_Parte]" linea3 = "WHERE (((LineasPartesTrabajo.Codigo_Obra) = " & Form_MenuPrincipal.Txt_Obra.Value & ") AND ((LineasPartesTrabajo.Capitulo_Obra) = " & Form_MenuPrincipal.Txt_Capitulo & ")) " linea4 = "ORDER BY CabeceraPartes.Codigo_Trabajador, LineasPartesTrabajo.Fecha_Parte;" StrSQL = Linea1 + linea2 + linea3 + linea4 ' Debug.Print StrSQL ' Asignamos la Instruccion SQL a la consulta conla propiedad RecorSource Me.RecordSource = StrSQL End Sub Como digo, ahora funciona, aunque no como yo quisiera. En las pruebas de vista previa que hice, cada trabajador tiene asignada una hoja. Es decir, en la pagina 1, se indica el nombre y código del primer trabajador y mas abajo, en el detalle, todas las horas que ha Trabajado en cada día del mes. Luego en el Pie del código del trabajador aparece la suma de las horas trabajadas. Aquí en la sección de "Pie del código del trabajador" tengo puesto la propiedad del formato " Forzar nueva pagina " = Después de la sección. De este modo me aseguraba que cada trabajador tuviera una pagina, aunque me saliera una ultima pagina en blanco. Pero no está funcionando así. Ahora coloca el informe ordenado por trabajador y sumando su horas, pero no respeta el forzado de nueva pagina con cada cambio de trabajador. ¿ Que es lo que estoy haciendo mal ??. Gracias de antemano y saludos.
|
|||
|
Siempre aprendiendo.
|
|||
![]() |
|||
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 |