السلام عليكــم ورحمـة الله وبركاتــه ،،
بناءا على طلب حد الأخوة هذا شرح بسيط كتبتة على عُجالة ( أرجوا أن يكون وأضح لست بارعا في شرح :D )
طريقة ربط كرستال ريبورت بالقاعدة البيانات عن طريق dataset
سأبدأ ب web.config
وكتابة
<connectionStrings> <add name="ConnectionString" connectionString="Data Source=.;Initial Catalog=databsename;Integrated Security=True;MultipleActiveResultSets=False;Packet Size=4096;Application Name="Microsoft SQL Server Management Studio Express"" providerName="System.Data.SqlClient"/> </connectionStrings>
بعد ذلك نقوم بأنشأ صفحة ونُظيف عليها مستعرض التقارير ويصبح الكود هكذا
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="report.aspx.vb" Inherits="report" %>
<%@ Register assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" namespace="CrystalDecisions.Web" tagprefix="CR" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" >
<head id="Head1" runat="server">
<title>Untitled Page</title>
<link href="/aspnet_client/System_Web/2_0_50727/CrystalReportWebFormViewer3/css/default.css"
rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<CR:CrystalReportSource ID="CrystalReportSource1" runat="server">
</CR:CrystalReportSource>
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server"
AutoDataBind="true" ReportSourceID="CrystalReportSource1" />
</form>
</body>
</html>
سنقوم الأن بأنشأ dataset
وبعد ذلك نختار الكونكشن الذي كتبناه في web.config
وبعد ضغط على next
يوجد ثلاث خيارات
الأولى لكتابة الكويري في الداتاست وفي هذه الحاله يكون ثابت يتم تغيره من الداتا ست
الثانية والثلاثة من الستور برسجر تختلف الثالثة ب الستور برسجر مكتوب من قبل
طبعا نختار الثالثة
والشاشة التالية
وهنا نختار الستور برسجر الموجود سابقا
بعد أن قمنا بأنشاء dataset
حان وقت التقرير نقوم بأظافته
بعدذلك تظهر هذه الشاشة
[
أما الخطوة التالية نختار الداتا ست
والخطوة الأخيرة
يظهر الجدول على اليسار الذي علية الدائرة ومنه أختار الحقول
والأن
سنقوم بكتابة الكود في الصفحة
Imports System.Data
Imports System.Data.SqlClient
Imports System.Globalization
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.CrystalReports
Partial Class report
Inherits System.Web.UI.Page
Public Conn As New SqlConnection
Public settings As ConnectionStringSettings
Public custcomand As New SqlCommand
Dim rpt As ReportDocument
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ToString()
If Conn.State = ConnectionState.Closed Then
Conn.Open()
End If
rpt = New ReportDocument
Dim ReportPath As String = Server.MapPath("report.rpt")
rpt.Load(ReportPath)
Dim MyCommand As SqlCommand = New SqlCommand
Dim myDA As New SqlDataAdapter
Dim myDS As New DataSet
MyCommand.Connection = Conn
''Parameters
Dim id As Integer = CInt(Request.QueryString("id").ToString)
MyCommand.CommandType = CommandType.StoredProcedure
MyCommand.CommandText = "Get" ''StoredProcedure name
MyCommand.Connection = Conn
MyCommand.CommandTimeout = 0
MyCommand.Parameters.Clear()
MyCommand.Parameters.AddWithValue("@id", ID)
myDA.SelectCommand = MyCommand
myDA.Fill(myDS, "datasetreport") ''datasetname
rpt.SetDataSource(myDS)
CrystalReportViewer1.ReportSource = rpt
If Conn.State = ConnectionState.Open Then
Conn.Close()
End If
End Sub
Sub Page_Unload(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Unload
Try
rpt.Close()
rpt.Dispose()
Catch ex As Exception
End Try
End Sub
End Classملاحظة
هذه طريقة الربط فقط عن طريق dataset
أرجوا أن أكون قد وفقت في طرحي
أن أخطأت فمن نفسي وشيطان
وأن وفُقت فمن الله وحده