AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fastreport DBGrid

Ein Thema von Jick · begonnen am 12. Mär 2014 · letzter Beitrag vom 14. Mär 2014
Antwort Antwort
Furtbichler
(Gast)

n/a Beiträge
 
#1

AW: Fastreport DBGrid

  Alt 13. Mär 2014, 07:43
Die Fragestellung ist etwas merkwürdig.
1. Man druckt kein DBGrid aus, sondern erstellt eine eigene Tabelle in FastReport auf Grundlage von Datenmengen (TDataSet).
2. Bei einer Kreuztabelle ist ja gerade der Witz der, das man die Spalten zur Laufzeit erstellt. Das liegt in der Natur der Sache.

Einerseits hast Du ein TDBGrid, andererseits eine Kreuztabelle. Was denn nun?

Wenn Du eine Crosstab hast und die erste Spalte statisch rechtsbündig ausrichten willst, versuche, die Query so umzuformen, das die erste Spalte als eigene Spalte erscheint (denn die ist ja dann auch statisch). Eventuell kommst du dann weiter (aber ich sehe nicht direkt, wie).

Aber es scheint mit Mühe zu gehen, vermutlich über Umwege: Man kann den fertig gerenderten Report ja auch nachträglich per Delphi-Code durchsuchen und entsprechende Komponenten anfassen. Hier müsstest Du an die erste Spalte deines Crosstab-Objekts herankommen.
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#2

AW: Fastreport DBGrid

  Alt 13. Mär 2014, 09:46
Sende doch mal ein Bild wie es aussehen soll
Vielleicht hilft Dir auch folgendes: Creating a report from Code

Geändert von EarlyBird (13. Mär 2014 um 11:13 Uhr)
  Mit Zitat antworten Zitat
Jick

Registriert seit: 12. Jun 2011
26 Beiträge
 
Delphi XE Starter
 
#3

AW: Fastreport DBGrid

  Alt 14. Mär 2014, 11:34
Anbei mal ein Bild wie es jetzt mit einem Crosstab aussieht.
Die Gesamtsumme will ich rechts ausrichten.

Delphi-Quellcode:
procedure TfrmAuswertung.frxReport1BeforePrint(Sender: TfrxReportComponent);
//CrossView füllen
var
  Cross: TfrxCrossView;
  i, j: Integer;
  s: string;
begin
  if Sender is TfrxCrossView then
  begin
    Cross := TfrxCrossView(Sender);
    DBGrid1.DataSource.DataSet.First;
    i := 0;
    while not DBGrid1.DataSource.DataSet.Eof do
    begin
      for j := 0 to DBGrid1.DataSource.DataSet.Fields.Count - 1 do
      begin
        if (DBGrid1.DataSource.DataSet.Fields[j] is TFloatField) then
        begin
          s := format('%.2f',[DBGrid1.DataSource.DataSet.Fields[j].AsFloat]);
          Cross.AddValue([i], [DBGrid1.DataSource.DataSet.Fields[j].DisplayLabel],
            [s]);
        end
        else
        begin
          Cross.AddValue([i], [DBGrid1.DataSource.DataSet.Fields[j].DisplayLabel],
            [DBGrid1.DataSource.DataSet.Fields[j].AsString]);
        end;
      end;
      DBGrid1.DataSource.DataSet.Next;
      Inc(i);
    end;
  end;
end;
Angehängte Grafiken
Dateityp: png Unbenannt.png (7,3 KB, 38x aufgerufen)
  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 06:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz