Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   como hago para que un TQRExpr de Qreport me tome campos de un ttable en un Datamodulo (https://www.clubdelphi.com/foros/showthread.php?t=5711)

perico 01-12-2003 19:04:15

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

delphi.com.ar 01-12-2003 19:49:25

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!

perico 01-12-2003 20:05:41

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

delphi.com.ar 01-12-2003 20:09:59

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 :D)

Saludos!

perico 01-12-2003 21:04:55

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.

delphi.com.ar 01-12-2003 21:31:21

Lo probé recién en un Delphi 5 sobre Win98, y me funcionó sin problemas.

Saludos!

perico 02-12-2003 01:19:35

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

delphi.com.ar 02-12-2003 15:13:37

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};

unDataModule.dfm
Código:

object DataModule1: TDataModule1
  OldCreateOrder = False
  Height = 0
  Width = 0
  object Table1: TTable
    TableName = 'Contacts.DB'
    Left = 16
    Top = 12
  end
end

unDataModule.pas
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.

unQuickReport.dfm
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

unQuickReport.pas
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!

perico 05-12-2003 14:38:08

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

perico 08-12-2003 03:23:12

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
;)

toni.vi 08-12-2003 22:33:54

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

marcoszorrilla 09-12-2003 19:38:52

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.

delphi.com.ar 09-12-2003 19:51:43

Recuerden que a pesar de todo, no lo recomiendo.
Cita:

delphi.com.ar comentó:
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.
Sucede que si utilizas un DataModule y otras units que una de ellas posea un dataset con el mismo nombre del datamodule, el comportamiento es totalmente errático y puede producir problemas difíciles de encontrar.

Saludos!


La franja horaria es GMT +2. Ahora son las 21:18:26.

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