DevExpress ile Raporlama Scripti hazırlayalım.

Genel

Merhaba arkadaşlar;

Bu yazımda devexpress tool ile raporlama nasıl yapılır onu anlatacağım.

Bu resim için metin sağlanmadı

Böyle bir rapor çıktısı oluşturabilmek için devexpress toolunu kullanabiliyor olmanız gerekiyor.

Rapor çıktısının pivot olması; yazılımcıyı bir çok rapor değişikliğinden kurtarır.

Eğer müşteri bir raporu birden farklı şekillerde almak istiyorsa, tam proje kapanışı sırasında 50 tane aynı rapordan farklı şekillerde yapmak zorunda kalırsınız.;

Pivot table özelli olan rapor toolları böyle durumlarda yazılımcıların imdadına yetişiyor.

Müşteri her ne kadar ilk başta bu görüntüden hoşlanmasa da (excel pivot’u bilmeyen ve ne kadar muhteşem bir özellik olduğundan bi haber olan müşterileri kastediyorum) daha sonrasında bu tarz bir rapora alıştıklarında, rapordan vazgeçemiyorlar.

Şimdi sizlerle öncelikle puantaj bilgilerinin yada datanın nereden girildiğini göstereyim.

Bu resim için metin sağlanmadı

Böyle bir ekrandan veriler (halı dokuma sistemi ve dokuma şekilleriyle ilgili veriler) giriliyor. Yazılımın çok detayına girmeyeceğim, Konudan uzaklaşmak istemiyorum.

Burada amaç; halıyı dokuyan usta ve çırağının dokuma şekli ve miktarına göre ay sonu prim ve para hesabının yapılması.

Şimdi kriter ekranını anlatacak olursak;

 Private Sub rptkrtHakedisBazliDokuma_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MakineComboDoldur()
        UrunComboDoldur()
        VardiyaComboDoldur()
    End Sub


    Private Sub btnRaporGoster_Click(sender As Object, e As EventArgs) Handles btnRaporGoster.Click
        Dim personelkriter As String = ""
        Dim kriterstring As String = "TARIH>='" & voi.tarihYYYYMMDDondur(trhbastarih.Value.ToString()) & "'|"
        kriterstring = kriterstring & "TARIH<='" & voi.tarihYYYYMMDDondur(trhbittarih.Value.ToString()) & "'|"
        If Not (cmbMakine.SelectedValue Is Nothing) Then
            kriterstring = kriterstring & "MAKINEID =" & cmbMakine.SelectedValue.ToString & "|"
        End If


        If Not (cmbUrun.SelectedValue Is Nothing) Then
            kriterstring = kriterstring & "URUNID=" & cmbUrun.SelectedValue.ToString & "|"
        End If


        If Not (cmbVardiya.SelectedValue Is Nothing) Then
            kriterstring = kriterstring & "VARDIYAID=" & cmbVardiya.SelectedValue.ToString & "|"
        End If


        Dim krtusta As String = ""
        Dim krtyardimci As String = ""
        If (txtHDUstaID.Text <> "") Then
            personelkriter = personelkriter & "," & txtHDUstaID.Text
        End If
        If (txtHDYardID.Text <> "") Then
            personelkriter = personelkriter & "," & txtHDYardID.Text
        End If
        If (personelkriter <> "") Then
            personelkriter = personelkriter.Substring(1, personelkriter.Count - 1)
            personelkriter = "PERSONELID IN(" & personelkriter & ")"
        End If
        kriterstring = kriterstring & personelkriter
        rptHakedisDokumaRaporu.kriterstring = kriterstring
        rptHakedisDokumaRaporu.MdiParent = MainForm
        rptHakedisDokumaRaporu.Show()
    End Sub
    Private Sub btnUstaPersonelAra_Click_1(sender As Object, e As EventArgs) Handles btnUstaPersonelAra.Click
        frmlstPersonel.Close()
        frmlstPersonel.gelenbuton = "rptHakedisBazliDokumaUsta"
        frmlstPersonel.MdiParent = MainForm
        frmlstPersonel.Show()


    End Sub
    Private Sub btnYardPersonelAra_Click_1(sender As Object, e As EventArgs) Handles btnYardPersonelAra.Click
        frmlstPersonel.Close()
        frmlstPersonel.gelenbuton = "rptHakedisBazliDokumaYardimci"
        frmlstPersonel.MdiParent = MainForm
        frmlstPersonel.Show()
    End Sub
    Public Sub MakineComboDoldur()
        Using connection As New SqlConnection(MainForm.gGetConnectionString())
            connection.Open()
            Dim strSQL As String = "SELECT MAKINEID,MAKINEADI FROM TBL_MAKINELER ORDER BY MAKINEID ASC"
            Dim da As New SqlDataAdapter(strSQL, connection)
            Dim ds As New DataSet
            da.Fill(ds, "TBL_MAKINELER")
            cmbMakine.DataSource = ds.Tables(0)


            cmbMakine.ValueMember = "MAKINEID"
            cmbMakine.DisplayMember = "MAKINEADI"
            cmbMakine.SelectedIndex = -1
        End Using
    End Sub
    Public Sub UrunComboDoldur()
        Using connection As New SqlConnection(MainForm.gGetConnectionString())
            connection.Open()
            Dim strSQL As String = "SELECT URUNID,URUNAD FROM TBL_URUN ORDER BY URUNID ASC"
            Dim da As New SqlDataAdapter(strSQL, connection)
            Dim ds As New DataSet
            da.Fill(ds, "TBL_URUN")
            cmbUrun.DataSource = ds.Tables(0)


            cmbUrun.ValueMember = "URUNID"
            cmbUrun.DisplayMember = "URUNAD"
            cmbUrun.SelectedIndex = -1
        End Using
    End Sub
    Public Sub VardiyaComboDoldur()
        Using connection As New SqlConnection(MainForm.gGetConnectionString())
            connection.Open()
            Dim strSQL As String = "SELECT VARDIYAID,CONVERT(VARCHAR(20),ACIKLAMA) + '->' +LEFT(CONVERT(VARCHAR(20),BASSAAT),5) +' - ' + LEFT(CONVERT(VARCHAR(20),BITSAAT),5) ACIKLAMA FROM TBL_VARDIYA ORDER BY VARDIYAID ASC"
            Dim da As New SqlDataAdapter(strSQL, connection)
            Dim ds As New DataSet
            da.Fill(ds, "TBL_VARDIYA")
            cmbVardiya.DataSource = ds.Tables(0)


            cmbVardiya.ValueMember = "VARDIYAID"
            cmbVardiya.DisplayMember = "ACIKLAMA"
            cmbVardiya.SelectedIndex = -1
        End Using
    End Sub


    Private Sub btnUstaTemizle_Click(sender As Object, e As EventArgs) Handles btnUstaTemizle.Click
        txtHDUstaID.Text = ""
        txtUstaAdSoyad.Text = ""
    End Sub


    Private Sub btnYardTemizle_Click(sender As Object, e As EventArgs) Handles btnYardTemizle.Click
        txtHDYardID.Text = ""
        txtYardAdSoyad.Text = ""
    End Sub
Bu resim için metin sağlanmadı

Kriterde rapor göster dediğimizde;

Bu resim için metin sağlanmadı

Data source wizard’ın olduğu formda form load’ına aşağıdaki kodları yazıyorum.

 Private Sub RaporYukle(connection As SqlConnection)
        Try
            Dim strSQL As String = "  SELECT * FROM VIEW_RPT_HAKEDISBAZLISONUC2"


            If kriterstring <> "" Then
                kriterstring.Split("|")
                Dim kriterler As String() = kriterstring.Split(New Char() {"|"c})
                Dim strkriterler As String = ""
                ' Use For Each loop over words and display them.
                Dim kriter As String = ""
                For Each kriter In kriterler
                    If kriter <> "" Then
                        strkriterler = strkriterler & " AND " & kriter.ToString()
                    End If


                Next
                strkriterler = " WHERE 1=1 " & strkriterler
                strSQL = strSQL & strkriterler
            End If


            Dim da As New SqlDataAdapter(strSQL, connection)
            Dim ds As New DataSet
            da.Fill(ds, strSQL)


            PivotGridControl1.DataSource = ds.Tables(0)
            PivotGridControl1.RetrieveFields()
            PivotGridControl1.Fields("TARIH").Area = PivotArea.RowArea
            PivotGridControl1.Fields("MAXUCRET").Area = PivotArea.FilterArea
            PivotGridControl1.Fields("MINUCRET").Area = PivotArea.FilterArea




            PivotGridControl1.Fields("ADISOYADI").Area = PivotArea.RowArea
            PivotGridControl1.Fields("ADISOYADI").Options.ShowTotals = False
            PivotGridControl1.Fields("VARDIYAACIKLAMA").Area = PivotArea.FilterArea
            PivotGridControl1.Fields("VARDIYAACIKLAMA").Options.ShowTotals = False
            PivotGridControl1.Fields("TATIL").Area = PivotArea.RowArea
            PivotGridControl1.Fields("TATIL").Options.ShowTotals = False


            PivotGridControl1.Fields("ORANLANMISHAKEDIS").Area = PivotArea.DataArea
            PivotGridControl1.Fields("ORANLANMISHAKEDIS").Options.ShowTotals = False
            PivotGridControl1.Fields("GERCEKHAKEDIS").Area = PivotArea.DataArea
            PivotGridControl1.Fields("GERCEKHAKEDIS").Options.ShowTotals = False
            PivotGridControl1.Fields("SONUCHAKEDIS").Area = PivotArea.DataArea
            PivotGridControl1.Fields("SONUCHAKEDIS").Options.ShowTotals = False
            PivotGridControl1.Fields("FARK").Area = PivotArea.DataArea
            PivotGridControl1.Fields("FARK").Options.ShowTotals = False
            PivotGridControl1.Fields("ODENECEK").Area = PivotArea.DataArea
            PivotGridControl1.Fields("ODENECEK").Options.ShowTotals = False








        Catch ex As SqlException
            MsgBox(ex.Message, MsgBoxStyle.Critical, "SQL Error")
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "General Error")
        End Try
        connection.Close()
    End Sub
End Class

Burada önemli olan detay ;

rapor alanlarının pivot sınıfındaki özellikleri. Bir alanın satırda,sütunda,değer ve toplam bilgilerinin parametreleri bu kısımda veriliyor.

Bu resim için metin sağlanmadı

Referansları eklemeyi unutmayın 🙂

Ayrıca raporu yazdırmak çok basit 🙂

PivotGridControl1.ShowPrintPreview()

Daha ne olsun..

Kolay gelsin iyi çalışmalar..

0 views