Hallo,
ich habe folgendes Problem.
Ich habe eine Access-Datenbank. Diese wird gefiltert in einem DataGridView angezeigt. Nun möchte ich diese gefilterten Werte ausdrucken, um eine Art Übersichtsdokument zu erstellen.
Für diesen Druck verwende ich eine Schleife, welches die gefilterten Werte auf das Papier bringt. Jedoch möchte ich es darauf begrenzen, dass ab 20 Datensätzen eine neue Seite angebrochen wird.
Wie definiere ich, dass eine neue Seite nach exakt 20 Datensätzen angebrochen wird?
Ich habe dazu im Forum einige Beiträge gefunden, die mir leider nicht weiter geholfen haben.
ich habe folgendes Problem.
Ich habe eine Access-Datenbank. Diese wird gefiltert in einem DataGridView angezeigt. Nun möchte ich diese gefilterten Werte ausdrucken, um eine Art Übersichtsdokument zu erstellen.
Für diesen Druck verwende ich eine Schleife, welches die gefilterten Werte auf das Papier bringt. Jedoch möchte ich es darauf begrenzen, dass ab 20 Datensätzen eine neue Seite angebrochen wird.
VB.NET-Quellcode
- Try
- Dim mRow As Integer = 0
- Dim newpage As Boolean = True
- With Form4.DataDataGridView
- Dim fmt As StringFormat = New StringFormat(StringFormatFlags.LineLimit)
- fmt.LineAlignment = StringAlignment.Center
- fmt.Trimming = StringTrimming.EllipsisCharacter
- Dim y As Single = e.MarginBounds.Top + 70
- Do While mRow < .RowCount
- Dim row As DataGridViewRow = .Rows(mRow)
- Dim x As Single = 25
- Dim h As Single = 0
- For Each cell As DataGridViewCell In row.Cells
- Dim rc As RectangleF = New RectangleF(x, y, 75, cell.Size.Height)
- e.Graphics.DrawRectangle(Pens.Black, rc.Left, rc.Top, rc.Width, rc.Height)
- If (newpage) Then
- e.Graphics.DrawString(Form4.DataDataGridView.Columns(cell.ColumnIndex).HeaderText, fon, Brushes.Black, rc, fmt)
- Else
- e.Graphics.DrawString(Form4.DataDataGridView.Rows(cell.RowIndex).Cells(cell.ColumnIndex).FormattedValue.ToString(), fon, Brushes.Black, rc, fmt)
- End If
- x += rc.Width
- h = Math.Max(h, rc.Height)
- Next
- If newpage Then
- newpage = False
- Else
- mRow += 1
- End If
- y += h
- If y + h > e.MarginBounds.Bottom Then
- e.HasMorePages = True
- mRow -= 1
- newpage = True
- Exit Sub
- End If
- Loop
- mRow = 0
- End With
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
Wie definiere ich, dass eine neue Seite nach exakt 20 Datensätzen angebrochen wird?
Ich habe dazu im Forum einige Beiträge gefunden, die mir leider nicht weiter geholfen haben.