FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
como hago para que un TQRExpr de Qreport me tome campos de un ttable en un Datamodulo
es que tengo un reporte que esta trabajando con Tablas que estan en un datamodulo y necesito que un TQRExpr me sume dos campor de la tabla que estoy trabajando y no puedo hacer que lo haga, sera por algo especifico o que no se puede hasta que cree el ttable en el mismo reporte.
gracias |
#2
|
||||
|
||||
Si la unit del reporte usa el DataModule, y creo que tienes que tenerlo levantado en tiempo de diseño, esto funciona. Pero no te lo recomiendo pues me ha pasado que erráticamente pierde la referencia al DataModule.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
ya va, a ver si entiendo
yo tengo en el uses del reporte al datamodulo, pero a la hora de tratar de darle la expression me pasa que no puede encontrar tablas ni campos, por lo que no puedo hacer que me haga lo que necesito, pero no logro entender lo que tu me dices. estoy trabajando con Delphi 6 gracias de todos modos |
#4
|
||||
|
||||
Tienes que estar seguro que la unit del reporte utilice la del datamodule. (Agregar el DataModule en el Uses)
Por otro lado, cuando abras el editor de propuedades de la expreción, tienes que tener en DataModule presente en la pantalla, si no usas campos persistentes te recomendaría con las consultas abiertas (Esto es porque desconfío del QR ) Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
|||
|
|||
no se si es porque estoy en windows XP y algo tenga que ver en eso.
pero hice todo lo que dices y no logro que el TQRExpr encuentre ninguna tabla de datamodulo al abrir el generador de expessiones, no se porque sera pero no puedo. tendre que ver como calcular antes de ir al reporte y darle solo los valores a mostrar. de todos modos muchas gracias por tu interes y prontitud en las respuestas, cualquier solucion posible que puedan darme les estare muy agradecido. |
#6
|
||||
|
||||
Lo probé recién en un Delphi 5 sobre Win98, y me funcionó sin problemas.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#7
|
|||
|
|||
debe ser por algo que me falta pero no logro lo vea las tablas.
si puedes enviame un ejemplo o explicame como porque no lo gro hacerlo |
#8
|
||||
|
||||
Estos son los archivos, si copias y creas los archivos tendrás el ejemplo.
QuickDM.dfm Código:
program QuickDM; uses unDataModule in 'unDataModule.pas' {DataModule1: TDataModule}, unQuickReport in 'unQuickReport.pas' {QuickReport1: TQuickRep}; Código:
object DataModule1: TDataModule1 OldCreateOrder = False Height = 0 Width = 0 object Table1: TTable TableName = 'Contacts.DB' Left = 16 Top = 12 end end Código:
unit unDataModule; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, DBTables; type TDataModule1 = class(TDataModule) Table1: TTable; private public end; var DataModule1: TDataModule1; implementation {$R *.DFM} end. Código:
object QuickReport1: TQuickReport1 DataSet = DataModule1.Table1 object QRBand1: TQRBand BandType = rbDetail object QRExpr1: TQRExpr Left = 271 Top = 24 Width = 198 Height = 17 Alignment = taCenter AlignToBand = True Expression = 'Table1.Copies + Table1.ProductID' end end end Código:
unit unQuickReport; interface uses Windows, SysUtils, Messages, Classes, Graphics, Controls, StdCtrls, ExtCtrls, Forms, Quickrpt, QRCtrls; type TQuickReport1 = class(TQuickRep) QRBand1: TQRBand; QRExpr1: TQRExpr; private public end; var QuickReport1: TQuickReport1; implementation uses Unit1; {$R *.DFM} end. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#9
|
|||
|
|||
ya eso lo he probado es mas asi le doy desde un principio pero no lo hace
ese ejemplo no me sirvio, dice unknown funtion table1 y sigue sin poder encontrar la tabla del datamodulo ese es justamente el error por el cual hice la pregunta. no puedo generar la expression por ese error. sigo en la misma |
#10
|
|||
|
|||
Muchas gracias por tu ayuda la verdad es muy valiosa para mi.
Estoy tratando de resolver este problema y no lo he logrado y ya estoy pensando que el problema no es de nosotros si no que hay algún problema en el delphi que tengo instalado, podrá ser algunos archivos corruptos y repercute en los componentes del Qreport o algo así. De todos modos voy a probar instalándolo de nuevo. Si tu me dices que con ese ejemplo tiene que encontrar las tablas del datamodulo y a mi aquí no me sirve algo mal debo tener aquí y solo se me ocurre eso, puesto que la prueba la hice creando un proyecto nuevo a ver si el problema era yo y con tu ejemplo tampoco las encontró. Te estoy muy agradecido y cualquier solución te la haré saber y si tu crees saber cual sea mi problema y me puedes recomendar algo mas que pueda probar me gustaría me lo dijeras, atte.: perico gracias |
#11
|
|||
|
|||
A mi me ocurre lo mismo.
La unica solución es poner un TTable en el formulario de QuickReport y enlazar con la tabla del datamodules. La QrExpr la tomas del TTable del formulario del QR. Toni |
#12
|
||||
|
||||
Lo que dice Delphi.com, funciona perfectamente de hecho es el método que yo utilizo.
En resumen, tienes que tener un Uses hacia el datamodulo en el formulario en el que tienes QuickReport. En el momento de crear el informe debe de estar activo el Datamodulo y la tabla abierta, y así tienes acceso a todas las tablas y campos, suponemos que tienes conectado QuickReport con el DataSource de la tabla en cuestión. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#13
|
||||
|
||||
Recuerden que a pesar de todo, no lo recomiendo.
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
|