Ver Mensaje Individual
  #1  
Antiguo 23-01-2007
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Reputación: 18
efelix Va por buen camino
No se muestran los registros en el reporte

Hola a todos. Tengo el siguiente problema. Disculpenme si me extiendo en la explicación del mismo. Tengo un procedimiento almacenado en sql server 2000 con el siguiente código:

Código SQL [-]
CREATE PROCEDURE spAntiguedad
(@Proveedor int)
AS
SELECT Proveedores.IdProveedor, Proveedores.NombreProveedor, Facturas.IdFactura, Facturas.Descripcion, Facturas.Importe, Facturas.FechaRecepcion, DATEDIFF(day, FechaRecepcion, GETDATE()) AS Saldo,
CASE
WHEN DATEDIFF(day, FechaRecepcion, GETDATE()) > 0 AND DATEDIFF(day, FechaRecepcion, GETDATE()) < 31 THEN Facturas.Importe ELSE 0 END MENOSDE30dias,
CASE
WHEN DATEDIFF(day, FechaRecepcion, GETDATE ()) > 30 AND DATEDIFF(day, FechaRecepcion, GETDATE()) < 61 THEN Facturas.Importe ELSE 0 END ENTRE3060dias,
CASE
WHEN DATEDIFF(day, FechaRecepcion, GETDATE()) > 60 AND DATEDIFF(day, FechaRecepcion, GETDATE()) < 91 THEN Facturas.Importe ELSE 0 END ENTRE6090dias,
CASE
WHEN DATEDIFF(day, FechaRecepcion, GETDATE()) > 91 THEN Facturas.Importe ELSE 0 END MASDE90dias
FROM Proveedores INNER JOIN Facturas ON Proveedores.IdProveedor=Facturas.IdProveedor
WHERE (Aplicada = 0) AND Proveedores.IdProveedor=@Proveedor
GROUP BY Proveedores.IdProveedor, Proveedores.NombreProveedor, Facturas.IdFactura, Facturas.Descripcion, Facturas.FechaRecepcion, Facturas.Importe, DATEDIFF(day, FechaRecepcion, GETDATE())
ORDER BY Proveedores.IdProveedor, DATEDIFF(day, FechaRecepcion, GETDATE()) ASC
GO




Este procedimiento lo diseñe para obtener la antigüedad de las cuentas por pagar por proveedores. Como podran apreciar el mismo me genera 4 campos los cuales son:Menos30dias,Entre3060dias,Entre6090dias y Masde90dias en los cuales pone el importe de las facturas que se encuentran pendientes de pago para cada uno de esos rangos. Por ejemplo cuando lo ejecuto en el query analyzer me da esto, voy a poner solamente los campos que me interesan para que puedan entender lo que quiero preguntarles:
IdFactura--Importe--Menos30dias--Entre3060--Entre6090--Made90dias
25-------- 6500 -----.0000-------- 6500------- .0000 ------.0000
24-------- 5000 -----.0000-------- 5000------- .0000 ------.0000
21-------- 1000 -----.0000-------- 1000------- .0000 ------.0000
22-------- 1500 -----.0000-------- 1500------- .0000 ------.0000
9--------- 1050 ------.0000--------.0000------ .0000 ------ 1050
8--------- 1000-------.0000--------.0000------.0000------- 1000
7--------- 5000------- .0000------- .0000----- .0000------- 5000
Esto está perfecto hasta aquí. Ahora este procedimiento almacenado lo utilizo en delphi 7 para un reporte sobre la antigüedad de las cuentas por pagar. Es decir creo un nuevo reporte y utilizo para conectarme a la base de datos los componentes de la paleta ADO. Agrego al reporte un ado conecction, un ado stored procedure y un datasource. Les configuro adecuamente cada una de las propiedades. Por ejemplo el adoconecction conected a true con su respectiva cadena de conexión a sql server con la base de datos que utilizo, la propiedad conecction del ado stotred procedure establecida al ado conecction y su propiedad active establecida a true, el datasource tiene como dataset el ado stored procedure. Agrego las respectivas bandas que necesito al qreport: pageheaderband, titleband, detailband y sumaryband. En la detailband pongo los campos Menos30dias, Entre3060dias, Entre6090dias y Masde90dias y en la sumaryband agrego 4 qrexpr cada uno con sus respectivas expresiones, por ejemplo: SUM(ADOSPAntiguedad.Menos30dias), SUM(ADOSPAntiguedad.Entre3060dias),SUM(ADOSPAntiguedad.Entre6090dias) y SUM(ADOSPAntiguedad.Mas90dias). Creo un formulario con tres controles un label, un edit y botón de comando. El edit es para pasarle el parámetro de entrada al ado stored procedure, en el botón comando puse el siguiente código:

Código Delphi [-]
begin
QrAntiguedad.ADOSPAntiguedad.Close;
QrAntiguedad.ADOSPAntiguedad.Parameters.ParamByName('@Proveedor').Value := Edit1.Text;
QrAntiguedad.ADOSPAntiguedad.Open;
QrAntiguedad.Preview;
end;




QrAntiguedad es el nombre del reporte, ADOSPAntiguedad es el nombre del Procedimiento almacenado. Cuando ejecuto esto no sale nada todo me sale en 0 es decir en cada una de las columnas de reporte me 0.00. He revisado por todos los lados y nada. Incluso en tiempo de diseño le doy un preview al reporte y lo mismo. No se que hacer. Ojala puedan ayudarme. Muchas Gracias.

Última edición por efelix fecha: 23-01-2007 a las 16:25:55.
Responder Con Cita