Demasiada compleja para una consulta
abjs
-
abjs -
abjs -
Hola,
soy principiante en Access, he creado una base de datos para la nómina pero ¡mi consulta es demasiado compleja!
¿cómo hacerlo?
Configuración: Windows XP / Firefox 8.0
soy principiante en Access, he creado una base de datos para la nómina pero ¡mi consulta es demasiado compleja!
¿cómo hacerlo?
Configuración: Windows XP / Firefox 8.0
3 respuestas
-
¿cómo que es demasiado complejo?
complejo en el sentido de que no sabes hacer tu solicitud, o complejo en el sentido de que tu base de datos ha sido mal pensada y por lo tanto mal creada...
--
¡Deja de fallar la prueba de Turing! -
-
-
¿cómo hacer si pego el código no funciona?
SELECT Tâches.[DATE PAYE], Tâches.[Affecté à], Employés.[LIBELLE CI NOM Prénom], Employés.DTNAISS, Employés.Nationality, Employés.[Etat civil], Employés.Ville, Employés.Département, Employés.N°_CNPS, Employés.DATEENTREESTE, Round([BASE]/176*[HNORMALE]) AS [salaire base], IIf([TYPE PAYE]='marée',Round([sursalaire]*[HNORMALE]),Round([SURSALAIRE RECUP]*[HNORMALE])) AS SURS, Round(([BASE]/176)*1.15*[HEURES SUPPLEMENTAIRES A 15%]) AS hsup15, Round(([BASE]/176)*1.5*[HEURES SUPPLEMENTAIRES A 50%]) AS hsup50, Round(([BASE]/176)*1.75*[HEURES SUPPLEMENTAIRES A 75%]) AS hsup75, IIf([TYPE PAYE]='marée',30000,0) AS primtrav, IIf([TYPE PAYE]='marée',8500,0) AS primMER, IIf([TYPE PAYE]='marée',8500,0) AS primRisque, IIf([TYPE PAYE]='marée',[% PRIME]*[POSITION]![PRIME DE PERFORMANCE],0) AS primPerf, Round([salaire base]+[SURS]+[hsup15]+[hsup50]+[hsup75]+[primMER]+[primRisque]+[primtrav]+[primPerf]) AS Brutimp, Round([Brutimp]*0.012) AS [IS], Round([Brutimp]*0.8) AS bcn, Round(IIf([bcn]<130000,([bcn]-50000)*0.015,IIf([bcn]<200000,(([bcn]-130000)*0.05)+1200,IIf([bcn]>200000,([bcn]-200000)*0.1+4700,0)))) AS CN, Employés.PARTS, Round((([bcn]-([IS]+[CN]))*0.85)) AS bigr, Round(IIf([bigr]/[PARTS]<=45583,(([bigr]*0.0909)-([PARTS]*2273)),IIf([bigr]/[PARTS]<=81583,(([bigr]*0.1304)-([PARTS]*4076)),IIf([bigr]/[PARTS]<=126583,(([bigr]*0.1666)-([PARTS]*7031)),IIf([bigr]/[PARTS]<=220333,(([bigr]*0.2)-([PARTS]*11250)),IIf([bigr]/[PARTS]<=389083,(([bigr]*0.2592)-(24306*[PARTS])),IIf([bigr]/[parts]<=842166,(([bigr]*0.3103)-(44181*[PARTS])),IIf([bigr]/[parts]>=842167,(([bigr]*0.375)-(98633*[PARTS])),0)))))))) AS IGR, Round([Brutimp]*0.032) AS CNPS, Round([Brutimp]*0.012) AS CNlocpat, Round([Brutimp]*0.004) AS TaxApp, Round([Brutimp]*0.006) AS TaxFormPro, Round(IIf([Brutimp]>70000,70000*0.02,[Brutimp]*0.02)) AS CNPSAcc, Round(IIf([Brutimp]>70000,70000*0.0575,[Brutimp]*0.0575)) AS CNPSprestfam, [IS]+[IGR]+[CN]+[ARRONDI DE PAIE<0] AS TotRetenue, [ARRONDI DE PAIE]+[Brutimp]+[TRANSPORT] AS TotGAINS, Round([TotGAINS]-[TotRetenue]) AS [NET à Payer], Round([net à payer]-[percu]) AS du, *
FROM Employés RIGHT JOIN (([POSITION] INNER JOIN Tâches ON POSITION.ID = Tâches.POSITION) LEFT JOIN paye ON Tâches.ID = paye.ID_TACHE) ON Employés.ID = Tâches.[Affecté à]
ORDER BY Tâches.[DATE PAYE], Tâches.[Affecté à]; -
-
-
SELECT Tareas.[DATE PAYE], Tareas.[Afectado a], Empleados.[LIBELLE CI NOM Prénom], Empleados.DTNAISS, Empleados.Nationality, Empleados.[Estado civil], Empleados.Ville, Empleados.Département, Empleados.N°_CNPS, Empleados.DATEENTREESTE, Round([BASE]/176*[HNORMALE]) AS [sueldo base], IIf([TYPE PAYE]='marée', Round([sursalaire]*[HNORMALE]), Round([SURSALAIRE RECUP]*[HNORMALE])) AS SURS, Round(([BASE]/176)*1.15*[HEURES SUPPLEMENTAIRES A 15%]) AS hsup15, Round(([BASE]/176)*1.5*[HEURES SUPPLEMENTAIRES A 50%]) AS hsup50, Round(([BASE]/176)*1.75*[HEURES SUPPLEMENTAIRES A 75%]) AS hsup75, IIf([TYPE PAYE]='marée',30000,0) AS primtrav, IIf([TYPE PAYE]='marée',8500,0) AS primMER, IIf([TYPE PAYE]='marée',8500,0) AS primRisque, IIf([TYPE PAYE]='marée',[% PRIME]*[POSITION]![PRIME DE PERFORMANCE],0) AS primPerf, Round([salaire base]+[SURS]+[hsup15]+[hsup50]+[hsup75]+[primMER]+[primRisque]+[primtrav]+[primPerf]) AS Brutimp, Round([Brutimp]*0.012) AS [IS], Round([Brutimp]*0.8) AS bcn, Round(IIf([bcn]<130000, ([bcn]-50000)*0.015, IIf([bcn]<200000, (([bcn]-130000)*0.05)+1200, IIf([bcn]>200000,([bcn]-200000)*0.1+4700,0)))) AS CN, Empleados.PARTS, Round((([bcn]-([IS]+[CN]))*0.85)) AS bigr, Round(IIf([bigr]/[PARTS]<=45583, (([bigr]*0.0909)-([PARTS]*2273)), IIf([bigr]/[PARTS]<=81583, (([bigr]*0.1304)-([PARTS]*4076)), IIf([bigr]/[PARTS]<=126583, (([bigr]*0.1666)-([PARTS]*7031)), IIf([bigr]/[PARTS]<=220333, (([bigr]*0.2)-([PARTS]*11250)), IIf([bigr]/[PARTS]<=389083, (([bigr]*0.2592)-(24306*[PARTS])), IIf([bigr]/[parts]<=842166, (([bigr]*0.3103)-(44181*[PARTS])), IIf([bigr]/[parts]>=842167, (([bigr]*0.375)-(98633*[PARTS])),0)))))))) AS IGR, Round([Brutimp]*0.032) AS CNPS, Round([Brutimp]*0.012) AS CNlocpat, Round([Brutimp]*0.004) AS TaxApp, Round([Brutimp]*0.006) AS TaxFormPro, Round(IIf([Brutimp]>70000,70000*0.02,[Brutimp]*0.02)) AS CNPSAcc, Round(IIf([Brutimp]>70000,70000*0.0575,[Brutimp]*0.0575)) AS CNPSprestfam, [IS]+[IGR]+[CN]+[ARRONDI DE PAIE<0] AS TotRetenue, [ARRONDI DE PAIE]+[Brutimp]+[TRANSPORT] AS TotGAINS, Round([TotGAINS]-[TotRetenue]) AS [NET a pagar], Round([net a pagar]-[percu]) AS del, * FROM Empleados RIGHT JOIN (([POSITION] INNER JOIN Tareas ON POSITION.ID = Tareas.POSITION) LEFT JOIN paye ON Tareas.ID = paye.ID_TACHE) ON Empleados.ID = Tareas.[Afectado a] ORDER BY Tareas.[DATE PAYE], Tareas.[Afectado a];
-
-
¿En qué consiste exactamente tu solicitud? ¿Y no hay forma de simplificarla? ¿De dividirla en varias consultas? ¿De gestionar una parte en código en lugar de la consulta? -- Stop failing the Turing test!
-
-
sé que no es la respuesta que quieres escuchar. pero para mí, tú tomas el problema al revés...
acceso a la razón... (sí, dicho así, es raro), tu solicitud es demasiado compleja.
demasiado compleja para un programa, pero también demasiado compleja para un humano.
será imposible de mantener, o de hacer evolucionar.
para mí la solución consiste en encapsular la consulta dentro de un programa, en lugar de encapsular el programa dentro de la consulta -
-
-
-