ماهي ملفات XSD ؟
هي ملفات تساعدنا في استعراض التقارير او ارسال واستلام بيانات من والى Stored procedure الموجودة بداخل قاعدة البيانات بطريقة سهلة وواضحة .
اي التقرير في بيئة الفجوال ستوديو لا يمكن استخدامه عن طريق الاتصال المنفصل او عن طريق الكود بصورة عامة لأنه يحتاج الى ملف ذو امتداد .XSD يحدد له الحقول التي سيعرض بها البيانات التي نملئها من قاعدة البيانات . اي تكون العملية بشكل التالي
اي البيانات تأتي من قاعدة البيانات الى ملف XSD الذي نحن نحمله بالبيانات ومنه تعرض داخل التقرير هذه البيانات والتقرير يعرض داخل مستعرض تقارير Report Viewer او تستخدم مباشرة من بدون تقارير
لأدراج ملف .XSD من داخل المشروع نختار اضافة كائن جديد ومن قائمة Data نختار DataSet
شكل الملف بعد ادراجه داخل المشروع يعرض لنا في ToolBox اداوات جديدة نستخدمها في هذه الملفات وسوف نشرحها بلتفصيل
كما نعلم التقرير يحتاج لأعمدة تعرض فيه اي حقول لذالك ندرج DataTable لتكوين اعمدة المطلوبة للتقرير ونوع كل عمود يحدد من خصائصه وكذالك بقية الخصائص الخاص بكل عمود او حقل.
وكيف نملئى هذه الاعمدة بالبيانات ؟
نملئها عن طريق TableAdapter ايضا ندرجه في اسفل DataTable الذي كوناه لكي ننفذ عمليات على TableAdapter وهو يملئ الجدول DataTable بالبيانات .
وهذا Query الموجودة داخل TableAdapter نكونها عن طريق سحب Query من Toolbox وبعد سحب والقائه على TableAdapter سيعرض لنا الشاشة التالية
توجد به ثلاث خيارات
1. Use SQL statements هنا نحن نكتب جملة SQL ونحدد البيانات التي نريدها ان تعرض وكيف
2. Create new stored procedures هنا ننشئ بروسيجر جديدة ونضيفه في قاعدة البيانات
3. Use existing stored procedures هنا نستخدم مباشرة بروسيجر موجودة في قاعدة البيانات
في حال اخترنا الخيار الأول ستضهر لنا هذه الشاشة ونكتب به Sql التي نود ان تنفذ
في هذا SQL جعلنا يبحث عن اسم معين
توضيح محتويات الصفحة ....
Query Builder : هي لتنفيذ جملة Sql والتاكد من صحتها
Advanced Options : هي تحديد امكانية اضافة وحذف وتعديل مباشرة على الجدول اي يضيف Query الخاص بلحذف والتعديل مباشرة. وهذه الخاصية ل اتفعل اذا اذا كان احد حقول الجدول يحتوي على مفتاح رئيسي تستطيع اضافته
بعد اكمال العمل نضغط next ستضهر هذه الشاشة
يوجد به اسمين للبروسيجر او الفاكشن التي كتبناها وكيف سيتم استدعاها
1. Fill A DataTable هي اسم الدالة التي نريد استدعائها عن ملئى حقول الجدول DataTabel بالبيانات
2. Return a DataTabel هي اسم الدالة SelectMethod التي سنستدعيها في التقارير لتمرير البيانات لها
العلاقات بين الجداول Relation تستخدم لعمل علاقة بين اكثر من جدول لجلب بيانات من اكثر من جدول الى تقرير او الى المشروع للتعامل معها وهي عملية معروفة جدول رئيسي وثانوي ومفتاح رئيسي وثانوي يربط الجدولين
هناك طريقة مباشرة لتكوين Data table و TableAdapter مباشرة بدون تصميم حقل حقل وهو عن طريق الاتصال ببروسيجر موجود بقاعدة البيانات فيه كل مدخلات ومخرجات التقرير فقط نسحب TableAdapter وندرجه ونختار
Use existing stored procdures ونختار البروسيجر من قاعدة البيانات وهو تلقائيا سيكون لنا الجدول الخاص به بكل سهولة وكذالك Query الخاصة به
كيف نستدعي الدوال الموجودة داخل ملفات XSD من البرنامج ؟
لعمل نسخة من جدول معين نكون كائن جديد من Dataset.xsd وبعدها اسم الجدول المطلوب نكتب التالي
vb.net
رلالارVB.net Code
Dim dsCopy As New DataSet1.AdminsManageDataTable
C#.net
C# Code
DataSet1.AdminsManageDataTable dsCopy = new DataSet1.AdminsManageDataTable();
لتنفيد Query موجودة ضمن TableAdapter نكون كائن جديد من ذالك TableAdapter ونستدعي اي دالة موجودة ضمنه ونرسل لها الجدول المراد ملئه بالبيانات الذي كوناه قبل قليل والبرامترات الخاصة بالجدول
vb.net
VB.net Code
Dim TabelAdapb As New DataSet1TableAdapters.AdminsManageTableAdapter TabelAdapb.Fill(dsCopy, "h%")
C#.net
C# Code
DataSet1TableAdapters.AdminsManageTableAdapter TabelAdapb = new DataSet1TableAdapters.AdminsManageTableAdapter(); TabelAdapb.Fill(dsCopy, "h");
الأن لكي نعرض هذه البيانات داخل GridView1 ويكون الكود كامل
vb.net
VB.net Code
Dim dsCopy As New DataSet1.AdminsManageDataTable Dim TabelAdapb As New DataSet1TableAdapters.AdminsManageTableAdapter TabelAdapb.Fill(dsCopy, "h") GridView1.DataSource = dsCopy
C#.net
C# Code
DataSet1.AdminsManageDataTable dsCopy = new DataSet1.AdminsManageDataTable(); DataSet1TableAdapters.AdminsManageTableAdapter TabelAdapb = new DataSet1TableAdapters.AdminsManageTableAdapter(); TabelAdapb.Fill(dsCopy, "h");
وفي التقارير تستدعى بشكل التالي نرسل اسم الدالة والبرامترات هنا اتحدث عن ASP.net تقارير اما تقاير تطبيقات الوندوز يكون نفس الطريقة السابقة
vb.net
VB.net Code
ObjectDataSource1.SelectMethod = "GetData"
ObjectDataSource1.SelectParameters.Clear()
ObjectDataSource1.SelectParameters.Add("AdminFullName", DbType.String)
ObjectDataSource1.SelectParameters("AdminFullName").DefaultValue = "h"
Me.ReportViewer1.LocalReport.Refresh()
C#.net
C# Code
ObjectDataSource1.SelectMethod = "GetData";
ObjectDataSource1.SelectParameters.Clear();
ObjectDataSource1.SelectParameters.Add("AdminFullName", DbType.String);
ObjectDataSource1.SelectParameters("AdminFullName").DefaultValue = "h";
this.ReportViewer1.LocalReport.Refresh();
الان لنعود الى صفحة تسمية الدالة عند الاستدعاء
1. Fill a DataTable كان اسمها fill وهو ما فعلنا في استعائها كدالة في ملئ grid View
2. Return a DataTabel كان اسمها GetData واستدعينها في التقرير










