AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fastreport Objekt in abhängikeit von DB Feld
Thema durchsuchen
Ansicht
Themen-Optionen

Fastreport Objekt in abhängikeit von DB Feld

Ein Thema von manfred_h · begonnen am 7. Mai 2009 · letzter Beitrag vom 12. Jun 2009
Antwort Antwort
Seite 1 von 3  1 23      
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#1

Fastreport Objekt in abhängikeit von DB Feld

  Alt 7. Mai 2009, 09:23
Datenbank: Firebird • Version: 2.1 • Zugriff über: Fibplus 6.50
Hallo zusammen

in einer Anwendung verwede ich einen Report für mehrere Ausdruckvarianten mit
wechselnden Feldern in den Datasets.
Dies geht auch einwandfrei. Nun sind aber in einigen Datasets Felder die in anderen nicht vorhanden sind.
Bis jetzt habe ich das versucht ( und ähnliches ):

( Fastreport Script )
Delphi-Quellcode:
procedure PLACEMENTOnBeforePrint(Sender: TfrxComponent);
begin
  if <default.FieldByName('PLACEMENT')> is not NULL then
  begin
    PLACEMENT.Visible
  end
end;
Es erschein immer die Fehlermeldung:
Could not convert variant of type (Null) into type (Integer
Unknown variable or Datafield: default.FieldByName('PLACEMENT')

Habt Ihr einen Tipp?

Manfred
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Fastreport Objekt in abhängikeit von DB Feld

  Alt 7. Mai 2009, 09:29
Sorge einfach dafür, dass in allen Datasets die selben Felder sind. Ich weiss nicht, ob man in FastScript auf die Existenz von Feldern prüfen kann; deine Abfrage fragt ja nur ab, ob der wert des Feldes NULL ist, existiert das Feld nicht kommt die gennate Fehlermeldung.
Markus Kinzler
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#3

Re: Fastreport Objekt in abhängikeit von DB Feld

  Alt 7. Mai 2009, 09:36
Hallo mkinzler

Danke für Deine schnelle Antwort.

Shalom
Manfred
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Fastreport Objekt in abhängikeit von DB Feld

  Alt 7. Mai 2009, 09:59
Nun ja, per Holzhammer dafür sorgen, dass überflüssige Felder in der DB sind das geht wohl auch. Ich würde allerdings eher Dataset.FieldExist auswerten.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Fastreport Objekt in abhängikeit von DB Feld

  Alt 7. Mai 2009, 10:05
Es handelt sich hier aber nicht um Delphi, sondern die Pascalvariante von Fastcript. Wenn dort diese Methode existiert, dann sollte man diese natürlich verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Fastreport Objekt in abhängikeit von DB Feld

  Alt 7. Mai 2009, 10:40
Zitat von manfred_h:
Es erschein immer die Fehlermeldung:
Could not convert variant of type (Null) into type (Integer
Unknown variable or Datafield: default.FieldByName('PLACEMENT')

Habt Ihr einen Tipp?

Manfred

Das Problem tritt an einigen Stellen auf.
Zum Beispiel auch, wenn in einem Vergleich eine leere Zeichenkette vorhanden ist.
Ich habe den Eindruck, das es sich hier um einen Bug im Fastreport handelt.
Der Scriptinterpreter versucht für den Vergleich in einen Integer Wert zu wandeln.
Ist das nicht möglich, dann kommt dieser Fehler.
Die Exception tritt in Fastsript auch auf wenn ich z.B. eine Spalte summiere und es hier eine
Leerzeile gibt.
Ich habe mir damals geholfen, indem ich im Quellcode des Scriptinterpreters die Konvertierung
gepatcht habe.
( if isNull or length(Val)=0 then result := 0;

Gruß
Peter
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#7

Re: Fastreport Objekt in abhängikeit von DB Feld

  Alt 7. Mai 2009, 11:53
@Hansa: Danke für Deinen Hinweis. Die DB muss ja nicht unbeding gefüllt werden es reicht ja wenn man es so löst:
SQL-Code:
SELECT
    ID,ACCEPTANCE,STATUS,NOTE,NC,CS,OPT,
    L_UPDATE,STAT_UPDATE,STAT_DEL,'' SCHOOLJ,'' PERSONS
FROM HOTEL
aber die Variante mit Dataset.FieldExist währe das angemehmste. Habe es aber noch nicht hinbekommen.

@Peter: Danke für Deine Hinweise.

Shalom
Manfred
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#8

Re: Fastreport Objekt in abhängikeit von DB Feld

  Alt 8. Mai 2009, 17:17
Hallo nochmals

habe noch einen Tipp aus der Fastreport Newsgroup bekommen.
Delphi-Quellcode:
procedure DefaultPERSONSOnBeforePrint(Sender: TfrxComponent);
var
i: Integer;
ds: TfrxDataSet;
list: TStringList;
begin
  ds := Report.GetDataset('default');// username of ds
  list := TStringList.Create;
  ds.GetFieldList(list);
  for i := 0 to list.Count - 1 do
   somevar := ds.Value[list[i]]; // get field value by its name
end;
Was mir nicht ganz klar ist, wie kann ich hier das Objekt 'PERSONS' ein/ausschalten.
Der Punkt >> somevar := ds.Value[list[i]]; // get field value by its name ist das was mir nicht klar ist. Ich muss ja noch definieren welches Feld er suchen soll.

Ein kleiner Tipp?
Manfred
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Fastreport Objekt in abhängikeit von DB Feld

  Alt 8. Mai 2009, 18:21
Es wird dir eine Liste mit allen Felder geliefert. Jetzt musst du überprüfen, ob dein Feld dabei ist
Markus Kinzler
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#10

Re: Fastreport Objekt in abhängikeit von DB Feld

  Alt 11. Mai 2009, 17:09
Hallo nochmals

bin ein wenig weiter..

Delphi-Quellcode:
procedure DefaultPERSONSOnBeforePrint(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
   db_list := ds.Value[list[i]]; // get field value by its name
    if ['db_list'] = 'PERSONSthen DefaultPERSONS.Visible := true;
   ds.Next;
  end;
end;
if ['db_list'] ist in Klamern da dies anscheinend Notwenig ist.
Zitat:
Make sure when passing the variable a value if it is a string variable to
use extra apostrophe's ['myvariable'] = ''''+string+''''
or it will be an expression and trigger the ogv event.
Erhalte aber immer noch eine Fehlermeldung:
Invalid Variant Operation

PS: Bei dem Wert PERSONS geht es nicht um den Inhalt der Spalte sondern um den Splatennamen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 14:07 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