إخواني الكرام أرجو منكم مساعدتي في عمل تقرير كريستال ريبورت باستخدام طريقة DataSet
باستخدام vb.net و Sql2008
بصراحة بحثت وفيه أمثلة كتير موجوده بس مش ظابط الموضوع معايا
مع شرح بالخطوات لطريقة عمله ولكم جزيل الشكر
إخواني الكرام أرجو منكم مساعدتي في عمل تقرير كريستال ريبورت باستخدام طريقة DataSet
باستخدام vb.net و Sql2008
بصراحة بحثت وفيه أمثلة كتير موجوده بس مش ظابط الموضوع معايا
مع شرح بالخطوات لطريقة عمله ولكم جزيل الشكر
تم تعديل هذه المشاركة بواسطة ابو رفيق في 14 أبريل 2013 في 08:44
:) :) :) شكرا لكل من علمني حرفا :) :) :)
أخي الفاضل أبو رفيق
أتمني ان تساعدك هذه المشاركة في الوصول الي المطلوب
طباعة معلومات على شكل بطاقة دفعة واحدة


أخي محمد بارك الله فيك
جاري دراسة المشاركة وتطبيقها وإعلامك بما وصلت إليه
:) :) :) شكرا لكل من علمني حرفا :) :) :)
السلام عليكم ورحمة الله
طريقتي في ذلك كالتالي:
1. أضف ملف Module.vb إلى المشروع وسمه functions.vb، واكتب به الكود التالي:
Imports System.Data.OleDb
Module functions
Public Con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\dbName.mdb")
End Module
حيث dbName هو اسم قاعدة البيانات.
2. إذا كنت صممت ملف التقرير خارج فجول بيسك (مثلي) فقم بإضافته إلى المشروع عن طريق فتح القائمة Project ثم Add Existing Item، ثم اختر ملف التقرير من نافذة الحوار التي ستظهر لك.
3. الآن اذهب إلى الـForm الذي تود عرض التقرير فيه. وضع عليه CrystalReportViewer، وسمه CryReport مثلاً.
4. اكتب الكود التالي في بداية ملف برمجة الفورم:
Imports CrystalDecisions.Shared Imports CrystalDecisions.Shared.OpenReportMethod Imports CrystalDecisions.CrystalReports.Engine Imports System.Data.OleDb
ثم عرّف متغيراً صحيحاً يمثل رقم السجل الذي تود عرضه في التقرير وكما يلي:
Public RecID As Integer
بعد ذلك، اكتب الكود التالي في حدث التحميل Load للـForm:
Dim rpt As New ReportFileName
يعني بنفس اسم ملف التقرير الذي أضناه للمشروع في البند 2
Dim EmpSql As String = "select * from TABLENAME where ID=" & RecID & ""
Dim EmpAdapter As New OleDbDataAdapter(EmpSql, Con)
Dim Empdataset As New DataSet
If Con.State = ConnectionState.Closed Then
يعني الاتصال غير مفتوح
Con.Open()
EmpAdapter.Fill(Empdataset, "LoadAndDisplay")
If Empdataset.Tables("LoadAndDisplay").Rows.Count > 0 Then
rpt.SetDataSource(Empdataset)
CryReport.ReportSource = rpt
CryReport.Refresh()
Con.Close()
Else
Con.Close()
Empdataset.Reset()
Me.Close()
End If
Else
يعني الاتصال مفتوح مسبقاً
EmpAdapter.Fill(Empdataset, "LoadAndDisplay")
If Empdataset.Tables("LoadAndDisplay").Rows.Count > 0 Then
rpt.SetDataSource(Empdataset)
CryReport.ReportSource = rpt
CryReport.Refresh()
Con.Close()
Else
Con.Close()
Empdataset.Reset()
Me.Close()
End If
End If
Empdataset.Reset()
ملاحظة:
سيتم عرض التقرير بعد أن ترسل قيمة رقم السجل من Form سابق.
أرجو أن تجرب الطريقة، وأرجو من الخبراء التصحيح في حال وجود خطأ.
لكم تحية.
تم تعديل هذه المشاركة بواسطة أبوبكر بن سويدان في 22 مايو 2013 في 10:21
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…