AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge Gecheckte Items mit dem Report Builder ausdrucken!
Thema durchsuchen
Ansicht
Themen-Optionen

Gecheckte Items mit dem Report Builder ausdrucken!

Ein Thema von Metallicwar · begonnen am 21. Dez 2010 · letzter Beitrag vom 21. Dez 2010
Antwort Antwort
Seite 1 von 2  1 2      
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#1

Gecheckte Items mit dem Report Builder ausdrucken!

  Alt 21. Dez 2010, 11:35
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:
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
Mithilfe dieser Query, werden Items in die Checklistbox eingetragen.
Delphi-Quellcode:
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;
So, das ist das wichtigste, was man wissen muss um mir bei meinem Problemchen weiter zu helfen.

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?
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#2

AW: Gecheckte Items mit dem Report Builder ausdrucken!

  Alt 21. Dez 2010, 11:52
Selbe Frage, leider konnte mir keiner weiterhelfen...
http://www.delphipraxis.net/154853-i...bernehmen.html
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Gecheckte Items mit dem Report Builder ausdrucken!

  Alt 21. Dez 2010, 12:01
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.
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#4

AW: Gecheckte Items mit dem Report Builder ausdrucken!

  Alt 21. Dez 2010, 12:15
Zitat:
JIT-Pipeline? Darin die die CheckListbox durchackern und bei gesetztem Häkchen nicht ignorieren?
könntest du das bitte mal bisschen genauer erklären, hab mich mit dem Report Builder noch nicht wirklich viel beschäftigt.
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Gecheckte Items mit dem Report Builder ausdrucken!

  Alt 21. Dez 2010, 12:24
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 http://www.digital-metaphors.com:808...ccess/JIT_Data (aber probier's erst mal mit dem Demos für das Grundprinzip)

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.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#6

AW: Gecheckte Items mit dem Report Builder ausdrucken!

  Alt 21. Dez 2010, 13:42
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.
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#7

AW: Gecheckte Items mit dem Report Builder ausdrucken!

  Alt 21. Dez 2010, 13:54
könnt ihr mir vll mit ein bisschen Code helfen, ich komme nämlich einfach nicht weiter ...
  Mit Zitat antworten Zitat
Tyrolean

Registriert seit: 3. Jul 2003
76 Beiträge
 
Delphi 7 Professional
 
#8

AW: Gecheckte Items mit dem Report Builder ausdrucken!

  Alt 21. Dez 2010, 14:30
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?
Vor dem Print einfach einen Filter auf die Query setzen. In etwa so:
Delphi-Quellcode:
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;
Ungetestet im Editor geschrieben.
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#9

AW: Gecheckte Items mit dem Report Builder ausdrucken!

  Alt 21. Dez 2010, 14:58
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;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#10

AW: Gecheckte Items mit dem Report Builder ausdrucken!

  Alt 21. Dez 2010, 15:03
Da fehlen ja auch begin und end.
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 *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;
[edit] Hat aber mit dem Listenindex eigentlich nichts zu tun, sry. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (21. Dez 2010 um 15:05 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:39 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