تقييم الموضوع :
  • 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
اقفل الاتصال
اظهر رسالة للمستخدم تم المسح
اعمل تحديث للداتا اللي في الداتا غريد

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


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


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

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

يعطيك العافية
(( يَا أَيَّتُهَا النَّفْسُ الْمُطْمَئِنَّةُ ارْجِعِي إِلَى رَبِّكِ رَاضِيَةً مَرْضِيَّةً فَادْخُلِي فِي عِبَادِي وَادْخُلِي جَنَّتِي ))

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

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

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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] التحقق من تكرار البيانات بعد الاستيراد من اكسيل loay775 1 38 01-04-24, 06:32 AM
آخر رد: loay775
  رقابة قاعدة البيانات (التحديث التلقائي للبيانات ) SqlDependency قناص المدينة 0 528 05-10-23, 04:43 PM
آخر رد: قناص المدينة
  [درس فيديو] اضافة ملف مشغل لصفحة html و جافاسكريبت و سي اس اس بفيجوال بيسك.(قد لا اكون اصبت بالتع سعود 1 923 17-04-23, 08:31 AM
آخر رد: سعود
Video [درس فيديو] حل مشكلة تغيير مسار قاعدة البيانات مع تقارير كريستال ريبورت رمضان272 0 1,689 23-04-22, 05:56 AM
آخر رد: رمضان272
  دمج قاعدة بيانات SQL Server 2008 مع المشروع بالـ VBNET snipercoder 4 8,210 12-11-20, 06:01 PM
آخر رد: lion4
  [درس فيديو] كيف تحول اي قاعدة بيانات اكسس الى SQL aljzazy 3 3,299 17-04-20, 09:27 PM
آخر رد: الوايلي
  [درس فيديو] كيف تحول اي قاعدة بيانات اكسس الى mysql aljzazy 0 2,319 10-04-20, 09:05 PM
آخر رد: aljzazy
  [VB.NET] كيفية استخدام اداوات ديف اكسبريس devexpressلادخال السجلات الى قاعدة بيانات نوع اكسس 13adam123 0 2,581 29-03-20, 12:50 PM
آخر رد: 13adam123
  [SQL] تحسين أداء وسرعة قاعدة البيانات SQL SERVER اسامه الهرماوي 0 3,594 28-10-19, 03:12 AM
آخر رد: اسامه الهرماوي
  [VB.NET] برمجة dynamic Buttons مع قواعد البيانات mgr21002100 1 2,863 13-08-19, 05:36 PM
آخر رد: asemshahen5

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


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