PROBLEMAS SELECT, SUM1() Y SUM2()
Publicado por genosol (1 intervención) el 08/09/2009 10:44:36
Buenos días,
Tengo dos tablas. Una de horas asignadas a proyectos y otra con facturas de proyectos.
tabla horas: idpersonal, abreviado, idproyecto, horas
tabla facturas:idproyecto, totales (totalfactura)
Quería mostrar en un data grid idpersonal, idproyecto, horas_totales (por proyecto), total_factura (por proyecto)
Set rspro = New ADODB.Recordset
rspro.CursorLocation = adUseClient
He intentado hacerlo de varias formas pero siempre me da distintos errores (error agreado, no se han especificado parámetros requeridos, etc...)
sql = "SELECT HORAS.Idproyecto, sum(horas.horas) as HORAS_TOTALES, ISNULL(FACTURAS.SUM_TOTALES,0) AS TOTAL_FACTURAS FROM HORAS AS HORAS LEFT OUTER JOIN (SELECT sum(TOTALES) as SUM_TOTALES from FACTURAS GROUP BY idproyecto) as FACTURAS ON HORAS.IDPROYECTO=FACTURAS.IDPROYECTO GROUP BY HORAS.IDPROYECTO ORDER BY HORAS.IDPROYECTO"
También lo he intentado vinculándolas a una tabla más. Aquí si me muestra registros, pero los muestra mal. Los totales de las facturas están cuadriplicados y, a veces, las horas están duplicadas:
sql = "SELECT horas.idpersonal as ID, horas.abreviado as PERSONAL, horas.idproyecto as Nº_PROYECTO, sum(horas.horas) as HORAS_TOTALES, sum(facturas.totales) as TOTAL_FACTURAS from horas INNER JOIN (PROYECTO INNER JOIN FACTURAS ON proyecto.idproyecto=facturas.idproyecto) ON horas.idproyecto=proyecto.idproyecto group by horas.idpersonal, horas.abreviado, horas.idproyecto order by horas.idproyecto"
//error no se han especificado los parámetros requridos
sql = "Select horas.idpersonal as id, horas.abreviado as personal, horas.idproyecto as N_proyecto, horas.total_horas as HORAS_TOTALES,todo.sum_totales as TOTAL_FACTURA from (SELECT IDPERSONAL, ABREVIADO, IDPROYECTO, SUM(HORAS) AS TOTAL_HORAS FROM HORAS GROUP BY idpersonal, abreviado, IDPROYECTO) AS HORAS INNER JOIN (SELECT SUM(TOTALES) AS sum_totales FROM FACTURAS GROUP BY IDPROYECTO) AS TODO ON HORAS.IDPROYECTO=todo.IDPROYECTO"
rspro.Open sql, con, adOpenStatic, adLockReadOnly, adCmdText //Línea del error
Set DGproyectos.DataSource = rspro
No dejo de darle vueltas. Pero siempre termino en el error "no se ha especificado parámteros". Me pueden ayudar?
un saludo
Geni
Tengo dos tablas. Una de horas asignadas a proyectos y otra con facturas de proyectos.
tabla horas: idpersonal, abreviado, idproyecto, horas
tabla facturas:idproyecto, totales (totalfactura)
Quería mostrar en un data grid idpersonal, idproyecto, horas_totales (por proyecto), total_factura (por proyecto)
Set rspro = New ADODB.Recordset
rspro.CursorLocation = adUseClient
He intentado hacerlo de varias formas pero siempre me da distintos errores (error agreado, no se han especificado parámetros requeridos, etc...)
sql = "SELECT HORAS.Idproyecto, sum(horas.horas) as HORAS_TOTALES, ISNULL(FACTURAS.SUM_TOTALES,0) AS TOTAL_FACTURAS FROM HORAS AS HORAS LEFT OUTER JOIN (SELECT sum(TOTALES) as SUM_TOTALES from FACTURAS GROUP BY idproyecto) as FACTURAS ON HORAS.IDPROYECTO=FACTURAS.IDPROYECTO GROUP BY HORAS.IDPROYECTO ORDER BY HORAS.IDPROYECTO"
También lo he intentado vinculándolas a una tabla más. Aquí si me muestra registros, pero los muestra mal. Los totales de las facturas están cuadriplicados y, a veces, las horas están duplicadas:
sql = "SELECT horas.idpersonal as ID, horas.abreviado as PERSONAL, horas.idproyecto as Nº_PROYECTO, sum(horas.horas) as HORAS_TOTALES, sum(facturas.totales) as TOTAL_FACTURAS from horas INNER JOIN (PROYECTO INNER JOIN FACTURAS ON proyecto.idproyecto=facturas.idproyecto) ON horas.idproyecto=proyecto.idproyecto group by horas.idpersonal, horas.abreviado, horas.idproyecto order by horas.idproyecto"
//error no se han especificado los parámetros requridos
sql = "Select horas.idpersonal as id, horas.abreviado as personal, horas.idproyecto as N_proyecto, horas.total_horas as HORAS_TOTALES,todo.sum_totales as TOTAL_FACTURA from (SELECT IDPERSONAL, ABREVIADO, IDPROYECTO, SUM(HORAS) AS TOTAL_HORAS FROM HORAS GROUP BY idpersonal, abreviado, IDPROYECTO) AS HORAS INNER JOIN (SELECT SUM(TOTALES) AS sum_totales FROM FACTURAS GROUP BY IDPROYECTO) AS TODO ON HORAS.IDPROYECTO=todo.IDPROYECTO"
rspro.Open sql, con, adOpenStatic, adLockReadOnly, adCmdText //Línea del error
Set DGproyectos.DataSource = rspro
No dejo de darle vueltas. Pero siempre termino en el error "no se ha especificado parámteros". Me pueden ayudar?
un saludo
Geni
Valora esta pregunta


0