Quantcast
Channel: Crystal Reports
Viewing all articles
Browse latest Browse all 1507

Dynamic Reports

$
0
0

The Idea is to create Dynamic Report with Cristal Report Using Checkbox to select specific fields to send to the report.

Any help please.

I am trying this code but It says Custmers is not defined I do not understand it seems some "IMPORT" Should be done.

Imports System.Data
Imports System.Linq
Imports System.Configuration
Imports System.Data.SqlClient
Imports CrystalDecisions.CrystalReports.Engine

Public Class Report_Test
    Inherits System.Web.UI.Page

   Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If Not Me.IsPostBack Then
            Me.BindReport()
        End If
    End Sub

    Private Sub BindReport()
        Dim query As String = "SELECT TOP 5 "
        Dim isSelected As Boolean = chkColumns.Items.Cast(Of ListItem)().Count(Function(i) i.Selected = True) > 0
        If Not isSelected Then
            chkColumns.Items(0).Selected = True
        End If
        For Each item As ListItem In chkColumns.Items
            If item.Selected Then
                query += item.Value + ","
                isSelected = True
            End If
        Next
        query = query.Substring(0, query.Length - 1)
        query += " FROM Customers"
        Dim crystalReport As New ReportDocument()
        CrystalReportViewer1.DisplayGroupTree = False
        crystalReport.Load(Server.MapPath("~/CustomerReport.rpt"))
        Dim dsCustomers As Customers = GetData(query, crystalReport)
        crystalReport.SetDataSource(dsCustomers)
        CrystalReportViewer1.ReportSource = crystalReport
    End Sub

    Private Function GetData(query As String, crystalReport As ReportDocument) As Customers
        Dim conString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
        Dim cmd As New SqlCommand(query)
        Using con As New SqlConnection(conString)
            Dim dsCustomers As New Customers()
            cmd.Connection = con
            con.Open()
            Using sdr As SqlDataReader = cmd.ExecuteReader()
                'Get the List of all TextObjects in Section2.
                Dim textObjects As List(Of TextObject) = crystalReport.ReportDefinition.Sections("Section2").ReportObjects.OfType(Of TextObject)().ToList()
                For i As Integer = 0 To textObjects.Count - 1
                    'Set the name of Column in TextObject.
                    textObjects(i).Text = String.Empty
                    If sdr.FieldCount > i Then
                        textObjects(i).Text = sdr.GetName(i)
                    End If
                Next
                'Load all the data rows in the Dataset.
                While sdr.Read()
                    Dim dr As DataRow = dsCustomers.Tables(0).Rows.Add()
                    For i As Integer = 0 To sdr.FieldCount - 1
                        dr(i) = sdr(i)
                    Next
                End While
            End Using
            con.Close()
            Return dsCustomers
        End Using
    End Function

    Protected Sub Columns_Changed(sender As Object, e As EventArgs)
        Me.BindReport()
    End Sub
End Class

B>Sanon


Viewing all articles
Browse latest Browse all 1507


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>