تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيفية تمرير البيانات الى Microsoft Report باستخدام الباراميترات
#1
بسم الله الرحمن الرحيم
((رب اشرح لي صدري ويسر لي امري واحلل عقدة من لساني يفقهوا قولي))
صدق الله العلي العظيم


بسم الله الرحمن الرحيم وصلى الله على اشرف الخلق محمد وعلى آله وصحبه المنتجبين

السلام عليكم ايها الاحبة اعضاء و زوار المنتدى الأكارم ورحمة الله وبركاته



سنتعلم في هذا الموضوع كيفية تمرير القيم الى تقارير Microsoft Report وكيفة التعامل معها باستخدام الباراميترات وذلك عن طريق لغتي #C و VB وقاعدة بيانات أكسس لكي تعم الفائدة للجميع ان شاءاللهSmile


اولا: نقوم بتصميم جدول فيه ثلاث حقول (std_ID, std_Name, std_Age) 

ثانيا: نفتح نفتح مشروع جديد ونسميه على سبيل المثال ReportViewer ونضع عليه الادوات المطلوبة

ثالثا: من شريط القوائم نختار Projrect ومن ثم Add New Item 
وبعد ان نضغط Add تظهر لنا نافذة تصميم التقرير صممه بالشكل الذي تريد 
بعد الانتهاء من تصميم التقرير من حيث المظهر بقي لنا ان نضيف ثلاث باراميارات الى التصميم لتستقبل القيم المرسلة من قبل المستخدم ,لعمل ذلك نختار View من شريط القوائم ومن ثم نختار Report Data
الآن نضغط بالزر الماوس الايمن على Parameters ونختار Add Parameter 
 وننشىء ثلاث باراميترات.

الآن نضيف الباراميترات الى التصميم 
الى هنا والحمد لله انتهينا من تصميم التقرير وبقي لنا ان نربطه بالReportViewer وذلك عن طريق السهم الموجود في اعلى اليمين للReportViewer ومن Choose Report نخنار التقرير الذي صممناه.



الآن جاء دور كتابة الاكواد ,لنبدأ بعد التوكل على الله:

اولا: مجالات الاسماء:

#C





PHP كود :
using System.Data.OleDb;
using Microsoft.Reporting.WinForms


VB





PHP كود :
Imports System.Data.OleDb
Imports Microsoft
.Reporting.WinForms 



ثانيا: تعريف المتغيرات:

#C





PHP كود :
private OleDbConnection olecon;
 
       private OleDbDataAdapter oleadp;
 
       private DataTable mytable;
 
       private DataSet myset;
 
       private string constr "Provider=Microsoft.Jet.OleDb.4.0; Data Source=" Application.StartupPath "/student.mdb;";
 
       private int pos 0;

 
       ReportParameter[] rep_param;
 
       ReportDataSource rep_source



VB





PHP كود :
Private olecon As OleDbConnection
    Private oleadp 
As OleDbDataAdapter
    Private mytable 
As DataTable
    Private myset 
As DataSet
    Private constr 
As String "Provider=Microsoft.Jet.OleDb.4.0; Data Source=" Application.StartupPath "/student.mdb;"
 
   Private pos As Integer 0

    Private rep_param
() As ReportParameter
    Private rep_source 
As ReportDataSource 


ملاحظة: تعريف المتغيرات يكون ضمن الفئة From.


ثالثا: تعريف دالة الConnection

#C





PHP كود :
private bool connection()
 
       {
 
           olecon = new OleDbConnection(constr);
 
           oleadp = new OleDbDataAdapter("select * from std"olecon);

 
           myset = new DataSet("Student");
 
           mytable = new DataTable();

 
           try
            
{

 
               olecon.Open();
 
               oleadp.Fill(myset"Student");
 
               mytable myset.Tables["Student"];

 
               return true;
 
           }
 
           catch(Exception ex)
 
           {
 
               MessageBox.Show(ex.Message);
 
               return false;
 
           }
 
           finally
            
{
 
               olecon.Close();
 
           }
 
       



VB





PHP كود :
Private Function connection() As Boolean

        olecon 
= New OleDbConnection(constr)
 
       oleadp = New OleDbDataAdapter("select * from std"olecon)

 
       myset = New DataSet("Student")
 
       mytable = New DataTable()

 
       Try


            olecon
.Open()
 
           oleadp.Fill(myset"Student")
 
           mytable myset.Tables("Student")

 
           Return True

        Catch ex 
As Exception
            MessageBox
.Show(ex.Message)
 
           Return False

        Finally

            olecon
.Close()

 
       End Try

 
   End Function 



ثاثا: دالة Filling:

#C





PHP كود :
private void Filling(int p)
 
       {
 
           id_txt.Text mytable.Rows[p]["std_ID"].ToString();
 
           name_txt.Text mytable.Rows[p]["std_Name"] as string;
 
           age_txt.Text mytable.Rows[p]["std_Age"] as string;
 
       



VB





PHP كود :
Private Sub Filling(ByVal p As Integer)

 
       id_txt.Text mytable.Rows(p)("std_ID").ToString()
 
       name_txt.Text mytable.Rows(p)("std_Name").ToString()
 
       age_txt.Text mytable.Rows(p)("std_Age").ToString()

 
   End Sub 



رابعا: استدعاء الدالة Connection داخل الحدث Load للFrom:

#C





PHP كود :
private void Form1_Load(object senderEventArgs e)
 
       {
 
           if (connection())
 
           {
 
               MessageBox.Show("Connection Succeed");
 
           }
 
           else
            
{
 
               MessageBox.Show("Connection Fail");
 
           }

 
this.reportViewer1.RefreshReport();
 
       



VB





PHP كود :
Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load

        If 
(connection()) Then

            MessageBox
.Show("Connection Succeed")

 
       Else

            MessageBox
.Show("Connection Fail")
 
       End If

 
       Me.ReportViewer1.RefreshReport()

 
   End Sub 



خامسا: استدعاء الدالة Filling داخل ShowData:

#C





PHP كود :
private void show_btn_Click(object senderEventArgs e)
 
       {
 
           Filling(pos);
 
       



VB





PHP كود :
Private Sub show_btn_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles show_btn.Click

        Filling
(pos)

 
   End Sub 



سادسا: كتابة اكواد السجل التالي والسابق:

#C





PHP كود :
private void next_btn_Click(object senderEventArgs e)
 
       {

 
           if (pos mytable.Rows.Count 1)
 
           {
 
               pos++;
 
               Filling(pos);
 
           }
 
       }

 
       private void prev_btn_Click(object senderEventArgs e)
 
       {
 
           
            if 
(pos 0)
 
           {
 
               pos--;
 
               Filling(pos);
 
           }
 
       



VB





PHP كود :
Private Sub next_btn_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles next_btn.Click

        If 
(pos mytable.Rows.Count 1Then
            pos 
pos 1
            Filling
(pos)
 
       End If

 
   End Sub

    Private Sub prev_btn_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles prev_btn.Click

        If 
(pos 0Then
            pos 
pos 1
            Filling
(pos)
 
       End If

 
   End Sub 



واخيرا كتابة كود تمرير القيم عن طريق الباراميترات داخل زر الReport:


#C





PHP كود :
private void to_btn_Click(object senderEventArgs e)
 
       {
 
           rep_source = new ReportDataSource("mytable"mytable);
 
           this.reportViewer1.LocalReport.DataSources.Add(rep_source);

 
           rep_param = new ReportParameter[mytable.Columns.Count];
 
           rep_param[0] = new ReportParameter("id"id_txt.Text);
 
           rep_param[1] = new ReportParameter("name"name_txt.Text);
 
           rep_param[2] = new ReportParameter("age"age_txt.Text);

 
           this.reportViewer1.LocalReport.SetParameters(rep_param);
 
           this.reportViewer1.RefreshReport();
 
       



VB





PHP كود :
Private Sub to_btn_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles to_btn.Click

        rep_source 
= New ReportDataSource("mytable"mytable)
 
       Me.ReportViewer1.LocalReport.DataSources.Add(rep_source)

 
       ReDim rep_param(mytable.Columns.Count 1)
 
       rep_param(0) = New ReportParameter("id"id_txt.Text)
 
       rep_param(1) = New ReportParameter("name"name_txt.Text)
 
       rep_param(2) = New ReportParameter("age"age_txt.Text)

 
       Me.ReportViewer1.LocalReport.SetParameters(rep_param)
 
       Me.ReportViewer1.RefreshReport()

 
   End Sub 



الى هنا والحمد لله انتهينا من كتابة الاكواد ,بقي لنا ان نشرح الجزء الاهم وهي كيفية تمرير القيم كباراميترات.

في البداية يجب تحديد مصدر البيانات للتقرير ويمكن عمل ذلك باستخدام فئة الReportDataSource كما مبين في الكود اعلاه لل#C والVB
ومن ثم اضافة مصدر البيانات الى الReportViewer.

بعد تحديد مصدر البيانات نأتي الى الباراميترات:
نكون مصفوفة من الباراميترات حجمها يساوي عدد الحقول في الجدول اذا اردنا تمرير قيم كل الحقول الموجودة لسجل واحد فقط في الجدول وإلا نحددها بعدد الباراميترات التي أنشأناها في التقرير.
يكون تمرير القيم عن طريق فئة الReportParameter التي تستقبل اسم الباراميتر مع القيمة الممررة اليها.

ومن ثم نسند المصفوفة الى الreportviewer عن طريق دالة الSetParameters للفئة Local Report.


إلى هنا وبفضل الله نكون قد وصلنا الى نهاية الموضوع حيث تعلمنا كيفية تمرير القيم الى Microsoft Report باستخدام الباراميترات وباستخدام لغتي #C و VB , وفي النهاية لا تنسوني و والدي من صالح دعواتكم واسأل الله أن يوفقنا واياكم لمراضيهSmile

ملاحظة: المثال في المرفقات (C#, VB).




الملفات المرفقة
.rar   Report_Viewer_VB.rar (الحجم : 60.72 ك ب / التحميلات : 643)
.rar   ReportViewer_C#.rar (الحجم : 46.38 ك ب / التحميلات : 149)
الرد }}}


الردود في هذا الموضوع
كيفية تمرير البيانات الى Microsoft Report باستخدام الباراميترات - بواسطة Sajad - 19-03-13, 07:08 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] طباعة فاتورة باستخدام الكريستال ريبورت Abdoelftah 0 2,240 21-11-21, 11:25 PM
آخر رد: Abdoelftah
Question مشكلة طباعة تقرير باستخدام باراميتر abuzzouz 4 6,017 20-07-21, 03:46 PM
آخر رد: Lathe1
  [VB.NET] شرح طريقة الطباعة مباشرة بدون Report Viewer youcef3zino 2 5,736 18-12-20, 10:44 PM
آخر رد: a7med saba
  [مقال] كيفية التعامل مع XtraReport hoob computer 9 13,422 18-07-20, 10:39 AM
آخر رد: Ahmad shamkhi
  دورة التقارير في VB.net باستخدام Report Viewer أحمد النجار 8 15,575 13-04-20, 04:58 PM
آخر رد: بسام هزاع
  Report Viewer in VS 2017 Sajad 4 9,750 10-01-19, 03:43 AM
آخر رد: khalidalwdi
  تمرير صورة الى CrystalReport Sajad 20 15,280 02-12-18, 06:32 PM
آخر رد: المتألق9
  [Acces2007] رسالة خطأ في الإتصال الكريستال ريبورت مع قاعدة البيانات mohammed mekawi 1 3,427 11-10-18, 04:22 PM
آخر رد: حريف برمجة
  كيفية اضافة Header and footer and some images for PrintDocument sirnon 16 7,013 12-02-18, 11:50 PM
آخر رد: sirnon
  درس مبسط :تمرير القيم من برامجنا لتقارير الكريستال ريبورت m.sami.ak 9 11,696 06-02-18, 10:48 AM
آخر رد: KH_Alaswad

التنقل السريع :


يقوم بقرائة الموضوع: