![]() |
Gecheckte Items mit dem Report Builder ausdrucken!
Hallo, wie der Titel schon sagt, möchte ich mit Hilfe des Report Builders alle Items ausdrucken, die in der ChecklistBox angecheckt sind.
Infos: AdsConnection --> AdsQuery --> DataSource --> ppDBPipeline --> ppReport --> ppDesigner
Delphi-Quellcode:
Mithilfe dieser Query, werden Items in die Checklistbox eingetragen.
AdsQuery.SQL.Text:=
SELECT p.Name, p.Vorname, p.PIN, abt.Bezeichnung, p.Passiv, pz.Austritt, F.Bezeichnung, F.Zusatz, F.Strasse, F.Plz, F.Ort, p.ID, bd.Bild From Personal p Left Outer Join Personalzusatz pz on p.ID = pz.Id_Personal Left Outer Join Abteilungen abt on p.ID_Abteilungen = abt.Id Left Outer Join Firma F on p.ID_Firma = F.Id Left Outer Join Bilddatenbank bd on bd.ID_Personal = p.id Where IFNULL(Passiv,false) = false Order By P.name
Delphi-Quellcode:
So, das ist das wichtigste, was man wissen muss :-) um mir bei meinem Problemchen weiter zu helfen.
procedure TfrmAusweisdruck.FormShow(Sender: TObject);
var sName: String; begin frmAusweisdruck.ClientWidth := 357; btnAusblenden.Enabled := False; with qMitarbeiter do begin Active:=True; while not Eof do begin sname := FieldByName('name').AsString + ', ' + FieldByName('Vorname').AsString; chlistboxMitarbeiter.Items.AddObject(sName,TObject(FieldByName('id').AsInteger)); Next; end; end; end; Momentan werden alle Einträge aus der Checklistbox ausgedruckt egal ob angecheckt oder nicht.
Delphi-Quellcode:
procedure TfrmAusweisdruck.bitbtnDruckenClick(Sender: TObject);
begin ppReport1.Print; end; Ich möchte aber, dass nur Einträge ausgedruckt werden, die auch angecheckt sind, wie löse ich das? |
AW: Gecheckte Items mit dem Report Builder ausdrucken!
Selbe Frage, leider konnte mir keiner weiterhelfen...
![]() |
AW: Gecheckte Items mit dem Report Builder ausdrucken!
JIT-Pipeline? Darin die die CheckListbox durchackern und bei gesetztem Häkchen nicht ignorieren?
Ansonsten könntest Du vieleicht die Datenbankpipeline filtern und nur wenn Datensatz in Checkbox aktiv ist, dann auch drucken. Oder halt, daß Du die Selektion aus der Checklistbox in die DB schreibst und dann deine Query für den Report entsprechend anpaßt. |
AW: Gecheckte Items mit dem Report Builder ausdrucken!
Zitat:
|
AW: Gecheckte Items mit dem Report Builder ausdrucken!
Hab grad den ReportBuilder hier auf der Arbeit nicht installiert, aber schau Dir mal die Demos an. Da gibt's was zur JIT Pipeline. Ansonsten zur Ergänzung auch
![]() Im Prinzip läuft's so: Anzahl der Datensätze in der Pipeline setzen, dann im Datenevent entscheiden, was mit den Daten gemacht werden soll bzw. welches Report-Feld mit welchen Daten bestückt wird. |
AW: Gecheckte Items mit dem Report Builder ausdrucken!
Das Band das den Datensatz darstellt, hat ein BeforePrint-Ereignis.
Darin kannst du auf die Pipeline zugreifen und prüfen, ob der jeweilige Datensatz angezeigt werden soll oder nicht. Die Eigenschaft Visible des Bandes setzt du dann entsprechend. Die saubere Lösung ist allerdings, nur die Datensätze bereitzustellen, die auch wirklich angezeigt werden. |
AW: Gecheckte Items mit dem Report Builder ausdrucken!
könnt ihr mir vll mit ein bisschen Code helfen, ich komme nämlich einfach nicht weiter ... :(
|
AW: Gecheckte Items mit dem Report Builder ausdrucken!
Zitat:
Delphi-Quellcode:
Ungetestet im Editor geschrieben.
var
sFilter : String; i : Integer; begin sFilter := ''; for i := 0 to chlistboxMitarbeiter.Itemcount-1 do begin if chlistboxMitarbeiter.Items[i].checked then begin if sFilter <> '' then sFilter := sFilter + ' or '; sFilter := sFilter + 'Id = ' + IntToStr(Integer(chlistboxMitarbeiter.Items.Objects[i])); end; end; if sFilter <> '' then begin qMitarbeiter.Filter := sFilter; qMitarbeaiter.Filtered := True; end; ppReport1.Print; end; |
AW: Gecheckte Items mit dem Report Builder ausdrucken!
Delphi-Quellcode:
procedure TfrmAusweisdruck.ppReport1BeforePrint(Sender: TObject);
var sFilter: String; ichecked: Integer; begin sFilter := ''; for ichecked := 0 to chlistboxMitarbeiter.Count - 1 do if chlistboxMitarbeiter.Checked[ichecked] = True then if sFilter <> '' then sFilter := sFilter + 'or'; sFilter := sFilter + 'ID = ' + IntToStr(Integer(chlistboxMitarbeiter.Items.Objects[ichecked])); // hier knallt es, EListError mit der Meldung 'Listenindex' überschreitet das Maximum (14). P.S. Ich habe 14 Datenbankeinträge. if sFilter <> '' then begin qMitarbeiter.Filter := sFilter; qMitarbeiter.Filtered := True; end; end; |
AW: Gecheckte Items mit dem Report Builder ausdrucken!
Da fehlen ja auch begin und end.
Delphi-Quellcode:
[edit] Hat aber mit dem Listenindex eigentlich nichts zu tun, sry. [/edit]
procedure TfrmAusweisdruck.ppReport1BeforePrint(Sender: TObject);
var sFilter: String; ichecked: Integer; begin sFilter := ''; for ichecked := 0 to chlistboxMitarbeiter.Count - 1 do if chlistboxMitarbeiter.Checked[ichecked]{ = True *Pfui*} then begin //hier if sFilter <> '' then sFilter := sFilter + 'or'; sFilter := sFilter + 'ID = ' + IntToStr(Integer(chlistboxMitarbeiter.Items.Objects[ichecked])); // hier knallt es, EListError mit der Meldung 'Listenindex' überschreitet das Maximum (14). P.S. Ich habe 14 Datenbankeinträge. end; //und hier if sFilter <> '' then begin qMitarbeiter.Filter := sFilter; qMitarbeiter.Filtered := True; end; end; |
AW: Gecheckte Items mit dem Report Builder ausdrucken!
Danke bis dahin, das könnte zu einer Lösung führen....
... aber Ich wähle 2 Items aus meiner Checklistbox aus und drücke auf einen Button, der mir alle zudruckende Dokumente im TppViewer anzeigen sollte, jedoch tritt folgende Fehlermeldung auf:
Code:
qMitarbeiter: Error 3111: Unknown Identifier found in a record filter expression aufgetreten
Delphi-Quellcode:
procedure TfrmAusweisdruck.ppReport1BeforePrint(Sender: TObject);
var sFilter: String; ichecked: Integer; begin sFilter := ''; for ichecked := 0 to chlistboxMitarbeiter.Count - 1 do if chlistboxMitarbeiter.Checked[ichecked] then begin if sFilter <> '' then sFilter := sFilter + 'or'; sFilter := sFilter + 'ID = ' + IntToStr(Integer(chlistboxMitarbeiter.Items.Objects[ichecked])); end; if sFilter <> '' then begin qMitarbeiter.Filter := sFilter; qMitarbeiter.Filtered := True; end; end;
Delphi-Quellcode:
procedure TfrmAusweisdruck.btnEinblendenClick(Sender: TObject);
begin frmAusweisdruck.ClientWidth := 697; btnAusblenden.Enabled := True; btnEinblenden.Enabled := False; ppViewer1.Report := ppReport1; ppReport1.PrintToDevices; |
AW: Gecheckte Items mit dem Report Builder ausdrucken!
3111 Unknown identifier found in the record filter expression
Advantage Error Guide Problem: An error occurred in the Advantage Expression Engine parser. An identifier within the record filter expression is unknown to the parser. Solution: This error is usually caused by the use of memory variables within the record filter expression. Memory variables are not supported by the Advantage Expression Engine as the variables are visible only to the client. This error may also result from a misspelled field name or from a field name that does not exist in the current work area. ?!? |
AW: Gecheckte Items mit dem Report Builder ausdrucken!
Ich sehe gerade, da fehlen Leerzeichen vor und hinter dem or.
Delphi-Quellcode:
So besser?
if sFilter <> '' then sFilter := sFilter + ' or ';
|
AW: Gecheckte Items mit dem Report Builder ausdrucken!
Also, in deinem Filterstring sollte es mindestens 'p.ID' heißen. Und dann laß Dir halt mal ausgeben, was denn als Filterstring gesetzt wird und überprüf den per Hand mit dem SQL Statement.
[edit]Sorry für den ursprünglichen Kommentar, das war mein Fehler. Aber das p.ID sollte dennoch nicht schaden[/edit] |
AW: Gecheckte Items mit dem Report Builder ausdrucken!
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 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