AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi TRaveReport -> DataField -> Spalte übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

TRaveReport -> DataField -> Spalte übergeben

Ein Thema von HolgerCW · begonnen am 30. Apr 2009 · letzter Beitrag vom 7. Mai 2009
Antwort Antwort
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

TRaveReport -> DataField -> Spalte übergeben

  Alt 30. Apr 2009, 13:28
Hallo zusammen,

ich möchte in einem DataBand die Spalten selber festlegen. Wie kann ich das machen.

Wenn ich mit Parametern arbeite übergibt er nur den Spaltennamen als String. Ich möchte aber das er dem DataField die Spalte übergibt.

Wie geht das ?

Habe es nun so versucht:

Delphi-Quellcode:
With DM_Rave_Report.RvProject.ProjMan do
begin

  MeinReport := FindRaveComponent('Report1', nil) as TRaveReport;
  MeineSeite := FindRaveComponent('Page1', MeinReport) as TRavePage;
  MeineRegion := FindRaveComponent('Region1', MeineSeite) as TRaveRegion;
  MeinBand := FindRaveComponent('Band1', MeineRegion) as TRaveBand;
  MeinDataBand := FindRaveComponent('DataBand1', MeineRegion) as TRaveDataBand;
  MeinDataText1 := FindRaveComponent('DataText_1', MeinDataBand) as TRaveDataText;

  MeineDataView := FindRaveComponent('DataView1', nil) as TRaveDataView;
  MeineDataView.Active := TRUE;
  
  MeinDataText1.DataField := 'AUFTRAG_ID';

end;
Bei der letzten Zeile kommt ein Adress-Fehler. Wodran liegt es. Lade vorher ein vorhandenes Project indem die Komponenten enthalten sind.

Gruss

Holger
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#2

Re: TRaveReport -> DataField -> Spalte übergeben

  Alt 4. Mai 2009, 10:41
Hat denn keiner einen Hinweis ???
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: TRaveReport -> DataField -> Spalte übergeben

  Alt 7. Mai 2009, 14:05
Dann gebe ich mir jetzt selber die Lösung

Delphi-Quellcode:
//Procedure für variabeln Rave Report - Erstellung
procedure Rave_Report_Variabel(Ueberschrift: String; Parameter: Array of String; ParaWerte: Array of String; Anzeigen:Boolean; DBGrid:TDBGrid);
var
 I, Y, Z, komplette_Breite, Max_Breite: Integer;
 Sender: TObject;
 MeinReport : TRaveReport;
 MeineSeite: TRavePage;
 MeineRegion: TRaveRegion;
 MeinBand: TRaveBand;
 MeinDataBand: TRaveDataBand;
 MeinText: TRaveText;
 MeineTexte: TRaveText;
 MeinDataText: TRaveDataText;
 MeinDataText1: TRaveDataText;
 MeineDataView: TRaveDataView;
 New_save, Datei_Pfad: String;
 vorherige_Breite, naechste_Breite, Prozentwert: Double;
begin

 DM_Rave_Report.RvDS_Con_AW_Variabel.DataSet := DBGrid.DataSource.DataSet;
 vorherige_Breite := 0;
 komplette_Breite := 0;

 for Z:= 0 to DBGrid.columns.count - 1 do
 begin

  If DBGrid.Columns[Z].Visible = True then komplette_Breite := komplette_Breite + DBGrid.Columns[Z].Width;

 end;

 Max_Breite := 1110;
 Datei_Pfad := 'AW_Variabel';

 if komplette_Breite < 790 then
 begin
  Datei_Pfad := 'AW_Variabel_hoch';
  Max_Breite := 770;
 end;
 if komplette_Breite > 1130 then
 begin
  Datei_Pfad := 'AW_Variabel_A3';
  Max_Breite := 1590;
 end;

 DM_Rave_Report.RvSystem.DefaultDest := rdFile;
 DM_Rave_Report.RvSystem.DoNativeOutput := false;
 DM_Rave_Report.RvSystem.RenderObject := DM_Rave_Report.RvRenderPDF;
 DM_Rave_Report.RvSystem.OutputFileName := 'C:PDF_Report\PDF-Dateien\' + Datei_Pfad + '_' + Anwender_ermitteln (FormTerMaS.SB_TerMaS.Panels[1].Text) + '.pdf';
 DM_Rave_Report.RvSystem.SystemSetups := DM_Rave_Report.RvSystem.SystemSetups - [ssAllowSetup];
 
 //Projekt zurücksetzen
 DM_Rave_Report.RvProject.Close;
 DM_Rave_Report.RvProject.ClearParams;
 DM_Rave_Report.RvProject.ProjectFile := 'C:\PDF_Report\' + Datei_Pfad + '.rav';
 DM_Rave_Report.RvProject.Open;

 //Eventuelle Parameter hinzufügen
 for I := 0 to length(Parameter) - 1 do
 begin
  DM_Rave_Report.RvProject.SetParam('' + Parameter[I] + '', ParaWerte[I]);
 end;

 New_save := '';

 //Projekt abändern
 With DM_Rave_Report.RvProject.ProjMan do
 begin

  MeinReport := FindRaveComponent('Report1', nil) as TRaveReport;
  MeineSeite := FindRaveComponent('Page1', MeinReport) as TRavePage;

  MeineRegion := FindRaveComponent('Region', MeineSeite) as TRaveRegion;
  MeinBand := FindRaveComponent('Band', MeineSeite) as TRaveBand;
  MeinDataBand := FindRaveComponent('DataBand', MeineSeite) as TRaveDataBand;
  MeineDataView := FindRaveComponent('DataView', MeineSeite) as TRaveDataView;
  CreateFields(MeineDataView, nil, nil, true);

  MeinText := FindRaveComponent('Text_Main', MeineSeite) as TRaveText;
  MeinText.Text := Ueberschrift;

  for Y := 0 to DBGrid.Columns.count - 1 do
  begin

   if DBGrid.Columns[Y].Visible = True then
   begin

    naechste_Breite := vorherige_Breite + RoundTo(DBGrid.Columns[Y].Width / 100, -2);

    if naechste_Breite >= RoundTo(Max_Breite / 100, -2) then
    begin

     Prozentwert := ((RoundTo(Max_Breite / 100, -2) - (0.05 + vorherige_Breite)) / RoundTo(DBGrid.Columns[Y].Width / 100, -2)) * 100;

     if Prozentwert < 50 then
     begin

      Application.MessageBox(PChar('Es können nicht alle Spalten ausgegeben werden.'),'Information',MB_OK or MB_ICONINFORMATION);
      break;

     end;

    end;

    MeineTexte := MeinBand.CreateChild(TRaveText, 'Text_' + inttostr(Y)) As TRaveText;
    MeineTexte.Text := DBGrid.Columns[Y].Title.Caption;
    MeineTexte.Left := 0.05 + vorherige_Breite;
    MeineTexte.Top := 0.05;
    if RoundTo(Max_Breite / 100,-2) > MeineTexte.Left + RoundTo(DBGrid.Columns[Y].Width / 100, -2) then
     MeineTexte.Width := RoundTo(DBGrid.Columns[Y].Width / 100, -2)
    else
     MeineTexte.Width := RoundTo(Max_Breite / 100, -2) - MeineTexte.Left;
    If DBGrid.Columns[Y].Alignment = taLeftJustify then MeineTexte.FontJustify := pjLeft;
    If DBGrid.Columns[Y].Alignment = taRightJustify then MeineTexte.FontJustify := pjRight;
    If DBGrid.Columns[Y].Alignment = taCenter then MeineTexte.FontJustify := pjCenter;
    MeineTexte.Font.Size := 8;
    MeineTexte.Font.Name := 'Tahoma';

    MeinDataText := MeinDataBand.CreateChild(TRaveDataText, 'DataText_' + inttostr(Y)) As TRaveDataText;
    MeinDataText.DataField := DBGrid.Columns[Y].FieldName;
    MeinDataText.DataView := MeineDataView;
    MeinDataText.Left := 0.05 + vorherige_Breite;
    MeinDataText.Top := 0.05;
    if RoundTo(Max_Breite / 100,-2) > MeinDataText.Left + RoundTo(DBGrid.Columns[Y].Width / 100, -2) then
     MeinDataText.Width := RoundTo(DBGrid.Columns[Y].Width / 100, -2)
    else
     MeinDataText.Width := RoundTo(Max_Breite / 100, -2) - MeinDataText.Left;
    If DBGrid.Columns[Y].Alignment = taLeftJustify then MeinDataText.FontJustify := pjLeft;
    If DBGrid.Columns[Y].Alignment = taRightJustify then MeinDataText.FontJustify := pjRight;
    If DBGrid.Columns[Y].Alignment = taCenter then MeinDataText.FontJustify := pjCenter;
    MeinDataText.Font.Size := 8;
    MeinDataText.Font.Name := 'Tahoma';

    vorherige_Breite := vorherige_Breite + RoundTo(DBGrid.Columns[Y].Width / 100, -2);

   end;

  end;

  //Zwischenspeichern und nachher wird neu geladen
  DM_Rave_Report.RvProject.ProjectFile := 'C:\PDF_Report\' + Datei_Pfad + '_2.rav';
  DM_Rave_Report.RvProject.Save;
  DM_Rave_Report.RvProject.Open;

  New_save := '_2';

 end;

 //Rave-Datei als PDF speichern
 DM_Rave_Report.RvProject.LoadFromFile('C:PDF_Report\' + Datei_Pfad + New_save + '.rav');
 DM_Rave_Report.RvProject.ExecuteReport('Report1');

end;
Zur Info: Es wird das übergebene DBGrid daraufhin analysiert, ob die Spalten auf einem Hochformat A4 oder Querformat A4 oder Querformat A3 ausgegeben werden kann. Die rav - Dateien dafür habe ich vorher schon erstellt. Mit dieser Procedure fülle ich nur noch die Spalten.

Gruss

Holger
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 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