TRaveReport -> DataField -> Spalte übergeben
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:
Bei der letzten Zeile kommt ein Adress-Fehler. Wodran liegt es. Lade vorher ein vorhandenes Project indem die Komponenten enthalten sind.
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; Gruss Holger |
Re: TRaveReport -> DataField -> Spalte übergeben
Hat denn keiner einen Hinweis ???
|
Re: TRaveReport -> DataField -> Spalte übergeben
Dann gebe ich mir jetzt selber die Lösung ;)
Delphi-Quellcode:
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.
//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; Gruss Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:54 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