Das nächste Entwicklertreffen findet Anfang Mai in Münster statt - weitere Infos bzw. zur Anmeldung!

Frax: optionale Ausgabe von Daten

Moderator: Moderatoren

Antworten
peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 474
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Frax: optionale Ausgabe von Daten

Beitrag von peternmb » Mi, 18. Feb 2009 18:09

Hallo, ich beschäftige mich gerade mit der Trial von Frax und komme nicht so richtig weiter:

der Anwender kann vor der Ausgabe über diverse Checkboxen festlegen, welche Daten im Report angezeigt werden sollen.
Die Auswertung dieser Checkboxen übergebe ich an Frax - das funktioniert auch noch problemlos.

Code: Alles auswählen

iif (check10:getData(),FrPrn:AddVariable("Voreinstellungen", "Topp_zeigen",1), ;
                       FrPrn:AddVariable("Voreinstellungen", "Topp_zeigen",0) )
iif (check11:getData(),FrPrn:AddVariable("Voreinstellungen", "Flopp_zeigen",1), ;
                       FrPrn:AddVariable("Voreinstellungen", "Flopp_zeigen",0) )
jetzt versuch ich - wie ich es weiter unten in einem ähnlichen Beitrag gefunden habe - nur wenn die Checkbox markiert ist, die entsprechenden Daten anzeigen zu lassen. Hierzu füge ich im Report bei dem entsprechenden Datenbankfeld (TOPP) unter "Memo" -> "Highlight" -> "Bedingung" folgendes ein:

Code: Alles auswählen

IIF("Topp_zeigen">=1,<RANGLIST."TOPP">,0)
auch so geht es nicht:

Code: Alles auswählen

IIF(Voreinstellungen."Topp_zeigen">=1,<RANGLIST."TOPP">,0)
Leider funktioniert das so nicht, ich erhalte nur einen Fehler im Ausdruck: "Identifier expected".

stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Frax: optionale Ausgabe von Daten

Beitrag von stevie » Do, 19. Feb 2009 8:15

also wir machen das so:

Code: Alles auswählen

oFrPrn:AddVariable("Druckinhalt","lMitDruck",aCheck[1])
aCheck[1] beinhaltet den Wert der Checkbox, also meinetwegen .T.
Jetzt habe ich in Frax das Event "ONBeforePrint" mit einem einfachen Pascalscript belegt.

Code: Alles auswählen

procedure Page1OnBeforePrint(Sender: TfrxComponent);
begin
    if not <lMitDruck> then
    begin                
             Memo5.visible := false;
             Text4.visible := false                                                             
    end;              
end;

begin

end.
In dem Zustand würde Memo5 und Text4 (Namen meiner Anzeigeobjekte) nur dann angezeigt und gedruckt werden, wenn aCheck[1] ".T." ist, sonst würde es ausgeblendet werden.
Viele Grüße
Stevie

peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 474
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Frax: optionale Ausgabe von Daten

Beitrag von peternmb » Do, 19. Feb 2009 10:58

"ONBeforePrint" habe ich bei dem Datenbankfeld TOPP jetzt so belegt:

Code: Alles auswählen

procedure RANGLISTTOPPOnBeforePrint(Sender: TfrxComponent);
begin
  if not <Topp_zeigen> then
     <RANGLIST."TOPP">.visible:=false
end;

begin

end.
Die Parameterübergabe funktioniert problemlos, aber ich bekomme einen Syntaxfehler:
in Zeile 4 soll ein ; fehlen (ein ; am Ende bringt auch nichts)

Leider bin ich mit Pascal-Syntax absolut nicht vertraut.

stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Frax: optionale Ausgabe von Daten

Beitrag von stevie » Do, 19. Feb 2009 13:54

peternmb hat geschrieben:"ONBeforePrint" habe ich bei dem Datenbankfeld TOPP jetzt so belegt:

Code: Alles auswählen

procedure RANGLISTTOPPOnBeforePrint(Sender: TfrxComponent);
begin
  if not <Topp_zeigen> then
     <RANGLIST."TOPP">.visible:=false
end;

begin

end.
Die Parameterübergabe funktioniert problemlos, aber ich bekomme einen Syntaxfehler:
in Zeile 4 soll ein ; fehlen (ein ; am Ende bringt auch nichts)

Leider bin ich mit Pascal-Syntax absolut nicht vertraut.
Zwei Möglichkeiten:
1. probiere ein begin vor Ranglist."topp" und ein end; danach zu setzen, also

Code: Alles auswählen

 if not <Topp_zeigen> then
     begin
     <RANGLIST."TOPP">.visible:=false
     end;

2. Klicke das Textfeld an und nimm statt <RANGLIST."TOPP"> den eigentlichen Namen des Feldes, also wahrscheinlich RANGLISTTOPP und das setzt du mit RANGLISTTOPP.visible auf false.
Dann sollte das gehen.
Viele Grüße
Stevie

peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 474
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Frax: optionale Ausgabe von Daten

Beitrag von peternmb » Do, 19. Feb 2009 14:47

Hallo,

habe ich beides schon probiert - ohne Erfolg.

Falls es eine Rolle spielt:
TOPP ist ein Datenbankfeld der Datenbank RANGLIST.DBF

Ich sehe da absolut keinen Syntaxfehler - die anscheinend große Ähnlichkeit mit Delphi hat

stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Frax: optionale Ausgabe von Daten

Beitrag von stevie » Fr, 20. Feb 2009 10:20

also ich habe noch mal getestet und eine funktionsfähige Variante gefunden.
Benutzt habe ich das Datenset "DoDoku" aus meiner Dokument-Datenbank, Bsp.-Feld ist hier "Betreff"

Code: Alles auswählen

if not <lDoku> then
    begin                
             DODOKUBETREFF.visible:= false                                                    
    end;              

Den Namen habe ich gefunden, indem ich das Feld vorher per Drag n Drop auf das Blatt eingefügt und im Objektbrowser links den Inhalt des Feldes "Name" in den Code kopiert habe.
So funktionierts jedenfalls bei mir mit der Demo von Frax für Xbase.
Viele Grüße
Stevie

peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 474
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Frax: optionale Ausgabe von Daten

Beitrag von peternmb » Fr, 20. Feb 2009 12:38

ja super, so funktioniert es :blob8:

... aber, wie kann ich wenn eine Spalte nicht ausgegeben wird den Rest "aufrücken" ? :?:

Die Dokumentation ist wirklich sehr spartanisch, und hilft kaum weiter.

stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Frax: optionale Ausgabe von Daten

Beitrag von stevie » Mo, 23. Feb 2009 8:17

Hast du unter "Report" -> "Optionen" das Häkchen bei "Zweipass"?
Du schreibst doch deine Daten in diese Masterdatenbänder, also Masterdata1 oder Subdetail1 und so weiter, oder?
Wenn du nun statt der einzelnen Felder das gesamte Band ausblenden lässt, müsste es hochrücken.
Bsp.:
Masterdata1 enthält Projektdaten und Masterdata2 Dokumente. Du möchtest nur Dokumente drucken.

Code: Alles auswählen

    if not <lDoku> then
    begin               
             MasterData1.visible := false
    end;             
Masterdata1 ist wieder der Name des Datenbandes.
Damit rutscht es bei mir automatisch hoch.
Viele Grüße
Stevie

peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 474
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Frax: optionale Ausgabe von Daten

Beitrag von peternmb » Mo, 23. Feb 2009 10:56

Hallo,

meine Ausgabe sieht ähnlich aus, wie im Beispiel 1 ("Simple List") der FRAX-Demo.

Ich habe das Band "PageHeader" und das Band "MasterData".
Es werden in einer Art Tabelle bis zu 12 Spalten angezeigt.
Wenn ich jetz z.B. die Spalte 3 nicht anzeigen lassen möchte kann ich zwar Überschrift und Werte nicht anzeigen, aber es bleibt eine leere Spalte. Im Idealfall möchte ich einfach die Breite der Spalten, die nicht angezeigt werden z.B. auf 10 Pixel setzen. Ich finde aber nirgendwo eine Möglichkeit, die Breite der Spalten per Script zu beeinflussen.

Code: Alles auswählen

procedure RANGLISTMAXOnBeforePrint(Sender: TfrxComponent);
begin
  if not <Topp_zeigen> then
     begin
     RANGLISTMAX.visible:= false;      // Spaltenkopf ausblenden -> funktioniert
     RANGLISTMAX1.visible:= false      // Spalteninhalt ausblenden -> funktioniert
     RANGLISTMAX.width:= 10            // funktioniert so leider nicht
     RANGLISTMAX1.width:= 10           // funktioniert so leider nicht
     end;
end;
Ich habe auch schon in diversen Pascal-Foren gesucht, aber nichts verwertbares gefunden

stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Frax: optionale Ausgabe von Daten

Beitrag von stevie » Mo, 23. Feb 2009 12:42

peternmb hat geschrieben:Hallo,

meine Ausgabe sieht ähnlich aus, wie im Beispiel 1 ("Simple List") der FRAX-Demo.

Ich habe das Band "PageHeader" und das Band "MasterData".
Es werden in einer Art Tabelle bis zu 12 Spalten angezeigt.
Wenn ich jetz z.B. die Spalte 3 nicht anzeigen lassen möchte kann ich zwar Überschrift und Werte nicht anzeigen, aber es bleibt eine leere Spalte. Im Idealfall möchte ich einfach die Breite der Spalten, die nicht angezeigt werden z.B. auf 10 Pixel setzen. Ich finde aber nirgendwo eine Möglichkeit, die Breite der Spalten per Script zu beeinflussen.

Code: Alles auswählen

procedure RANGLISTMAXOnBeforePrint(Sender: TfrxComponent);
begin
  if not <Topp_zeigen> then
     begin
     RANGLISTMAX.visible:= false;      // Spaltenkopf ausblenden -> funktioniert
     RANGLISTMAX1.visible:= false      // Spalteninhalt ausblenden -> funktioniert
     RANGLISTMAX.width:= 10            // funktioniert so leider nicht
     RANGLISTMAX1.width:= 10           // funktioniert so leider nicht
     end;
end;
Ich habe auch schon in diversen Pascal-Foren gesucht, aber nichts verwertbares gefunden
nimm für Spaltenüberschriften lieber Columnheader, ob das anders ist, oder nicht, weiß ich nicht, aber da dies ein Feld für Spaltenüberschriften ist, passt das vlt. besser.
Da wird dir Pascal auch wenig helfen. ".width:=10" funktioniert schon, nur dass die anderen Spalten nicht automatisch aufrücken.
Aber wie die aufrücken sollen, kann ich nicht sagen.
Tipp: Die Spalten müssen nicht so breit wie nötig sein, bei fast jeden Elementen gibt es im Kontextmenü "Autowidth" für die automatische Anpassung der Spaltenbreiten, falls der Text länger als die Spalte ist.
Viele Grüße
Stevie

Antworten