LinqToSQL اضافة حذف تعديل بحث - Sajad - 22-04-13
[b]بسم الله الرحمن الرحيم
وصلى الله على محمد وآله الطاهرين
الســلام عليــكم ورحمــة اللــه وبركــاته
سنقوم في هذا الموضوع ببناء مشروع يتعامل مع تقنية Linq مع قواعد بيانات SQL يؤدي العمليات الاساسية التي تحتاجها كل برنامج قاعدة بيانات من (اضافة ,حذف ,تعديل ,بحث ,طباعة تقرير (سنستخدم تقارير مايكروسوفت Report.rdlc) واستعراض السجل السابق واللاحق) لكي يكون مرجعا لكل من يريد تعلم هذه التقنية واستخدامها مع قواعد بيانات SQL.
بسم الله نبدأ
اولا : سنقوم بإنشاء قاعدة بيانات باسم std عن طريق برنامج الSQL Management Studio ومن ثم نقوم بإنشاء جدول باسم StdInfo
ونضيف اليه الحقول (ID, FName, DoB, Adress) ونضبط خصائص الحقول كما في الشكل الآتي:
مع جعل حقل الID مفتاح اساسي و ترقيم تلقائي من خاصية Identity column كما هو موضح في الصورة اعلاه.
ثانيا : نفتح مشروع جديد باسم Lint_to_SQL ونصمم الواجهة بالشكل الآتي:
ونقوم بضبط خصائص الادوات كما في الجدول الآتي:
ثالثا : من Project ثم Add New Item تظهر لنا الشكل الآتي:
نفعل كما في الصورة أي نختار LINQ to SQL Classes (هذا الClass وسيلة لربط قاعدة بيانات SQL بالبرنامج بتقنية الLINQ) ومن ثم نضغط على Add فتظهر لنا الشكل الآتي:
من الخصائص نغير الاسم الى Std_DBase
وبعد ذلك من الToolBox التي على اليسار نسحب أداة Class,لاحظ الشكل الآتي:
نغير اسم الClass (والتي يعادل جدول في قاعدة البيانات) الى StdInfo او أي اسم تختاره وفي حقل الSource نكتب اسم الجدول في قاعدة البيانات وهذا مهم جدا ,لاحظ الشكل اعلاه.
الان نضيف اربعة خصائص(Properties) (حقول) الى الClass كالآتي:
ونضبط خصائص الحقول كالآتي:
ملاحظة : هنا جعلت اسماء الحقول تتطابق مع اسماء الحقول في قاعدة البيانات لسهولة التعامل ,لكن تستطيع تغييرها كما تريدها انت.
اهم الملاحظات:
1- جعل خاصية الAuto Generated Value لحقل الID يساوي True لان الحقل الذي يقابله في قاعدة البيانات ترقيم تلقائي.
2- جعل خاصية الPrimary Key للID يساوي True.
3- أهم شيء هو تحديد الSource لكل الحقول ومعناه اسم الحقل في قاعدة البيانات.
4- تحديد الServer Data Type كما في الجدول في قاعدة البيانات (int, varchar, double , ………..)
5- تحديد الType للحقول التي أنشئناها في الClass بما يطابق نوع الحقول في الجدول في قاعدة البيانات.
رابعا : نضيف نموذج الى المشروع لعرض التقرير ونسميه Report Form ومن ثم نضيف اليه اداة Report Viewer بعد ذلك من Project ثم Add New Item نضيف تقرير فارغ الى المشروع ( لمعرفة المزيد عن تصميم التقارير راجع هذا الرابط : كيفية تمرير البيانات الى Microsoft Report عن طريق الباراميترات )
الان نضيف اربع باراميترات الى التقرير بأسماء (ID, Fname, Dob, Address) ,ايضا يمكنك مراجعة الرابط اعلاه لمعرفة المزيد.
ونصمم التقرير بهذا الشكل:
حيث(معلومات الطلبة والعناوين والخطوط الافقية في الPage header) والوقت والترقيم في الPage footer لكي تتكرر في كل الصفحات في حال كون التقرير يتكون اكثر من صفحة.
ونضيف الباراميترات التي انشأناها الى التقرير كما في الشكل اعلاه.
ملاحظة : يمكن اضافة الPage header and footer من شريط الTool bar Report.
ملاحظة : الPage Number والExecution Time تستطيع اضافتها من نافذة الReport Data من الBuilt-in-Fields.
الآن نأتي الى كتابة الاكواد ,وستكون بلغتي الC# والVB
اولا : نضيف مجالات الاسماء التالية:
C#
PHP كود :
using System.Data.SqlClient; using Microsoft.Reporting.WinForms; using System.IO; using System.Collections;
VB
PHP كود :
Imports System.Data.SqlClient Imports Microsoft.Reporting.WinForms Imports System.IO Imports System.Collections
ثانيا : المتغيرات العامة:
C#
PHP كود :
// نص الاتصال بقاعدة البيانات private string constr = @"Data Source=.\SQLEXPRESS;Initial Catalog=std;Integrated Security=True;Connect Timeout=30;User Instance=false"; //linqمن قاعدة البيانات التي تتعامل مع تقنية ال instanceانشاء private Std_DBase dbo; // لتضم بيانات الطلاب اثناء تحميلها من الجدول في قاعدة البيانات Studentsانشاء قائمة من نوع private List<Students> student; private int i , pos = 0 // موقع السجل (للتنقل بين السجلات) , start = 0 // بداية الصفحة من السجل الاول , end = 5; // نهاية الصفحة (هنا حددنا 5 سجلات فقط للصفحة اثاء عرض السجلات في ال DataGrudView) private ReportDataSource rep_source; // لتحديد مصدر البيانات للتقرير private ReportParameter[] rep_param; // مصفوفة من الباراميترات التي ستمرر الى التقرير
VB
PHP كود :
' نص الاتصال بقاعدة البيانات Private constr As String = "Data Source=.\SQLEXPRESS;Initial Catalog=std;Integrated Security=True;Connect Timeout=30;User Instance=false" 'linqمن قاعدة البيانات التي تتعامل مع تقنية ال instanceانشاء Private dbo As Std_DBase ' لتضم بيانات الطلاب اثناء تحميلها من الجدول في قاعدة البيانات Studentsانشاء قائمة من نوع Private student As List(Of Students)
Private i As Integer, pos As Integer = 0 ' موقع السجل (للتنقل بين السجلات) , start As Integer = 0 ' بداية الصفحة من السجل الاول , endd As Integer = 5 ' نهاية الصفحة (هنا حددنا 5 سجلات فقط للصفحة اثاء عرض السجلات في ال DataGrudView) Private rep_source As ReportDataSource ' لتحديد مصدر البيانات للتقرير Private rep_param As ReportParameter() ' مصفوفة من الباراميترات التي ستمرر الى التقرير
ثالثا : نضيف Class الى المشروع باسم Students لغرض تصفح المعلومات:
C#
PHP كود :
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Linq_to_Sql { public class Students { private int id; private string fname, address; private DateTime Dob;// (Date of Birth) تاريخ الولادة public int ID { set { id = value; } get { return id; } } public string Fname { set { fname = value; } get { return fname; } } public DateTime DoB { set { Dob = value; } get { return Dob; } } public string Address { set { address = value; } get { return address; } } }//Class End }//Namespace End
VB
PHP كود :
Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Text
Namespace Linq_to_Sql Public Class Students Private m_id As Integer Private m_fname As String, m_address As String Private m_Dob As DateTime ' (Date of Birth) تاريخ الولادة Public Property ID() As Integer Get Return m_id End Get Set m_id = value End Set End Property Public Property Fname() As String Get Return m_fname End Get Set m_fname = value End Set End Property Public Property DoB() As DateTime Get Return m_Dob End Get Set m_Dob = value End Set End Property Public Property Address() As String Get Return m_address End Get Set m_address = value End Set End Property End Class 'Class End End Namespace 'Namespace End
نحدد نص الاتصال لقاعدة البيانات في حدث الLoad للForm
C#
PHP كود :
private void Form1_Load(object sender, EventArgs e) { dbo = new Std_DBase(constr); //Linqتحديد نص الاتصال لقاعدة البيانات التي تتعامل مع تقنية }
VB
PHP كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) dbo = New Std_DBase(constr) 'Linqتحديد نص الاتصال لقاعدة البيانات التي تتعامل مع تقنية End Sub
اضافة البيانات:
C#
PHP كود :
private void insert_btn_Click(object sender, EventArgs e) { //Insert Data StdInfo std1 = new StdInfo(); //DataClasses1.dbml الذي اضفناه الى نموذج ال Classمن ال Instanceانشاء // اسناد المعلومات الى خصائص الفئة ليتم حفظها في قاعدة البيانات std1.FName = name_txt.Text; std1.DoB = DateTime.Parse (dob_txt.Text); std1.Address = addr_txt.Text; dbo.StdInfos.InsertOnSubmit(std1); // اضافة المعلومات الى الجدول dbo.SubmitChanges(); // تأكيد التغييرات على الجدول Enabled_btns(false); // دالة لتفعيل او الغاء الاضافة سنأتي لها لاحقا pos = dbo.StdInfos.Count() - 1; // تحديد اخر موقع لاخر سجل مضاف الى قاعدة البيانات load_btn_Click(null, null); // زر عرض المعلومات في الحقول التي على النموذج }
VB
PHP كود :
Private Sub insert_btn_Click(sender As Object, e As EventArgs)
'Insert Data
Dim std1 As New StdInfo() 'DataClasses1.dbml الذي اضفناه الى نموذج ال Classمن ال Instanceانشاء ' اسناد المعلومات الى خصائص الفئة ليتم حفظها في قاعدة البيانات std1.FName = name_txt.Text std1.DoB = DateTime.Parse(dob_txt.Text) std1.Address = addr_txt.Text
dbo.StdInfos.InsertOnSubmit(std1) ' اضافة المعلومات الى الجدول dbo.SubmitChanges() ' تأكيد التغييرات على الجدول Enabled_btns(False) ' دالة لتفعيل او الغاء الاضافة سنأتي لها لاحقا pos = dbo.StdInfos.Count() - 1 ' تحديد اخر موقع لاخر سجل مضاف الى قاعدة البيانات load_btn_Click(Nothing, Nothing) ' زر عرض المعلومات في الحقول التي على النموذج End Sub
حذف البيانات:
C#
PHP كود :
private void delete_btn_Click(object sender, EventArgs e) { //Delete Data if (dbo.StdInfos.Count() != 0) { // لحذف السجل حسب التسلسل Linqعبارة StdInfo del = (from StdInfo s in dbo.StdInfos where s.ID == int.Parse(id_txt.Text) select s) .Single(); // دالة تحدد فقط سجل واحد من المطابقة // or //std s = dclass.GetTable<std>().Where(c => (c.FName == name)).SingleOrDefault<std>(); dbo.StdInfos.DeleteOnSubmit(del); // حذف السجل المحدد dbo.SubmitChanges(); // تأكيد التغييرات على الجدول pos = dbo.StdInfos.Count() - 1; // تحديد اخر موقع لأخر سجل مضاف الى قاعدة البيانات // هذا الشرط لتجنب وصول متغير الموقع الى السالب عند حذف اخر سجل من الجدول if (pos < 0) pos = 0; load_btn_Click(null, null); } }
VB
PHP كود :
Private Sub delete_btn_Click(sender As Object, e As EventArgs)
'Delete Data
If dbo.StdInfos.Count() <> 0 Then ' لحذف السجل حسب التسلسل Linqعبارة Dim del As StdInfo = (From s In dbo.StdInfos Where s.ID = Integer.Parse(id_txt.Text)s) .[Single]() ' دالة تحدد فقط سجل واحد من المطابقة ' or 'std s = dclass.GetTable<std>().Where(c => (c.FName == name)).SingleOrDefault<std>(); dbo.StdInfos.DeleteOnSubmit(del) ' حذف السجل المحدد dbo.SubmitChanges() ' تأكيد التغييرات على الجدول pos = dbo.StdInfos.Count() - 1 ' تحديد اخر موقع لأخر سجل مضاف الى قاعدة البيانات ' هذا الشرط لتجنب وصول متغير الموقع الى السالب عند حذف اخر سجل من الجدول If pos < 0 Then pos = 0 End If load_btn_Click(Nothing, Nothing) End If End Sub
للموضوع تكملة ان شاءالله
[/b]
LinqToSQL اضافة حذف تعديل بحث - Sajad - 22-04-13
السلام عليكم
تعديل البيانات:
C#
PHP كود :
private void update_btn_Click(object sender, EventArgs e) { //Update Data // التعديل ايضا حسب التسلسل int id = int.Parse(id_txt.Text);
// Linqتعبير اخر لل StdInfo s = dbo.GetTable<StdInfo>().Where(c => (c.ID == id)).Single(); s.FName = name_txt.Text; s.DoB = DateTime.Parse(dob_txt.Text); s.Address = addr_txt.Text; dbo.SubmitChanges(); // تأكيد التغييرات على الجدول load_btn_Click(null, null); }
VB
PHP كود :
Private Sub update_btn_Click(sender As Object, e As EventArgs) 'Update Data
' التعديل ايضا حسب التسلسل Dim id As Integer = Integer.Parse(id_txt.Text)
' Linqتعبير اخر لل Dim s As StdInfo = dbo.GetTable(Of StdInfo)().Where(Function(c) (c.ID = id)).[Single]() s.FName = name_txt.Text s.DoB = DateTime.Parse(dob_txt.Text) s.Address = addr_txt.Text
dbo.SubmitChanges() ' تأكيد التغييرات على الجدول load_btn_Click(Nothing, Nothing) End Sub
تحميل البيانات من الجدول في قاعدة البيانات:
اولا نضيف الدالة التالية:
C#
PHP كود :
private void Fill(int pos) { Enabled_btns(true); insert_btn.Enabled = false; id_txt.Text = student[pos].ID.ToString(); name_txt.Text = student[pos].Fname; dob_txt.Text = student[pos].DoB.ToString(); addr_txt.Text = student[pos].Address; }
VB
PHP كود :
Private Sub Fill(pos As Integer) Enabled_btns(True) insert_btn.Enabled = False id_txt.Text = student(pos).ID.ToString() name_txt.Text = student(pos).Fname dob_txt.Text = student(pos).DoB.ToString() addr_txt.Text = student(pos).Address End Sub
ثانيا
C#
PHP كود :
private void load_btn_Click(object sender, EventArgs e) { //Load if (dbo.StdInfos.Count() > 0) { // اختيار جميع السجلات من الجدول في قاعدة البيانات var ss = from StdInfo s in dbo.StdInfos select s; student = new List<Students>(); foreach (var std in ss) { // Studentsاضافة جميع السجلات الى القائمة التي هي من نوع الفئة student.Add(new Students { ID = std.ID, Fname = std.FName, DoB = std.DoB, Address=std.Address }); // للتكملة التلقائية للكلمات لحقل البحث srch_txt.AutoCompleteCustomSource.Add(std.FName); } Fill(pos); } else { MessageBox.Show("There is no record in table"); } }
VB
PHP كود :
Private Sub load_btn_Click(sender As Object, e As EventArgs)
'Load If dbo.StdInfos.Count() > 0 Then ' اختيار جميع السجلات من الجدول في قاعدة البيانات Dim ss = From s In dbo.StdInfoss
student = New List(Of Students)()
For Each std As var In ss ' Studentsاضافة جميع السجلات الى القائمة التي هي من نوع الفئة student.Add(New Students() With { _ Key .ID = std.ID, _ Key .Fname = std.FName, _ Key .DoB = std.DoB, _ Key .Address = std.Address _ })
' للتكملة التلقائية للكلمات لحقل البحث srch_txt.AutoCompleteCustomSource.Add(std.FName) Next
Fill(pos) Else MessageBox.Show("There is no record in table") End If End Sub
عرض اول سجل
C#
PHP كود :
private void first_btn_Click(object sender, EventArgs e) { Fill(pos = 0); }
VB
PHP كود :
Private Sub first_btn_Click(sender As Object, e As EventArgs) Fill(InlineAssignHelper(pos, 0)) End Sub
عرض اخر سجل
C#
PHP كود :
private void last_btn_Click(object sender, EventArgs e) { Fill(pos = student.Count - 1); }
VB
PHP كود :
Private Sub last_btn_Click(sender As Object, e As EventArgs) Fill(InlineAssignHelper(pos, student.Count - 1)) End Sub
عرض السجل التالي
C#
PHP كود :
private void next_btn_Click(object sender, EventArgs e) { if (pos < student.Count - 1) { pos++; Fill(pos); } }
VB
PHP كود :
Private Sub next_btn_Click(sender As Object, e As EventArgs) If pos < student.Count - 1 Then pos += 1 Fill(pos) End If End Sub
عرض السجل السابق
C#
PHP كود :
private void prev_btn_Click(object sender, EventArgs e) { if (pos > 0) { pos--; Fill(pos); } }
VB
PHP كود :
Private Sub prev_btn_Click(sender As Object, e As EventArgs) If pos > 0 Then pos -= 1 Fill(pos) End If End Sub
زر البحث
C#
PHP كود :
private void dosrch_btn_Click(object sender, EventArgs e) { //Search Data load_btn_Click(null, null); for (i = 0; i < student.Count; i++) { if (srch_txt.Text == student[i].Fname) { id_txt.Text = student[i].ID.ToString(); name_txt.Text = student[i].Fname; dob_txt.Text = student[i].DoB.ToString(); pos = i; } } //or /*std stud = ( from std s in dclass.GetTable<std>() where s.FName == src_txt.Text select s ).SingleOrDefault<std>(); id_txt.Text = stud.ID.ToString(); name_txt.Text = stud.FName; grade_txt.Text = stud.Grade.ToString();*/ }
VB
PHP كود :
Private Sub dosrch_btn_Click(sender As Object, e As EventArgs)
'Search Data
load_btn_Click(Nothing, Nothing)
For i = 0 To student.Count - 1 If srch_txt.Text = student(i).Fname Then id_txt.Text = student(i).ID.ToString() name_txt.Text = student(i).Fname dob_txt.Text = student(i).DoB.ToString() pos = i End If Next
'or 'std stud = ' ( ' from std s in dclass.GetTable<std>() ' where s.FName == src_txt.Text ' select s ' ).SingleOrDefault<std>(); ' ' id_txt.Text = stud.ID.ToString(); ' name_txt.Text = stud.FName; ' grade_txt.Text = stud.Grade.ToString();
End Sub
تفعيل اضافة سجل جديد
C#
PHP كود :
private void new_btn_Click(object sender, EventArgs e) { Enabled_btns(true); id_txt.Text = name_txt.Text = dob_txt.Text = addr_txt.Text = ""; }
VB
PHP كود :
Private Sub new_btn_Click(sender As Object, e As EventArgs) Enabled_btns(True) id_txt.Text = InlineAssignHelper(name_txt.Text, InlineAssignHelper(dob_txt.Text, InlineAssignHelper(addr_txt.Text, ""))) End Sub
دالة التفعيل
C#
PHP كود :
private void Enabled_btns(bool b) { name_txt.Enabled = dob_txt.Enabled = insert_btn.Enabled = addr_txt.Enabled = b; }
VB
PHP كود :
Private Sub Enabled_btns(b As Boolean) name_txt.Enabled = InlineAssignHelper(dob_txt.Enabled, InlineAssignHelper(insert_btn.Enabled, InlineAssignHelper(addr_txt.Enabled, b))) End Sub
الغاء التفعيل
C#
PHP كود :
private void cancel_btn_Click(object sender, EventArgs e) { Enabled_btns(false); }
VB
PHP كود :
Private Sub cancel_btn_Click(sender As Object, e As EventArgs) Enabled_btns(False) End Sub
عرض السجلات في الDataGridView
C#
PHP كود :
private void show_btn_Click(object sender, EventArgs e) { DGV.DataSource = ""; if (dbo.StdInfos.Count() > 0) { DGV.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; if (dbo.StdInfos.Count() <= 5) end = dbo.StdInfos.Count(); DGV.DataSource = student.GetRange(start, end); DGV.Columns[0].HeaderText = "التسلسل"; DGV.Columns[1].HeaderText = "الاسم الكامل"; DGV.Columns[2].HeaderText = "تاريخ الولادة"; DGV.Columns[3].HeaderText = "العنوان"; } }
VB
PHP كود :
Private Sub show_btn_Click(sender As Object, e As EventArgs) DGV.DataSource = "" If dbo.StdInfos.Count() > 0 Then DGV.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells If dbo.StdInfos.Count() <= 5 Then end1 = dbo.StdInfos.Count() End If DGV.DataSource = student.GetRange(start, endd) DGV.Columns(0).HeaderText = "التسلسل" DGV.Columns(1).HeaderText = "الاسم الكامل" DGV.Columns(2).HeaderText = "تاريخ الولادة" DGV.Columns(3).HeaderText = "العنوان" End If End Sub
طباعة السجل الحالي
C#
PHP كود :
private void current_btn_Click(object sender, EventArgs e) { ReportForm repf = new ReportForm(); rep_source = new ReportDataSource("student", student); repf.reportViewer1.LocalReport.DataSources.Add(rep_source); rep_param = new ReportParameter[4]; rep_param[0] = new ReportParameter("ID", id_txt.Text); rep_param[1] = new ReportParameter("Fname", name_txt.Text); rep_param[2] = new ReportParameter("Dob", DateTime.Parse(dob_txt.Text).ToShortDateString()); rep_param[3] = new ReportParameter("Address", addr_txt.Text); repf.reportViewer1.LocalReport.SetParameters(rep_param); repf.reportViewer1.RefreshReport(); repf.ShowDialog(); }
VB
PHP كود :
Private Sub current_btn_Click(sender As Object, e As EventArgs) Dim repf As New ReportForm()
rep_source = New ReportDataSource("student", student) repf.reportViewer1.LocalReport.DataSources.Add(rep_source)
rep_param = New ReportParameter(3) {} rep_param(0) = New ReportParameter("ID", id_txt.Text) rep_param(1) = New ReportParameter("Fname", name_txt.Text) rep_param(2) = New ReportParameter("Dob", DateTime.Parse(dob_txt.Text).ToShortDateString()) rep_param(3) = New ReportParameter("Address", addr_txt.Text)
repf.reportViewer1.LocalReport.SetParameters(rep_param) repf.reportViewer1.RefreshReport()
repf.ShowDialog() End Sub
طباعة السجلات المحددة من الDataGridView عن طريق الفأرة
C#
PHP كود :
private void selected_btn_Click(object sender, EventArgs e) { ReportForm repf = new ReportForm(); DataGridViewSelectedRowCollection rc = DGV.SelectedRows; rep_source = new ReportDataSource("student", student); repf.reportViewer1.LocalReport.DataSources.Add(rep_source); int i = 0; string s1 = "", s2 = "", s3 = "", s4 = ""; for (i = 0; i < rc.Count; i++) { s1 += rc[i].Cells["ID"].Value.ToString() + Environment.NewLine + Environment.NewLine; s2 += rc[i].Cells["FName"].Value.ToString() + Environment.NewLine + Environment.NewLine; s3 += DateTime.Parse( rc[i].Cells["DoB"].Value.ToString()).ToShortDateString() + Environment.NewLine + Environment.NewLine; s4 += rc[i].Cells["Address"].Value.ToString() + Environment.NewLine + Environment.NewLine; } rep_param = new ReportParameter[4]; rep_param[0] = new ReportParameter("ID", s1); rep_param[1] = new ReportParameter("Fname", s2); rep_param[2] = new ReportParameter("Dob", s3); rep_param[3] = new ReportParameter("Address", s4); repf.reportViewer1.LocalReport.SetParameters(rep_param); repf.reportViewer1.RefreshReport(); repf.ShowDialog(); }
VB
PHP كود :
Private Sub selected_btn_Click(sender As Object, e As EventArgs) Dim repf As New ReportForm()
Dim rc As DataGridViewSelectedRowCollection = DGV.SelectedRows
rep_source = New ReportDataSource("student", student) repf.reportViewer1.LocalReport.DataSources.Add(rep_source)
Dim i As Integer = 0 Dim s1 As String = "", s2 As String = "", s3 As String = "", s4 As String = ""
For i = 0 To rc.Count - 1 s1 += rc(i).Cells("ID").Value.ToString() & Environment.NewLine & Environment.NewLine s2 += rc(i).Cells("FName").Value.ToString() & Environment.NewLine & Environment.NewLine s3 += DateTime.Parse(rc(i).Cells("DoB").Value.ToString()).ToShortDateString() & Environment.NewLine & Environment.NewLine s4 += rc(i).Cells("Address").Value.ToString() & Environment.NewLine & Environment.NewLine Next
rep_param = New ReportParameter(3) {} rep_param(0) = New ReportParameter("ID", s1) rep_param(1) = New ReportParameter("Fname", s2) rep_param(2) = New ReportParameter("Dob", s3) rep_param(3) = New ReportParameter("Address", s4)
repf.reportViewer1.LocalReport.SetParameters(rep_param) repf.reportViewer1.RefreshReport()
repf.ShowDialog() End Sub
طباعة كافة السجلات
C#
PHP كود :
private void all_btn_Click(object sender, EventArgs e) { ReportForm repf = new ReportForm(); rep_source = new ReportDataSource("student", student); repf.reportViewer1.LocalReport.DataSources.Add(rep_source); int i = 0; string s1 = "", s2 = "", s3 = "", s4 = ""; for (i = 0; i < student.Count; i++) { s1 += student[i].ID.ToString() + Environment.NewLine + Environment.NewLine; s2 += student[i].Fname.ToString() + Environment.NewLine + Environment.NewLine; s3 += DateTime.Parse(student[i].DoB.ToString()).ToShortDateString() + Environment.NewLine + Environment.NewLine; s4 += student[i].Address.ToString() + Environment.NewLine + Environment.NewLine; } rep_param = new ReportParameter[4]; rep_param[0] = new ReportParameter("ID", s1); rep_param[1] = new ReportParameter("Fname", s2); rep_param[2] = new ReportParameter("Dob", s3); rep_param[3] = new ReportParameter("Address", s4); repf.reportViewer1.PageCountMode = PageCountMode.Actual; repf.reportViewer1.LocalReport.SetParameters(rep_param); repf.reportViewer1.RefreshReport(); //Showing the report form repf.ShowDialog(); }
VB
PHP كود :
Private Sub all_btn_Click(sender As Object, e As EventArgs) Dim repf As New ReportForm()
rep_source = New ReportDataSource("student", student) repf.reportViewer1.LocalReport.DataSources.Add(rep_source)
Dim i As Integer = 0 Dim s1 As String = "", s2 As String = "", s3 As String = "", s4 As String = ""
For i = 0 To student.Count - 1 s1 += student(i).ID.ToString() & Environment.NewLine & Environment.NewLine s2 += student(i).Fname.ToString() & Environment.NewLine & Environment.NewLine s3 += DateTime.Parse(student(i).DoB.ToString()).ToShortDateString() & Environment.NewLine & Environment.NewLine s4 += student(i).Address.ToString() & Environment.NewLine & Environment.NewLine Next
rep_param = New ReportParameter(3) {} rep_param(0) = New ReportParameter("ID", s1) rep_param(1) = New ReportParameter("Fname", s2) rep_param(2) = New ReportParameter("Dob", s3) rep_param(3) = New ReportParameter("Address", s4)
repf.reportViewer1.PageCountMode = PageCountMode.Actual repf.reportViewer1.LocalReport.SetParameters(rep_param) repf.reportViewer1.RefreshReport() 'Showing the report form repf.ShowDialog() End Sub
عرض الصفحة التالية في الDataGridView (5 سجلات في كل صفحة)
C#
PHP كود :
private void nextpage_btn_Click(object sender, EventArgs e) { if (start < student.Count - 5) { start += end; if (start + 5 > student.Count) end = student.Count - start; DGV.DataSource = student.GetRange(start, end); } }
VB
PHP كود :
Private Sub nextpage_btn_Click(sender As Object, e As EventArgs) If start < student.Count - 5 Then start += endd If start + 5 > student.Count Then endd = student.Count - start End If DGV.DataSource = student.GetRange(start, endd) End If End Sub
عرض الصفحة السابقة في الDataGridView
C#
PHP كود :
private void prevpage_btn_Click(object sender, EventArgs e) { if (start > 0) { if (end < 5) end = 5; start -= end; DGV.DataSource = student.GetRange(start, end); } }
VB
PHP كود :
Private Sub prevpage_btn_Click(sender As Object, e As EventArgs) If start > 0 Then If endd < 5 Then endd = 5 End If start -= endd DGV.DataSource = student.GetRange(start, endd) End If End Sub
PHP كود :
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, value As T) As T target = value Return value End Function
كما تلاحظون استخدام دالة الGetRange للList حيث نحدد البداية و النهاية (الصفحة تبدأ من اول سجل الى خامس سجل أي عرض 5 سجلات في كل صفحة)
[b]المثال في المرفقات بلغة C# بدون قاعدة بيانات
هذا والحمد لله الذي وفقنا لإتمام هذا الموضوع اسأل الله ان يوفقنا وإياكم لمراضيه ولا تنسونا من صالح دعواتكم
وصلى الله على محمد وآله الطاهرين
[/b]
LinqToSQL اضافة حذف تعديل بحث - ربيع - 22-04-13
الله يعطيك العافيه
LinqToSQL اضافة حذف تعديل بحث - Sajad - 23-04-13
الله يعافيك
شكرا على المرور
LinqToSQL اضافة حذف تعديل بحث - shaker.soft - 25-05-13
Thanks . . . . . . .
LinqToSQL اضافة حذف تعديل بحث - مبرمج أوتار - 25-06-13
بارك الله فيك شرح مميز
LinqToSQL اضافة حذف تعديل بحث - Sajad - 25-06-13
السلام عليكم
وفيك بارك الله انت المميز ومبروك عالترقية
LinqToSQL اضافة حذف تعديل بحث - Sajad - 31-07-13
السلام عليكم ورحمة الله وبركاته
بحمد الله تعالى تم الانتهاء من عمل كتاب خاص بهذا الموضوع مع اضافات كثيرة توضح الكثير عن هذه التقنية بلغة #c.
فارجوا من الاخوان الاعضاء الاطلاع على الكتاب واخباري بالاخطاء سواء الاملائية او النحوية او من ناحية الامثلة والتعاريف.
الكتاب في المرفقات
LinqToSQL اضافة حذف تعديل بحث - Abu Ehab - 31-07-13
سجاد : بارك الله فيك .
حاول تشوف المثال اللى انا نزلته عن LINQ N_Tire
LinqToSQL اضافة حذف تعديل بحث - Sajad - 31-07-13
وفيك بارك الله اخي الغالي
شايف المثال وتلسم ايدك عمل رائع والحمد لله اخيرا اتقنت العمل بالطبقات وكله بجهودك وتشجيعك لنا
لهذا عملت مثال Linq to SQL NTier مع الاجراءات المخزنة بلغة #C
وان شاءالله قريب العيد سأعمل موضوع واشرح المثال
شكرا على المرور
|