Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-01-2007
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 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 17:25:55.
Responder Con Cita
  #2  
Antiguo 23-01-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
intenta con:
Código Delphi [-]
QrAntiguedad.ADOSPAntiguedad.Parameters.ParamByName('@Proveedor').Value := strtoint(Edit1.Text);

Otra posibilidad sería crear otro SP que llame al anterior y haga las sumas, así ya no tienes que usar Sum en los qrExpr, sino el resultado de este segundo SP.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 23-01-2007 a las 17:20:18.
Responder Con Cita
  #3  
Antiguo 23-01-2007
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
Gracias Lepe, ya probé y nada, lo mismo.
Responder Con Cita
  #4  
Antiguo 23-01-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
como te dije en el otro hilo, revisa que los componentes del reporte esten bien enlazados
__________________

Responder Con Cita
  #5  
Antiguo 23-01-2007
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
ContraVeneno saludos, ya hice eso y nada, o a lo mejor lo hice mal o no se como hacerlo si pudieras ayudarme te lo agradecería. Aunque hay un detalle y es el siguiente. Si en la banda detail pongo otro campo por ejemplo el idproveedor u otro que no sea de los que me genera el procedimiento almacenado (Menos30dias,Entre3060dias,Entre6090dias,Masde90dias) y le doy preview en la vista diseño al reporte al menos me muestra un registro. Yo hice la prueba cree un formulario nuevo puse un dbedit y me muestra sin ningún problema todos los registros que me devuelve el procedimiento almacenado. Gracias por tomarte tu tiempo en leer este hilo, pero sigo sin ver la solución.
Responder Con Cita
  #6  
Antiguo 23-01-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Pues es lo único que se me puede ocurrir, revisar la propiedad DataSet del reporte y las propiedades DataSet y DataField de los QRTexts que tengas en tu reporte. Fuera de eso no tengo idea, ya que si la consulta te muestra los datos bien en los DBedits, pero no en el reporte, entonces el problema esta en el reporte y no en la consulta. Y si la consulta esta bien, pero no se muestra en el reporte, entonces el reporte no esta bien enlazado en sus propiedades DataSet y/o DataField.

__________________

Responder Con Cita
  #7  
Antiguo 23-01-2007
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
ContraVeneno me di cuenta de un detalle y he resuelto el problema a medias o mejor dicho no lo he resuelto pues hasta que no obtenga lo deseado entonces no hay solución. La propiedad del active del procedimiento almacenado no puede estar establecida a true, tiene que estar en false. Con esto me muestra solamente un registro no los demas no se por qué. Por ejemplo si te fijas en el hilo verás que el primer registro que aparece es el que tiene el importe 6500 en el campo Entre3060 bueno ese solo registro es que sale, no se por qué no salen los demás. Alguna idea?.
Responder Con Cita
  #8  
Antiguo 23-01-2007
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
ContraVeneno disculpa estoy apenado contigo, te he hecho perder el tiempo. El problema estaba además de lo anterior en que me habia fijado en el enlace de cada una de las bandas del reporte, pero no del reporte como tal. Es decir en la propiedad dataset del reporte no tenía puesto nada. Te reitero mis disculpas. Gracias nuevamente.
Responder Con Cita
  #9  
Antiguo 23-01-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
No hay nada de que disculparse
Lo importante as que se solucionó.
__________________

Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Arreglo de Registros, con arreglos de Registros(Dinamico) PiornoCKA&G Varios 4 05-01-2007 09:53:30
por que duplicidad de registros con clientdataset sin ingresar registros ...mysql Arturo MySQL 3 05-09-2006 19:39:37
Mascaras de datset muestran algo diferente al valor del reg del dataset.gracias crist1an OOP 3 27-07-2006 23:32:22
reporte mamp67 Impresión 2 27-10-2005 17:11:18
Problemas conn el orden en que se muestran las pantallas melanthea C++ Builder 3 01-07-2004 18:04:19


La franja horaria es GMT +2. Ahora son las 09:55:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi