Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fastreport Objekt in abhängikeit von DB Feld (https://www.delphipraxis.net/133704-fastreport-objekt-abhaengikeit-von-db-feld.html)

manfred_h 8. Jun 2009 09:45

Re: Fastreport Objekt in abhängikeit von DB Feld
 
Hallo nochmals

leider hat sich da ein Fehler eingeschlichen.
Habe das bis jetzt nicht bemerkt. Es werden nicht mehr alle Datensätzte dargestellt.
Dies versuchte ich bis jetzt wie folgt zu lösen:
"bestehender" Code:
Delphi-Quellcode:
procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
var
i: Integer;
ds: TfrxDataSet;
list: TStringList;
db_list: String;                      
begin
  ds := Report.GetDataset('default');// username of ds
  list := TStringList.Create;
  ds.GetFieldList(list);
  for i := 0 to list.Count -1 do      
  begin
    if list[i]='PERSONS' then
    begin
      var_dist_persons.Visible := true; //Feld vorhanden
      dist_persons.Visible := true;
    end;
    //         
    if list[i]='WORKER' then
    begin
      var_dist_worker.Visible := true;
      dist_worker.Visible := true;
    end;
    //         
    if list[i]='PLACEMENT' then
    begin
      var_dist_placement.Visible := true;              
      dist_placement.Visible := true;
    end;
    //         
    if list[i]='BEDS' then
    begin
      var_dist_beds.Visible := true;
      dist_beds.Visible := true;
    end;
    //         
    if list[i]='Q_GIDEONS' then
    begin
      var_dist_q_gideons.Visible := true;
      dist_q_gideons.Visible := true;
    end;
    //         
    if list[i]='CAT' then
    begin
      var_dist_cat.Visible := true;
      dist_cat.Visible := true;
    end;
    //         
    ds.Next;                  
  end;
end;
versucht habe ich es so:
Delphi-Quellcode:
    if list[i]='PERSONS' then
    begin
      var_dist_persons.Visible := true; //Feld vorhanden
      dist_persons.Visible := true;
    end
    else var_dist_persons.Visible := false;
    //
Dies natürlich bei jedem if list[i]= leider ohne Erfolg.
Die Datenbankabfrage ist garantiert ok.

Bin für einen Tipp dankbar.
Manfred

squetk 8. Jun 2009 22:09

Re: Fastreport Objekt in abhängikeit von DB Feld
 
Auch wenn das Problem an sich schon gelöst ist: Es gibt im FastReport-Script durchaus eine Möglichkeit, die Existenz eines Datenfeldes abzufragen:

Delphi-Quellcode:
  if MasterDataXYZ.DataSet.HasField('FIELDNAME') then...

manfred_h 9. Jun 2009 12:51

Re: Fastreport Objekt in abhängikeit von DB Feld
 
Hallo squetk

Zitat:

Auch wenn das Problem an sich schon gelöst ist: Es gibt im FastReport-Script durchaus eine Möglichkeit, die Existenz eines Datenfeldes abzufragen:
leider ist es noch nicht ganz gelöst ( siehe ein Post weiter oben ).
Danke für Deinen Vorschlag werde das Testen.

Manfred

manfred_h 10. Jun 2009 13:57

Re: Fastreport Objekt in abhängikeit von DB Feld
 
habe bemerkt das ich ds.Next; zwei Zeilen zu weit oben hatte.
Es wird nun die hälfte der Daten dargestellt.

Delphi-Quellcode:
   
if list[i]='CAT' then
    begin
      var_dist_cat.Visible := true;
      dist_cat.Visible := true;
    end;
  // ds.Next;
  end;
  ds.Next;    
end;
@squetk
Wenn ich Deinen Idee Teste erhalte ich immer die Fehlermeldung:
> Undeclared identifier:'default'

Delphi-Quellcode:
  if default.DataSet.HasField('PERSONS') then
    begin
     var_dist_persons.Visible := true; //Feld vorhanden
     dist_persons.Visible := true;
    end;
Manfred

manfred_h 11. Jun 2009 14:42

Re: Fastreport Objekt in abhängikeit von DB Feld
 
Das Problem ist gelöst.

Es darf kein ds.Next; verwendet werden.
hier die funktionierende Version:
Delphi-Quellcode:
procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
var
i: Integer;
ds: TfrxDataSet;
list: TStringList;
db_list: String;                      
begin
  ds := Report.GetDataset('default');// username of ds
  list := TStringList.Create;
  ds.GetFieldList(list);
  for i := 0 to list.Count -1 do      
  begin
    if list[i]='PERSONS' then
    begin
      var_dist_persons.Visible := true;
      dist_persons.Visible := true;
    end;
    //         
    if list[i]='WORKER' then
    begin
      var_dist_worker.Visible := true;
      dist_worker.Visible := true;
    end;
    //         
    if list[i]='PLACEMENT' then
    begin
      var_dist_placement.Visible := true;              
      dist_placement.Visible := true;
    end;
    //         
    if list[i]='BEDS' then
    begin
      var_dist_beds.Visible := true;
      dist_beds.Visible := true;
    end;
    //         
    if list[i]='Q_GIDEONS' then
    begin
      var_dist_q_gideons.Visible := true;
      dist_q_gideons.Visible := true;
    end;
    //         
    if list[i]='CAT' then
    begin
      var_dist_cat.Visible := true;
      dist_cat.Visible := true;
    end;
  end;
end;
Shalom
Manfred

squetk 11. Jun 2009 21:53

Re: Fastreport Objekt in abhängikeit von DB Feld
 
Es müsste so funktionieren:

Delphi-Quellcode:
var
  ds: TfrxDataSet;
begin
  ds := Report.GetDataset('default');// username of ds
  if ds.HasField('PERSONS') then
  begin
    var_dist_persons.Visible := true; //Feld vorhanden
    dist_persons.Visible := true;
  end;

manfred_h 12. Jun 2009 13:35

Re: Fastreport Objekt in abhängikeit von DB Feld
 
Danke für den Tipp squetk.

Manfred


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 Uhr.
Seite 3 von 3     123   

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