Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Mehrseitiger QuickReport aus TurboDB mit TdbQuery (https://www.delphipraxis.net/84640-mehrseitiger-quickreport-aus-turbodb-mit-tdbquery.html)

dlenz 19. Jan 2007 13:27

Datenbank: TurboDB • Version: 5 • Zugriff über: TdbTable/TdbQuery/TDataSource

Mehrseitiger QuickReport aus TurboDB mit TdbQuery
 
Hallo Liebe Leute,

ich hänge immer noch an meinem mehrseitigen QuickReport. Bisher habe ich diesen Code:

Meine PROGRAMMNAME.DPR:
Delphi-Quellcode:
program PROGRAMMNAME;

uses
  Forms,
  main in 'main.pas' {frm_main},
  u_qr1 in 'u_qr1.pas' {Seite1},
  u_qr2 in 'u_qr2.pas' {Seite2};

{$R *.res}

begin
  Application.Initialize;
  Application.Title := 'A-E-M';
  Application.CreateForm(Tfrm_main, frm_main);
  Application.CreateForm(TSeite1, Seite1);
  Application.CreateForm(TSeite2, Seite2);
  Application.Run;
end.
Meine main.PAS (Main-Unit):
Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Mask, DBCtrls, DB, TdbLicense, TdbDataSet,
  Grids, DBGrids, Buttons, QuickRpt, TdbQuery;

type
    Tfrm_main = class(TForm)
    DBEdit1: TDBEdit;
    Image1: TImage;
    TdbTable1: TTdbTable;
    DataSource1: TDataSource;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBNavigator1: TDBNavigator;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    DBGrid1: TDBGrid;
    DBEdit13: TDBEdit;
    BitBtn1: TBitBtn;
    DBEdit14: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    DBEdit15: TDBEdit;
    DBEdit16: TDBEdit;
    DBEdit17: TDBEdit;
    DBEdit18: TDBEdit;
    DBEdit19: TDBEdit;
    DBEdit20: TDBEdit;
    DBEdit21: TDBEdit;
    DBEdit22: TDBEdit;
    DBEdit23: TDBEdit;
    DBEdit24: TDBEdit;
    DBEdit25: TDBEdit;
    DBEdit26: TDBEdit;
    QRCompositeReport1: TQRCompositeReport;
    TdbQuery1: TTdbQuery;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure QRCompositeReport1AddReports(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frm_main: Tfrm_main;

implementation

uses u_qr1, u_qr2;

{$R *.dfm}

procedure Tfrm_main.FormCreate(Sender: TObject);
 var dbfrm: string;
begin
 dbfrm := ExtractFilePath(ParamStr(0))+'db/db.tdbd';
 TdbTable1.Active := False;
 try
  TdbTable1.DatabaseName := dbfrm;
  TdbTable1.TableName := 'antragsgegner';
  TdbTable1.Active := True;
 except
  MessageBeep(0);
  ShowMessage('Die Tabelle db.tdbd befindet' + #10#13 +'sich nicht im angegebenen Verzeichnis!')
 end
end;

procedure Tfrm_main.BitBtn1Click(Sender: TObject);
 var dbqr : string;
begin
 dbqr := ExtractFilePath(ParamStr(0))+'db\db.tdbd';

 QRCompositeReport1.TdbQuery1.Close;
 QRCompositeReport1.TdbQuery1.DatabaseName := dbqr;

 QRCompositeReport1.TdbQuery1.SQL.Clear;
 QRCompositeReport1.TdbQuery1.SQL.Add('SELECT * FROM antragsgegner WHERE ID =' + DBEdit1.Text);

 showmessage(QRCompositeReport1.TdbQuery1.SQL.text);

 QRCompositeReport1.TdbQuery1.Open;

 QRCompositeReport1.Preview;
end;

procedure Tfrm_main.QRCompositeReport1AddReports(Sender: TObject);
begin
  with QRCompositeReport1.Reports do
 begin
  Add(Seite1.Report);
  Add(Seite2.Report);
 end;
end;

end.
Meine beiden QuickReports (u_qr1.PAS und u_qr2.PAS, beide nahezu identisch, eben nur Report-Units):
Delphi-Quellcode:
unit u_qr1;

interface

uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
  StdCtrls, ExtCtrls, Forms, QuickRpt, QRCtrls, DB, TdbLicense, TdbDataSet, TdbQuery;

type
  TSeite1 = class(TQuickRep)
    TdbQuery1: TTdbQuery;
    TitleBand1: TQRBand;
    QRDBText1: TQRDBText;
    QRLabel1: TQRLabel;
    QRLabel2: TQRLabel;
    QRLabel3: TQRLabel;
    QRLabel4: TQRLabel;
    QRLabel5: TQRLabel;
    QRLabel6: TQRLabel;
    QRLabel7: TQRLabel;
    QRLabel8: TQRLabel;
    QRImage1: TQRImage;
    QRDBText2: TQRDBText;
    QRDBText4: TQRDBText;
    QRDBText5: TQRDBText;
    QRDBText6: TQRDBText;
    QRDBText7: TQRDBText;
    QRDBText8: TQRDBText;
    QRDBText9: TQRDBText;
    QRDBText10: TQRDBText;
    QRDBText11: TQRDBText;
    QRDBText12: TQRDBText;
    QRDBText13: TQRDBText;
  private

  public

  end;

var
  Seite1: TSeite1;

implementation

{$R *.DFM}

end.
die u_qr2.PAS sieht in etwa genauso aus, es werden nur andere Tabellenfelder eingefügt.

Das Programm läuft aber nicht.
Ich bekomme mehrere Fehlermeldungen:
[Fehler] main.pas(97): Undefinierter Bezeichner: 'TdbQuery1'
[Fehler] main.pas(98): Undefinierter Bezeichner: 'TdbQuery1'
[Fehler] main.pas(100): Undefinierter Bezeichner: 'TdbQuery1'
[Fehler] main.pas(100): Operator oder Semikolon fehlt
[Fehler] main.pas(101): Undefinierter Bezeichner: 'TdbQuery1'
[Fehler] main.pas(101): Operator oder Semikolon fehlt
[Fehler] main.pas(103): Undefinierter Bezeichner: 'TdbQuery1'
[Fehler] main.pas(103): Operator oder Semikolon fehlt
[Fehler] main.pas(114): Undefinierter Bezeichner: 'Report'
[Fehler] main.pas(115): Undefinierter Bezeichner: 'Report'
[Fataler Fehler] aem.dpr(7): Verwendete Unit 'main.pas' kann nicht compiliert werden

Was mache ich falsch? Ich sehe mal wieder den Wald vor lauter Bäumen nicht :wall: , bitte helft mir aus der Patsche!

mkinzler 19. Jan 2007 13:34

Re: Mehrseitiger QuickReport aus TurboDB mit TdbQuery
 
TdbQuery1 befindet sich auch nicht auf dem Formular von QR sondern auf dem Hauptformular.

dlenz 19. Jan 2007 14:22

Re: Mehrseitiger QuickReport aus TurboDB mit TdbQuery
 
also muss dann das TdbQuery jeweils auf das Formular vom QucikReport?
und beide male muss ich dann die SQl-Anweisung einbinden?

mkinzler 19. Jan 2007 14:24

Re: Mehrseitiger QuickReport aus TurboDB mit TdbQuery
 
Nein, aber du greifst darauf zu, als ob es so wäre:

Zitat:

Delphi-Quellcode:
QRCompositeReport1.TdbQuery1.Close;


dlenz 19. Jan 2007 14:26

Re: Mehrseitiger QuickReport aus TurboDB mit TdbQuery
 
also muss das so aussehen:
Delphi-Quellcode:
Seite1.TdbQuery1.Close;
?

mkinzler 19. Jan 2007 14:29

Re: Mehrseitiger QuickReport aus TurboDB mit TdbQuery
 
Zitat:

Zitat von dlenz
also muss das so aussehen:
Delphi-Quellcode:
Seite1.TdbQuery1.Close;
?

Nein
Delphi-Quellcode:
frm_main.TdbQuery1.Close;
oder
Delphi-Quellcode:
TdbQuery1.Close;
oder
Delphi-Quellcode:
self.TdbQuery1.Close;

dlenz 20. Jan 2007 16:21

Re: Mehrseitiger QuickReport aus TurboDB mit TdbQuery
 
Aber die zweite Seite taucht nicht in der Preview auf, warum?

dlenz 23. Jan 2007 11:32

Re: Mehrseitiger QuickReport aus TurboDB mit TdbQuery
 
ich habe immer noch das Problem, dass die zweite Seite nicht in der Vorschau auftaucht bzw. auch nicht ausgedruckt wird, warum?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz