On 26 mar, 15:43, "Ju@nK" <con...@hotmail.com> wrote:
¿Quieres asignarlos a algún trabajador en concreto?
En la 3ª es donde tienes que usar el nz
ej.:
SELECT cDiasDelPeriodo.Fecha, nz(cIncentivosPorPeriodo.IdTrabajador,0) as
IdTrabajadores, cIncentivosPorPeriodo.*
FROM cIncentivosPorPeriodo RIGHT JOIN cDiasDelPeriodo ON
cIncentivosPorPeriodo.FechaParte = cDiasDelPeriodo.Fecha;
**
Salu2/Regards
Ju@nK [MVP Access] 2006/09
[DCE2003 ***] + VSTO [DCE2005 **]http://juank.mvps.orghttp://www.juank.es
Correos personales o preguntas particulares en mi grupohttp://groups.google.es/group/...w.juank.tk
¿Que es un MVP?, entérate enhttp://mvp.support.microsoft.com
**
"P3dro" <ppo...@terra.es> escribió en el mensajenews:acc7a98b-85bb-4ddf-b67c-2ae092f5229f@q23g2000yqd.googlegroups.com...
Voy a poner todos los SQL para que se vean los pasos:
1ª Consulta para sacar "todos los días de un período"
SELECT tNumeroDias.NumDia+CDate([FechaInicial])-1 AS Fecha,
[FechaInicial] AS Expr1, [FechaFinal] AS Expr2
FROM tNumeroDias
WHERE ((([tNumeroDias.NumDia]
+CDate([FechaInicial])-1)<Íate([FechaFinal])));
2ª Consulta los trabajos sin ningún filtro ni restricción
SELECT tPartes.FechaParte, tPartes.NumObra, tClientes.NomCliente,
tIncentivos.Superficie, tIncentivos.Espesor, tIncentivos.IdTrabajador,
tTrabajadores.ApellidosNombre, tIncentivos.ImporteOficial,
tIncentivos.ImporteAyte, tIncentivos.HorasAyte
FROM ((tClientes INNER JOIN (tPartes INNER JOIN tObras ON
tPartes.NumObra = tObras.NumObra) ON tClientes.IdCliente > tObras.IdCliente) INNER JOIN tIncentivos ON tPartes.IdParte > tIncentivos.IdParte) INNER JOIN tTrabajadores ON
tIncentivos.IdTrabajador = tTrabajadores.IdTrabajador
GROUP BY tPartes.FechaParte, tPartes.NumObra, tClientes.NomCliente,
tIncentivos.Superficie, tIncentivos.Espesor, tIncentivos.IdTrabajador,
tTrabajadores.ApellidosNombre, tIncentivos.ImporteOficial,
tIncentivos.ImporteAyte, tIncentivos.HorasAyte;
3ª Consulta uniendo las 2 anteriores, sacar los trabajos (de la 2ª
consulta) sólo del período seleccionado (1ª consulta):
SELECT cDiasDelPeriodo.Fecha, cIncentivosPorPeriodo.*
FROM cIncentivosPorPeriodo RIGHT JOIN cDiasDelPeriodo ON
cIncentivosPorPeriodo.FechaParte = cDiasDelPeriodo.Fecha;
Esta tercera consulta presenta los datos correctamente, pero en los
días donde no hay trabajos, sólo aparece la fecha del campo
cDiasDelPeriodo.Fecha ("forzada" en la 1ª consulta) sin datos de
trabajo.
Elinformedebe presentar todos los días de la primera consulta,
agrupados por trabajador, y en los días donde haya trabajos, presentar
esos datos, en los que no hay, sólo debe sacar la fecha, pero debe
sacarla.
No sé si el problema es por el hecho de que la fecha "forzada" no
tiene asignado ningún IdTrabajador y al agruparlo en elinformesalen
aparte.
Espero que me digáis algo. Gracias y un saludo.
Leer las respuestas