![]() |
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 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