Laden...

Wie kann ich ein DataSet programmatisch ausdrucken?

Erstellt von SvenW vor 3 Jahren Letzter Beitrag vor 3 Jahren 820 Views
S
SvenW Themenstarter:in
1 Beiträge seit 2020
vor 3 Jahren
Wie kann ich ein DataSet programmatisch ausdrucken?

Hallo Community,

Ich programmiere gerade mir ein Kleines Programm bei dem ich mir Daten in der Datenbank speichere und diese über DataSet wieder Anzeigen lasse. Nun mächte ich die ausgefüllte Tabelle mir Ausdrucken bekomme aber den Button nicht Programmiert könnte mir jemand den Code zeigen bin neu und hab ich der Suche nichts passendes gefunden. Ich nutze Visual Studio 2019

Mein Code:

using System;
using System.Windows.Forms;



namespace Sven_s_Haustier_App
{
    public partial class frmBehandlungen : Form
    {
        public frmBehandlungen()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close();

        }

        private void erkrankungBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.erkrankungBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.haustierdbDataSet);

        }

        private void frmBehandlungen_Load(object sender, EventArgs e)
        {
            // TODO: Diese Codezeile lädt Daten in die Tabelle "haustierdbDataSet.Art". Sie können sie bei Bedarf verschieben oder entfernen.
            this.artTableAdapter.Fill(this.haustierdbDataSet.Art);
            // TODO: Diese Codezeile lädt Daten in die Tabelle "haustierdbDataSet.Tierarzt". Sie können sie bei Bedarf verschieben oder entfernen.
            this.tierarztTableAdapter.Fill(this.haustierdbDataSet.Tierarzt);
            // TODO: Diese Codezeile lädt Daten in die Tabelle "haustierdbDataSet.Erkrankung". Sie können sie bei Bedarf verschieben oder entfernen.
            this.erkrankungTableAdapter.Fill(this.haustierdbDataSet.Erkrankung);

        }

        private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.erkrankungBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.haustierdbDataSet);

        }

        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {

        }

        private void Drucken_Button_Click(object sender, EventArgs e)
        {
            erkrankungBindingSource.Print();

        }
    }
}

4.931 Beiträge seit 2008
vor 3 Jahren

Hallo und willkommen,

eine BindingSource hat ja auch keine Print()-Methode -;).
Aber du hast ja anscheinend schon eine PrintDocument-Komponente (mit Namen printDocument1) auf deiner Form, d.h. diese kannst du aufrufen:


printDocument1.Print();

Und diese ruft dann die Ereignismethode printDocument1_PrintPage auf, welche du dann passend füllen mußt (also in einer Schleife die Zeilen und Spalten der Tabelle durchgehen und den Inhalt zeichnen).

PS: Als Vorlage kannst du z.B. Print data in rows and columns in C# dir anschauen (ich kenne leider keine gute, vorgefertigte Klasse, welche das automatisch für ein DataSet bzw. DataTable macht).

Wenn du nur die aktuelle Darstellung drucken möchtest, dann kannst du auch einen "Screenshot" der Komponente (z.B. DataGridView) erzeugen: Print DataGridView in Windows Application using C# and VB.Net.

463 Beiträge seit 2009
vor 3 Jahren

Dein Code sieht - durch die Kommentare - ziemlich nach Copy & Paste aus. Ist meistens kein guter Einstieg, da dir die Grundlagen fehlen...

Der Button selber dürfte doch mit dem WinForm Designer kein Problem sein - ich vermute du möchtest wissen, wie du die Methode entwickelst welche die Daten drucken soll, richtig?

Was hast du denn schon versucht? Was macht dir Probleme?

3.825 Beiträge seit 2006
vor 3 Jahren

Eine Liste kannst Du wie folgt drucken :

  1. Das Control drucken :
public void PrintControl(Control pCtrl, string pPrinterName)
{
	PrintDocument doc = new PrintDocument();
	if (pPrinterName != null && pPrinterName != string.Empty)
	{
		doc.PrinterSettings.PrinterName = pPrinterName;
	}
	doc.PrintPage += new PrintPageEventHandler(doc_PrintPage);
...
  1. Eine Liste im Reportbuilder erstellen und diese drucken :
ReportViewer reportViewer1 = new ReportViewer();
reportViewer1.ProcessingMode = ProcessingMode.Local;
...

  1. Eine Liste selber bauen :
PrintPreviewDialog dlg = new PrintPreviewDialog();
dlg.WindowState = FormWindowState.Maximized;
dlg.Name = "... Liste";
dlg.Document = printDocument1;
dlg.ShowDialog();
dlg.Dispose();

Ich würde Variante 2 nehmen.

Das Snippet von TH69 erwähnt sieht recht gut aus. Schwierig wird es nur wenn eine Liste länger als eine Seite ist. Das musst Du dann selber programmieren.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3