vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
report für vb.net 
Autor: rtaucher
Datum: 22.07.08 08:06

hallo!

ich suche etwass ähnliches wie crystal report, aber sollte gratis sein...
habt ihr da vielleicht ein paar tips?

danke!

mfg
rt

mfg
rt

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: report für vb.net 
Autor: Scorpi
Datum: 22.07.08 08:53

in VS2008 gibt es sowas ähnliches auch einfach zu bedienen, sonst musste wohl oder übel viel rum proggen .... Hier mal ein kleines Beispiel, das Datagrids drucken:

  Private oStringFormat As StringFormat
    Private oStringFormatComboBox As StringFormat
    Private oButton As Button
    Private oCheckbox As CheckBox
    Private oComboBox As ComboBox
 
    Private nTotalWidth As Int16
    Private nRowPos As Int16
    Private NewPage As Boolean
    Private nPageNo As Int16
    Private Header As String
    Private sUserName As String
    Private ÜSchriftart As New System.Drawing.Font("Arial", 12.0!, _
      System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, _
      CType(0, Byte))
    Private ESchriftart As New System.Drawing.Font("Arial", 8.0!, _
    System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType( _
    0, Byte))
 
 
    Private Sub PrintDocument1_BeginPrint(ByVal sender As Object, ByVal e As _
      System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.BeginPrint
        oStringFormat = New StringFormat
        oStringFormat.Alignment = StringAlignment.Near
        oStringFormat.LineAlignment = StringAlignment.Center
        oStringFormat.Trimming = StringTrimming.EllipsisCharacter
 
        oStringFormatComboBox = New StringFormat
        oStringFormatComboBox.LineAlignment = StringAlignment.Center
        oStringFormatComboBox.FormatFlags = StringFormatFlags.NoWrap
        oStringFormatComboBox.Trimming = StringTrimming.EllipsisCharacter
 
        oButton = New Button
        oCheckbox = New CheckBox
        oComboBox = New ComboBox
 
        nTotalWidth = 0
        For Each oColumn As DataGridViewColumn In Grid1.Columns
            nTotalWidth += oColumn.Width
        Next
 
        nPageNo = 1
        NewPage = True
        nRowPos = 0
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: report für vb.net - Teil2 
Autor: Scorpi
Datum: 22.07.08 08:54

    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As _
      System.Drawing.Printing.PrintPageEventArgs) Handles _
      PrintDocument1.PrintPage
        Static oColumnLefts As New ArrayList
        Static oColumnWidths As New ArrayList
        Static oColumnTypes As New ArrayList
        Static nHeight As Int16
 
        Dim nWidth, i, nRowsPerPage As Int16
        Dim nTop As Int16 = e.MarginBounds.Top
        Dim nLeft As Int16 = e.MarginBounds.Left
 
        If nPageNo = 1 Then
 
            For Each oColumn As DataGridViewColumn In Grid1.Columns
                nWidth = CType(Math.Floor(oColumn.Width / nTotalWidth * _
                  nTotalWidth * (e.MarginBounds.Width / nTotalWidth)), Int16)
 
                nHeight = e.Graphics.MeasureString(oColumn.HeaderText, _
                  oColumn.InheritedStyle.Font, nWidth).Height + 11
 
                oColumnLefts.Add(nLeft)
                oColumnWidths.Add(nWidth)
                oColumnTypes.Add(oColumn.GetType)
                nLeft += nWidth
            Next
        End If
 
        Do While nRowPos <= Grid1.Rows.Count - 1
            Dim oRow As DataGridViewRow = Grid1.Rows(nRowPos)
 
            If nTop + nHeight >= e.MarginBounds.Height + e.MarginBounds.Top Then
                DrawFooter(e, nRowsPerPage)
 
                NewPage = True
                nPageNo += 1
                e.HasMorePages = True
                Exit Sub
            Else
 
                If NewPage Then
                    ' Draw Header
                    e.Graphics.DrawString(Header, New Font(ÜSchriftart, _
                      FontStyle.Bold), Brushes.Black, e.MarginBounds.Left, _
                      e.MarginBounds.Top - e.Graphics.MeasureString(Header, New _
                      Font(ÜSchriftart, FontStyle.Bold), _
                      e.MarginBounds.Width).Height - 13)
 
                    ' Draw Columns
                    nTop = e.MarginBounds.Top
                    i = 0
                    For Each oColumn As DataGridViewColumn In Grid1.Columns
                        e.Graphics.FillRectangle(New SolidBrush( _
                          Drawing.Color.LightGray), New Rectangle(oColumnLefts( _
                          i), nTop, oColumnWidths(i), nHeight))
                        e.Graphics.DrawRectangle(Pens.Black, New Rectangle( _
                        oColumnLefts(i), nTop, oColumnWidths(i), nHeight))
                        e.Graphics.DrawString(oColumn.HeaderText, _
                        oColumn.InheritedStyle.Font, New SolidBrush( _
                        oColumn.InheritedStyle.ForeColor), New RectangleF( _
                        oColumnLefts(i), nTop, oColumnWidths(i), nHeight), _
                        oStringFormat)
                        i += 1
                    Next
                    NewPage = False
                End If
 
                nTop += nHeight
                i = 0
                For Each oCell As DataGridViewCell In oRow.Cells
                    If oColumnTypes(i) Is GetType(DataGridViewTextBoxColumn) _
                      OrElse oColumnTypes(i) Is GetType(DataGridViewLinkColumn) _
                      Then
                        e.Graphics.DrawString(oCell.Value.ToString, _
                        oCell.InheritedStyle.Font, New SolidBrush( _
                        oCell.InheritedStyle.ForeColor), New RectangleF( _
                        oColumnLefts(i), nTop, oColumnWidths(i), nHeight), _
                        oStringFormat)
 
                    ElseIf oColumnTypes(i) Is GetType(DataGridViewButtonColumn) _
                      Then
                        oButton.Text = oCell.Value.ToString
                        oButton.Size = New Size(oColumnWidths(i), nHeight)
                        Dim oBitmap As New Bitmap(oButton.Width, oButton.Height)
                        oButton.DrawToBitmap(oBitmap, New Rectangle(0, 0, _
                          oBitmap.Width, oBitmap.Height))
                        e.Graphics.DrawImage(oBitmap, New Point(oColumnLefts( _
                        i), nTop))
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: report für vb.net -> Teil3 
Autor: Scorpi
Datum: 22.07.08 08:54

   ElseIf oColumnTypes(i) Is GetType(DataGridViewCheckBoxColumn) Then
                        oCheckbox.Size = New Size(14, 14)
                        oCheckbox.Checked = CType(oCell.Value, Boolean)
                        Dim oBitmap As New Bitmap(oColumnWidths(i), nHeight)
                        Dim oTempGraphics As Graphics = Graphics.FromImage( _
                          oBitmap)
                        oTempGraphics.FillRectangle(Brushes.White, New _
                        Rectangle(0, 0, oBitmap.Width, oBitmap.Height))
                        oCheckbox.DrawToBitmap(oBitmap, New Rectangle(CType(( _
                        oBitmap.Width - oCheckbox.Width) / 2, Int32), CType(( _
                        oBitmap.Height - oCheckbox.Height) / 2, Int32), _
                        oCheckbox.Width, oCheckbox.Height))
                        e.Graphics.DrawImage(oBitmap, New Point(oColumnLefts( _
                        i), nTop))
 
                    ElseIf oColumnTypes(i) Is GetType( _
                      DataGridViewComboBoxColumn) Then
                        oComboBox.Size = New Size(oColumnWidths(i), nHeight)
                        Dim oBitmap As New Bitmap(oComboBox.Width, _
                          oComboBox.Height)
                        oComboBox.DrawToBitmap(oBitmap, New Rectangle(0, 0, _
                        oBitmap.Width, oBitmap.Height))
                        e.Graphics.DrawImage(oBitmap, New Point(oColumnLefts( _
                        i), nTop))
                        e.Graphics.DrawString(oCell.Value.ToString, _
                        oCell.InheritedStyle.Font, New SolidBrush( _
                        oCell.InheritedStyle.ForeColor), New RectangleF( _
                        oColumnLefts(i) + 1, nTop, oColumnWidths(i) - 16, _
                        nHeight), oStringFormatComboBox)
 
                    ElseIf oColumnTypes(i) Is GetType(DataGridViewImageColumn) _
                      Then
                        Dim oCellSize As Rectangle = New Rectangle(oColumnLefts( _
                        i), nTop, oColumnWidths(i), nHeight)
                        Dim oImageSize As Size = CType(oCell.Value, Image).Size
                        e.Graphics.DrawImage(oCell.Value, New Rectangle( _
                          oColumnLefts(i) + CType(((oCellSize.Width - _
                          oImageSize.Width) / 2), Int32), nTop + CType((( _
                          oCellSize.Height - oImageSize.Height) / 2), Int32), _
                          CType(oCell.Value, Image).Width, CType(oCell.Value, _
                          Image).Height))
                    End If
 
                    e.Graphics.DrawRectangle(Pens.Black, New Rectangle( _
                      oColumnLefts(i), nTop, oColumnWidths(i), nHeight))
 
                    i += 1
                Next
            End If
 
            nRowPos += 1
            nRowsPerPage += 1
        Loop
 
        DrawFooter(e, nRowsPerPage)
        e.HasMorePages = False
    End Sub
 
 
    Private Sub DrawFooter(ByVal e As _
      System.Drawing.Printing.PrintPageEventArgs, ByVal RowsPerPage As Int32)
        Dim sPageNo As String = "Seite " & nPageNo.ToString
 
        'Seiteneinstellung checken
        If e.PageSettings.Margins.Top < 10 Then e.PageSettings.Margins.Top = 10
        If e.PageSettings.Margins.Bottom < 10 Then _
          e.PageSettings.Margins.Bottom = 10
 
        'Abstand unten holen
        Dim unten As Integer = e.PageSettings.Margins.Bottom - 15
 
 
        ' Right Align - User Name
        e.Graphics.DrawString(sUserName, ESchriftart, Brushes.Black, _
          e.MarginBounds.Left + (e.MarginBounds.Width - _
          e.Graphics.MeasureString(sPageNo, ESchriftart, _
          e.MarginBounds.Width).Width - 135), e.MarginBounds.Top + _
          e.MarginBounds.Height - unten)
 
        ' Left Align - Date/Time
        e.Graphics.DrawString(Now.ToLongDateString + " " + _
          Now.ToShortTimeString, ESchriftart, Brushes.Black, _
          e.MarginBounds.Left, e.MarginBounds.Top + e.MarginBounds.Height - _
          unten)
 
        ' Center  - Page No. Info
        e.Graphics.DrawString(sPageNo, ESchriftart, Brushes.Black, _
          e.MarginBounds.Left + (e.MarginBounds.Width - _
          e.Graphics.MeasureString(sPageNo, ESchriftart, _
          e.MarginBounds.Width).Width) / 2, e.MarginBounds.Top + _
          e.MarginBounds.Height - unten)
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: report für vb.net - Teil2 
Autor: rtaucher
Datum: 22.07.08 08:55

danke dir!

werd das mal probieren...

lg
rt

mfg
rt

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: report für vb.net 
Autor: ModeratorFZelle (Moderator)
Datum: 22.07.08 09:34

http://www.fyireporting.com/

Oder wenn Du VS.NET ab std hast, ist der ReportViewer von MS mit dabei.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: report für vb.net 
Autor: Anhuera
Datum: 27.08.08 14:06

Hallo !

habe hoffentlich nur ein kleines Problem mit dem ReportViewer von VS 2005. Ich finde dafür keine Lösung.
Ich habe mir einen Report erzeugt und kann ihn mir im ReportViewer auch ansehen und ausdrucken. Nur mit den Seiteneinstellungen bin ich nicht zufrieden. Der Report verwendet nicht Standardeinstellungen des VB-Projekts. Diese stehen aber auf dem Papierformat "Letter" und haben völlig eigene Randeinstellungen. Ich benötige allerdings "A4" und genau definierte Ränder.

Wie kann ich diese Standardeinstellungen ändern, damit sie im ReportViewer auch immer erkannt werden. Aktionen im ReportViewer wie Aktualisieren, Layoutänderung und Seiteneinstellung greifen immer nur auf die Standardeinstellungen.

Wer kann mir helfen ? Danke im Voraus

Andreas
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: report für vb.net -> Teil3 
Autor: Erichbru
Datum: 25.01.23 13:03

habe den Code bei mir verwendet und bekomme unerwartet einen Bug

Das Objekt des Typs "System.Byte[]" kann nicht in Typ "System.Drawing.Image" umgewandelt werden.

was kann ich da machen

ich speichere die Bilder in Typ "System.Byte[]".

PS wenn kein Bild da ist meckert er auch
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel