¿Cómo puedo evitar omisiones en una consulta?

Estoy trabajando en una base de datos que permita mejorar la gestión del personal de mi departamento. Concretamente ando dándole vueltas al tema de las incidencias (vacaciones, ausencias parciales, bajas...) Lo he montado todo en un formulario a partir de subformularios continuos y he habilitado una especie de calculadora que me saca los totales y los días pendientes de disfrute, y la cosa queda de la siguiente manera:

El problema es que ahora me gustaría crear un informe actualizable mes a mes en el que figuren todas las eventualidades que se van registrando en ese periodo de tiempo. Mi primera idea fue basarlo en una consulta que recogiera esta información, pero sucede que Access (no soy ningún experto, disculpadme) sólo me devuelve los registros para los que existe información en todos los campos. Es decir, que si por ejemplo relaciono la matrícula de empleado con las vacaciones, días por asuntos sindicales etc, la consulta sólo me devuelve a los empleados que comparten esas incidencias y omite a quién, por ejemplo, sólo ha disfrutado vacaciones, o no se ha ausentado por ningún concepto, cuando lo que necesitaría sería que me devolviera ceros valores nulos o espacios en blanco para esas celdas. No estoy seguro de si me he expresado con claridad, pero si no fuera el caso, decídmelo y estaré encantado de ampliaros información de una forma más gráfica.

Respuesta
1

Cuando se quiere obtener todos los registros de una tabla del lado izquierdo con los registros de una tabla de la derecha se hace una consulta con LEFT JOIN. Si no tiene conocimientos de SQL lo puede hacer con la cuadricula de diseño de Access. Observe este ejemplo.

TABLAS

TABLA INCIDENCIAS

Observe que únicamente los empleados con id 1, 2 y 3 tienen incidencias.

CONSULTA

Al ejecutar la consulta tengo los 6 empleados.

Diseño de la consulta

Observe en las propiedades de la combinación que se marca la opción 2 "Incluir TODOS los registros de tblempleados y solo aquellos...

También lo puede hacer con SQL y fijar ésta como origen de datos, por ejemplo. En el evento al cargar del formulario se ingresa este código.

Private Sub Form_Load()
  Dim strSQl As String
  strSQl = "SELECT tblempleados.idempleado" & vbCrLf
  strSQl = strSQl & "           , tblempleados.nombre" & vbCrLf
  strSQl = strSQl & "           , tblincidencias.diasvacaciones" & vbCrLf
  strSQl = strSQl & "           , tblincidencias.diassindicales" & vbCrLf
  strSQl = strSQl & "        FROM tblempleados " & vbCrLf
  strSQl = strSQl & "   LEFT JOIN tblincidencias " & vbCrLf
  strSQl = strSQl & "          ON tblempleados.idempleado = tblincidencias.idempleado;"
  Me.RecordSource = strSQl
End Sub

Ya es cuestión de gustos y conocimientos.

¡Un millón de gracias, de verdad! 

Con gusto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas