Access - ¿ Como pasar una SQL a una consulta que existe en la BD en Access ?

 
Vista:
Imágen de perfil de Jesus L
Val: 8
Ha aumentado su posición en 331 puestos en Access (en relación al último mes)
Gráfica de Access

¿ Como pasar una SQL a una consulta que existe en la BD en Access ?

Publicado por Jesus L (4 intervenciones) el 04/03/2021 16:53:09
Hola a tod@s,

Sirva estas primeras lineas de presentación, ya que no he encontrado ningún donde presentarse antes de escribir un mensaje.


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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

¿ Como pasar una SQL a una consulta que existe en la BD en Access ?

Publicado por Anonimo (3316 intervenciones) el 04/03/2021 22:36:42
Lo posteado es .... la SQL de la consulta y lo que se debería necesitar es modificar los datos referentes.

En la propia consulta (bajo los campos 'Codigo_Obra' y 'Capitulo_Obra') se hace referencia a los cuadros de texto del formulario en que se hace la selección de los datos y .... debería funcionar.

EL orden no funcionara en el informe, tiene sus propios (y mas eficaces) métodos para eso.

En el generador de consultas se puede utilizar el generador de expresiones (los tres puntitos) en la ventana que se abre se puede navegar y seleccionar cualquier objeto, se selecciona y después se acepta (del resto se encarga Access).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿ Como pasar una SQL a una consulta que existe en la BD en Access ?

Publicado por Jesus (1 intervención) el 05/03/2021 13:15:47
Hola Anonimo,

no soy capaz de entender lo que me dices. Perdona, pero soy un poco novoto en Access. Ya he conseguido que funcione el informe.

Era necesario que la consutla SQL se asignara a la propiedad RecorSource = " SELECT..."
Como digo ahora funciona, pero el listado no sale corractamente.

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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿ Como pasar una SQL a una consulta que existe en la BD en Access ?

Publicado por Anonimo (3316 intervenciones) el 05/03/2021 19:28:04
Se supone que al seleccionar unos datos y aplicarlos como filtro, el informe solo presentara los datos que cumplan esa condición, sin condiciones presentara todo el contenido sin aplicar un filtro.

Como origen de un informe se puede utilizar una SQL (la SQL publicada se aprecia que esta generada con el editor integrado en Access) o la propia consulta. También se puede aplicar un filtro en la llamada al informe.

Cada método tiene sus ventajas e inconvenientes, en este caso el utilizar la consulta seria un proceso mas trasparente para el usuario, basta con aplicar el filtro en la consulta y que este filtro tome los datos del formulario que se utilice para interactuar con el usuario.

Sobre las causas que pueden dar lugar a un informe mejor o peor resultado ... Access hará lo que le indique el programador, y cuando se programa ('por lo que pudiera llegar a pasar') se hace de forma previa una copia de seguridad y en caso de que se llegue a un punto sin retorno por un fallo en la programación, queda el recurso de utilizar la papelera y recuperar la copia guardada.

En los informes se pueden crear agrupaciones, las agrupaciones permiten sub-agrupaciones y cada agrupación (o sub-agrupación) tienen cabecera y pie que se pueden utilizar o no a voluntad (por ejemplo para dar resultados parciales).

Es difícil en la distancia hacer un análisis forense para encontrar un error, la programación y metodología generalmente es muy personal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar