24-09-12, 11:09 PM
السلام وعليكم ورحمة الله وبركاته
======================
======================
اخوانى اعضاء المنتدى , اليوم سأتحدث معكم عن مشكلة لطالما عانيت منها سابقا
جميعنا فى بدابة تعامله مع تقارير ال Crystal Report واجه مشكلة فى انه عند تحويل قاعدة البيانات من مسارها تأتى اليك رسال من التقرير بان قاعدة البيانات غير موجود مسارها الصحيح
وكان معظم المبرمجين بصنع مسار للقاعدة عند جهاز العميل بنفس المسار الموجود عنده على الجهاز ( عيب عليك )
الحل طبعا هو ان تربط التقرير مع ال Dataset
اليك الطريقة
اولا : طبعا افتح مشروعك الجديد واضف اليه الادوات الاتية
أ - CrystalReportDecument وحين يأتى لك رسالة عند اضافته للفورم , اختر الاختيار Untyped
ب - crystalReportViewr
ج - واخيرا من قائمة project ثم Add new items اضف تقرير Crystalreport
ثانيا : عند اضافة تقرير الكريستال ريبورت تماشى مع الخطوات العادية التى تفعلها كل مرة لاختيار قاعدة البيانات
طبعا سوف تسأل , لما اربطه مع قاعدة البيانات طالما سيكون العمل على ال DataSet
الاجابة : حتى يقوم بصنع هيكل لجدول داخل التقرير بدلا من ان نرهق انفسنا فى كتابة الاكواد , يعنى هذه الاتصال بالقاعدة فقط لصنع هيكل
ان كنت لا تعرف كيفية توصيل التقرير بجدول داخل قاعدة بيانات , راجع بعض الدروس اولا عن التقرير
ثالثا :
مرحلة الكود ( كود صغير جدا )
[HTML]Imports System.Data.OleDb
Public Class Form1
Dim constr As String = "provider = microsoft.jet.oledb.4.0;data source =" & Application.StartupPath & "\mydata.mdb"
Dim con As New OleDbConnection(constr)
Dim sqlstr As String = "select * from table1"
Dim DataAdapter1 As New OleDbDataAdapter(sqlstr, con)
Dim dataset1 As New DataSet
Dim ReportPath As String = Application.StartupPath & "\CrystalReport2.rpt"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles My****.Load
DataAdapter1.Fill(dataset1, "table1")
report********1.Load(ReportPath)
report********1.SetDataSource(dataset1.Tables("table1"))
CrystalReportViewer1.ReportSource = report********1
End Sub
End Class [/HTML]
قم بعلم ولا تطلب به بدلا فالناس موتى وأهل العلم احياء
الامام على رضوان الله عليه