تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[شرح] اتصال بقاعدة بيانات اكسيس , اضافة بيان , تعديل بيان , حذف بيان , عرض البيانات .
#1
السلام عليكم و رحمة الله و بركاته

مرحبا بكم في اولي مواضيعي في هذا المنتدي المتميز
جعله الله العون و السند لكل طالب علم

في هذا الموضوع سوف نتعلم سويا و من الالف الي الياء كلا من :
--------------------------------------
كيفية الاتصال بقاعدة بيانات اكسيس
اضافة بيان الي قاعدة البيانات
عرض البيانات من قاعدة البيانات
حذف بيان معين
تعديل علي بيان حالي

ارجو التثبيت لكي يكون مرجع يسهل علي الكثير
و سوف ابدأ شرح كل نقطة شرح مفصل و وافي انشاء الله

و نبدأ بكود الأتصال :
اولا : ان قاعدة البيانات هي مخزن كبير يتسع لكل ملفات برنامجكك
اعتبرها الارشيف
و كل ما كان الارشيف بتاعك منظم كل ما زاد الاستفادة منه
و سهولة ادخال و استخراج البيانات منه
لذلك انصح قبل انشاء اي قاعدة بيانات استخدام ورقة و قلم
لتحديد المطلوب و المراد بالظبط قبل تنفيذه لكي تري الصورة كاملة قبل البدء
اسف للاطاله و لكن الشرح التفصيلي افضل

شخصيا عند اضافة قاعد بيانات لبرنامجي افضل ربطها برمجيا
اي عن طريق الاكواد
و اختصارا للوقت احب انها تكون في مديول  لكي استدعيها بسهولة في اي وقت
و كبدايه سوف انشأ مشروع جديد و اضيف مديول للمشروع و ليكن
Module1
و سوف اقوم بتعريف المتغيرات الثابته معي لكي لا اعيد كتابتها كل مرة

كود :
Public cnn As New OleDb.OleDbConnection
Public cmd As New OleDb.OleDbCommand
Public dbpass As String = "data base password"

و بعد ذلك سوف اقوم بأضافة كود الأتصال

كود :
Public Sub dataconnection()
       If cnn.State = ConnectionState.Open Then ' اذا كان الاتصال مفتوح اغلقه
           cnn.Close()
       End If
       cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\data.mdb;Jet OLEDB:Database Password=" & dbpass
       If Not cnn.State = ConnectionState.Open Then
           'افتح الاتصال
           cnn.Open()
       End If
   End Sub

الان كل ما علي فعله هوا
عند الاتصال بقاعدة البيانات من اي فورم فرعي
فقط كتابة
dataconnection
و سوف يتم استدعاء كود الاتصال
اذا الكود الكامل للمديول

كود :
Module Module1
Public cnn As New OleDb.OleDbConnection
   Public cmd As New OleDb.OleDbCommand
Public dbpass As String = "data base password"
Public Sub dataconnection()
       If cnn.State = ConnectionState.Open Then ' اذا كان الاتصال مفتوح اغلقه
           cnn.Close()
       End If
       cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\data.mdb;Jet OLEDB:Database Password=" & dbpass
       If Not cnn.State = ConnectionState.Open Then
           'افتح الاتصال
           cnn.Open()
       End If
   End Sub
End Module




ملحوظة اذا كانت قاعدة البيانات غير محمية بكلمة سوف يكون الكود كالتالي

كود :
Module Module1
Public cnn As New OleDb.OleDbConnection
   Public cmd As New OleDb.OleDbCommand
Public dbpass As String = ""
Public Sub dataconnection()
       If cnn.State = ConnectionState.Open Then ' اذا كان الاتصال مفتوح اغلقه
           cnn.Close()
       End If
       cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\data.mdb;Jet OLEDB:Database Password=" & dbpass
       If Not cnn.State = ConnectionState.Open Then
           'افتح الاتصال
           cnn.Open()
       End If
   End Sub
End Module

و الان تمت بحمد الله اول نقطة الي الباقي
----------------------------------------------------------

اضافة بيان لقاعدة البيانات

الان لنقوم بأضافة جدول جديد في قاعدة البيانات وليكن emp
و سوف يحتوي علي بيانات الموظفين مثل الاسم و العنوان و رقم الهاتف
لنسمي اول عمود ب ID  و الداتا طيب autonumber
EmpName  و الداتا طيب text
EmpAdd  وهذا ايضا text
EmpNum  وكذلك هذا text

اما فائدة العمود الاول فهو المسلسل الخاص بكل موظف لضمان عدم حدوث خطأ
اثناء وجود تشابه في الاسم مثلا و كذله له استخدامات اخري سوف تظهر مع متابعتك للموضوع

الان سوف نضيف فورم جديد
بداخله 3 تكست بوكس
الاول للاسم و الثاني للعنوان و الثالث لرقم الهاتف
و زر واحد و هو حفظ


و سوف نقوم بكتابة الكود التالي في زر الحفظ

كود :
dataconnection()
cmd.Connection = cnn
               cmd.CommandText = "INSERT INTO [emp] " & _
                          "([EmpName],[EmpAss],[EmpNum]) VALUES" & _
                    "('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "')"
               cmd.ExecuteNonQuery()
               cnn.Close()




و بهاذا نكون اكملنا النقطة الثانية بحمد الله
-----------------------------------------
اما بالنسبة لعرض البيانات من قاعدة البيانات
فسوف اقوم بأستخدام Data grid view
و سوف استخدمها لعرض البيانات فقط
و لكن يمكن استخدامها لحذف و تعديل و اضافة بيان
ولكن لن تكون مفيدة في حالة العماليات الحسابية مثلا
او اذا اردت من مستخدم البرنامج ادخال رقم تليفون مكون من 11 رقم مثلا
لذلك سنكتفي بعرض البيانات فيها فقط
و الان سوف اقوم بأضافة datagridview1 للمشروع
و سوف اقوم بتغير خصائصها كالشكل التالي

و بعد ذلك نذهب الي الاكواد
سوف انشأ صب جديد
و فائدة انشاء صب جديد هو الاستدعاء
اي اذا كنت تريد عمل ادخال البيانات و عرضها في فورم واحد
كل ما علليك فعله هوا كتابة اسم الصب وليكن loaddata في نهاية كود زرار الحفظ
حتي اذا ما قمت باضافة بيان جديد يظهر تلقائيا في الداتا غريد
و الان اليكم كود الصب

كود :
Private Sub loaddata()
dataconnection()
       Dim da As New OleDb.OleDbDataAdapter("SELECT * From data ORDER BY ID", cnn)
       Dim dt As New DataTable
       da.Fill(dt)
       Me.DataGridView1.DataSource = dt
End sub

و كما تعلمنا قمت الاول بأستدعاء الاتصال بقاعدة البيانات
ثم بعد ذلك كتبت جملة الاستدعاء للبيانات
و سوف اقوم بشرحها في موضوع مفصل انشاء الله اخر بعد الأنتهاء من الموضوع
بعد ذلك سوف اقوم استدعاء حدث عرض البيانات في حدث فتح الفورم ليكون كوده كالتالي

كود :
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       loaddata()
   End Sub

ويكون اجمالي كود الفورم هوا

كود :
Public Class Form1

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       dataconnection()
       cmd.Connection = cnn
       cmd.CommandText = "INSERT INTO [emp] " & _
                  "([EmpName],[EmpAss],[EmpNum]) VALUES" & _
            "('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "')"
       cmd.ExecuteNonQuery()
       cnn.Close()
       loaddata()
   End Sub

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       loaddata()
   End Sub
   Private Sub loaddata()
       dataconnection()
       Dim da As New OleDb.OleDbDataAdapter("SELECT * From data ORDER BY ID", cnn)
       Dim dt As New DataTable
       da.Fill(dt)
       Me.DataGridView1.DataSource = dt
   End Sub
End Class

وهذا شكل المشروع حتي الان

وبهذا نكون انتهينا من كود عرض البيانات
---------------------------------


عند حذف بيان

لكي نقوم بحذف بيان معين يجب تحديد البيان بدقة حتي لا نقوم بحذف بيان اخر علي سبيل الخطأ
ولذلك انشأنا ID مسلسل
لكي نخبر البرنامج ان يوم بحذف البيان الذي مسلسله 2 مثلا فلا يوجد اكثر من بيان يحمل هذا المسلسل
سوف نضيف زر الحذف تحت الداتا غريد لكي يقوم المستخدم بأختيار البيان الذي يريد حذفه اولا من الداتا غريد
ثم الضغط علي زر الحذف
و سوف يكون الكود للزر كالتالي

كود :
       MessageBox.Show("هل تريد حذف الرقم", "تأكيد", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
       If vbYes Then
           Dim delnum As Integer
           Dim ro As Integer = DataGridView1.CurrentRow.Index
           delnum = DataGridView1.Rows(ro).Cells("num").Value
           dataconnection()
           cmd.Connection = cnn
           cmd.CommandText = "DELETE FROM data WHERE id='" & delnum & "' "
           cmd.ExecuteNonQuery()
           cnn.Close()
           delnum = 0
           MessageBox.Show("تم حذف الرقم من قاعدة البيانات نهائيا")
           loaddata()
       End If

شرح الكود
سؤال العميل هل انت متأكد من المسح و لو اجاب بنعم

ro متغير رقمي بيساوي رقم الصف الي فيه البيان المراد مسحه
و خلي delnum متغير رقمي يساوي رقم المسلسل للبيان المراد حذفه الموجود في الصف رقم ro من قاعدة البيانات

كود الاتصال
جملة الاستعلام : امسح البيان اللي مسلسله delnum
اقفل الاتصال
اظهر رسالة للمستخدم تم المسح
اعمل تحديث للداتا اللي في الداتا غريد

وهذا هو الفورم حتي الان


--------------------------------------------------


اللهم صلي وسلم و بارك علي اشرف الخلق و اكرم المرسلين سيدنا محمد ﷺ
لا تنسوني من صالح دعائكم
السلام عليكم و رحمة الله و بركاته
الرد }}}}
تم الشكر بواسطة: pioneer77 , abulayth
#2
سوف استكمل الموضوع غدا ان شاء الله
اللهم صلي وسلم و بارك علي اشرف الخلق و اكرم المرسلين سيدنا محمد ﷺ
لا تنسوني من صالح دعائكم
السلام عليكم و رحمة الله و بركاته
الرد }}}}
تم الشكر بواسطة: Fantastico
#3
السلام عليكم

شكرا لك على هذا الموضوع الرائع ونحن ننتظر استكماله

يعطيك العافية
شـــايـفـــك

الرد }}}}
تم الشكر بواسطة:
#4
abulayth كتب :السلام عليكم

شكرا لك على هذا الموضوع الرائع ونحن ننتظر استكماله

يعطيك العافية

اشكرك اخي الكريم علي التثبيت
وجزاك الله خيرا عن كل من يقرأ الموضوع و يستفيد منه
اللهم صلي وسلم و بارك علي اشرف الخلق و اكرم المرسلين سيدنا محمد ﷺ
لا تنسوني من صالح دعائكم
السلام عليكم و رحمة الله و بركاته
الرد }}}}
تم الشكر بواسطة:
#5
شكراً جزيلاً و جزاك الله خيراً
الرد }}}}
تم الشكر بواسطة:
#6
شكراً جزيلاً و جزاك الله خيراً
الرد }}}}
تم الشكر بواسطة:
#7
لوتفضلت بشرح عده جداوال مع العلاقه حسب العرض م\
جدول الموظف
رقم الموظف
الاسم
جدول الراتب
رقم الوظف
المرتب
العلاوه
المكافاءه
اذا عرض الموظف عرض تفاصيل الراتب
الرد }}}}
تم الشكر بواسطة:
#8
لوتفضلت بشرح عده جداوال مع العلاقه حسب العرض م\
جدول الموظف
رقم الموظف
الاسم
جدول الراتب
رقم الوظف
المرتب
العلاوه
المكافاءه
اذا عرض الموظف عرض تفاصيل الراتب
الرد }}}}
تم الشكر بواسطة:
#9
مشكور اخي على مجهودك
ولكن اين باقي الموضوع
الرد }}}}
تم الشكر بواسطة:
#10
شكرا لك اخي
ولكن لي سؤال بسيط
وهو يشغل بالي منذ فترة
وهو الفرق بين الطريقه التي تفضلت بها في هذا الموضوع و طريقه add new database source الموجودة في الفيجوال
بحيث انني عملت عليها اكثر من مشروع وبخيارات تصفيه معقدة ولم اجد اي صعوبه
بحيث انني لم اكتب اي سطر برمجي سوى اوامر sql وعوامل التصفيه المطلوبه
وشكرا لك
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  طباعة بيانات موجودة في برنامج على ( 2003 Microsoft Office Word ) abulayth 1 279 11-09-16, 07:20 AM
آخر رد: أبووسم
  مشكلة في الاتصال بقاعدة بيانات Mr.Fenix 2 187 19-08-16, 09:34 AM
آخر رد: Mr.Fenix
  [VB.NET] أتمنى تعديل المشروع adel27 11 706 30-06-16, 06:19 AM
آخر رد: ابو نجلاء
  [كود] استرجاع البيانات من ConnectionString silverlight 1 294 25-01-16, 05:08 PM
آخر رد: khodor1985
  [درس فيديو] حل مشكلة صلاحيات قواعد البيانات عند تغيير مسارها على الجهاز Operating System Error 5 أحمد النجار 1 416 31-12-15, 02:52 AM
آخر رد: WAEL ABED
  فيديو بالعربي تبادل البيانات بين Excel و VB.net أحمد النجار 0 554 03-06-15, 10:53 PM
آخر رد: أحمد النجار
  [VB.NET] الأتصال بقاعدة بيانات اكسس2007 مع فجوال 2010 raaddawood 1 577 27-05-15, 03:40 PM
آخر رد: قناص المدينة
  [VB.NET] كيفية انشاء قاعدة بيانات برمجيا VB.net (صوت وصورة) أحمد النجار 0 728 18-01-15, 06:59 AM
آخر رد: أحمد النجار
  تحويل الفيديو في برامجك-الجزء الثاني( إصلاح للمشاكل + تعديل للروابط + توضيح للأمر ) RaggiTech 1 716 10-12-14, 06:37 PM
آخر رد: abulayth
  برمجة قواعد البيانات sql server + vb.net ابوهديل 1 5,831 13-02-14, 08:26 PM
آخر رد: Omar Mekkawy

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم