تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
إضافة - تحديث - حذف بضغطة زر واحدة
#1
السلام عليكم إخواني الأعزاء ورحمة الله وبركاته
اليوم سوف أقدم لكم طريقة جديدة في التعامل (إضافة / تحديث / تعديل ) مع البيانات في قاعدة البيانات.
سوف نعتمد في هذا المثال على قاعدة بيانات من نوع Access.

الخطوة الأولى :
- قم بإنشاء Class بعنوان OLBControl.
- ضع الأكواد التالية :
أولا : سوف نستدعي مكتبة OLEDB:
PHP كود :
Imports System.Data
Imports System
.Data.OleDb 

ثانيا : سوف نعلن عن متغير للإتصال بقاعدة البيانات :
PHP كود :
Public OlCon As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|MyDB.accdb"

ثالثا : سوف نعلن عن متغير لإجراء عملية مؤثرة على  قاعدة البيانات :
PHP كود :
Public OlCMD As OleDbCommand 

رابعا : سوف نعلن عن متغير لجلب البيانات من قاعدة البيانات :
PHP كود :
Public OlDA As OleDbDataAdapter 

خامسا : سوف نعلن عن متغير يمثل قاعدة بيانات صغيرة أو ما يعبر عنها بالذاكرة في المشروع ويتم ملؤها من خلال DataAdapter:
PHP كود :
Public OlDS As DataSet 

سادسا : سوف نقوم بإنشاء إجراء عام  بعنوان RunQuery :
PHP كود :
Public Sub RunQuery(ByVal Query As String)
 
       Try
            OlCon
.Open()

 
           OlCMD = New OleDbCommand(QueryOlCon)
 
           OlDS = New DataSet
            OlDA 
= New OleDbDataAdapter(OlCMD)

 
           OlCon.Close()
 
       Catch ex As Exception
            MsgBox
(ex.Message)
 
           If OlCon.State ConnectionState.Open Then
                OlCon
.Close()
 
           End If
 
       End Try
 
   End Sub 

الخطوة الأولى بالصور :
إنشاء Class  بعنوان OLDB :
   

   

الخطوة الثانية :
- قم بإضافة DataGrid وليكن إسمه البرمجي DGVData.
- قم بإضافة Button وليكن إسمها البرمجي btnSave.

الخطوة الثانية بالصور :
   

الخطوة الثالثة :
- الإعلان عن متغير للتعامل مع الـ Class :
PHP كود :
Private Ole As New OLDBControl 

- إضافة كود التحميل وذلك في الحدث Load:
قم بإنشاء إجراء مستقل بعنوان LoadGrid ثم ضع الأكواد التالية :
PHP كود :
Sub LoadGrid()
 
       If Ole.RecordCount 0 Then
            DGVData
.DataSource Ole.OlDS.Tables(0)
 
           DGVData.Rows(0).Selected True
            Ole
.OlDA.UpdateCommand = New OleDb.OleDbCommandBuilder(Ole.OlDA).GetUpdateCommand
        End 
If
 
   End Sub 

ثم أضف هذا الإجراء إلى الحدث Load:
PHP كود :
Ole.RunQuery("Select * From Person")
 
       LoadGrid()
 
       btnSave.Enabled False 

- إضافة كود لزر الحفظ :
PHP كود :
Ole.OlDA.Update(Ole.OlDS

- إضافة كود لجعل الزر غير فعال قبل التعديل أو الإضافة أو الحذف :
PHP كود :
Private Sub DGVData_RowsRemoved(ByVal sender As System.ObjectByVal e As System.Windows.Forms.DataGridViewRowsRemovedEventArgsHandles DGVData.RowsRemoved
        btnSave
.Enabled True
    End Sub 

PHP كود :
 Private Sub btnSave_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles btnSave.Click
        Ole
.OlDA.Update(Ole.OlDS)
 
   End Sub 

PHP كود :
Private Sub DGVData_CellEndEdit(ByVal sender As System.ObjectByVal e As System.Windows.Forms.DataGridViewCellEventArgsHandles DGVData.CellEndEdit
        btnSave
.Enabled True
    End Sub 

الخطوة الثالثة بالصور :
   

الخطوة الخامسة والأخير :
المشروع :
.rar   khodor1985 - NewSampleApp2.rar (الحجم : 84.29 ك ب / التحميلات : 441)

أتمنى لكم التوفيق
وأسألكم الدعاء
إسرائيل إلى زوال ... وسوف تثبت الأيام ذلك ... قريباً إن شاء الله.
الرد
تم الشكر بواسطة: abulayth , sendbad100 , أبووسم , awidan76
#2
أخي الفاضل :
عند تجربة المثال ... الداتا جريد فارغ ولا يوجد أي بيانات بالشاشة ... فما السبب ؟؟؟
الرد
تم الشكر بواسطة: awidan76
#3
سوف أتحقق من المثال المرفق مع العلم أنهم مجرب.
إسرائيل إلى زوال ... وسوف تثبت الأيام ذلك ... قريباً إن شاء الله.
الرد
تم الشكر بواسطة: awidan76
#4
فيــــــــــه مشكله
الداتا جريد فارغ ولا يوجد أي بيانات بالشاشة

فيه مشكلة في الاتصال ؟؟؟؟؟
الرد
تم الشكر بواسطة: awidan76
#5
عذرا إخواني الأعزاء لقد نسيت إضافة قيمة للمتغير RecordCount في الـ Class والقيمة هي ملئ DataSet بالـ DataAdapter :
كود الكلاس بعد التعديل :
PHP كود :
Imports System.Data
Imports System
.Data.OleDb
Public Class OLDBControl
    Public OlCon 
As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|MyDB.accdb")
 
   Public OlCMD As OleDbCommand
    Public OlDA 
As OleDbDataAdapter
    Public OlDS 
As DataSet
    Public RecordCount 
As Integer


    Public Sub RunQuery
(ByVal Query As String)
 
       Try
            OlCon
.Open()

 
           OlCMD = New OleDbCommand(QueryOlCon)
 
           OlDS = New DataSet
            OlDA 
= New OleDbDataAdapter(OlCMD)
 
           RecordCount OlDA.Fill(OlDS)
 
           OlCon.Close()
 
       Catch ex As Exception
            MsgBox
(ex.Message)
 
           If OlCon.State ConnectionState.Open Then
                OlCon
.Close()
 
           End If
 
       End Try
 
   End Sub 

المشروع بعد التعديل :
.rar   khodor1985 - mod - NewSampleApp2.rar (الحجم : 83.54 ك ب / التحميلات : 275)
أتمنى لكم التوفيق
إسرائيل إلى زوال ... وسوف تثبت الأيام ذلك ... قريباً إن شاء الله.
الرد
تم الشكر بواسطة: sendbad100 , أبووسم , awidan76
#6
مشكور يا أخي

بارك الله فيك ... وإلى المزيد إن شاء الله
الرد
تم الشكر بواسطة: awidan76
#7
مشكور اخ خضر
                                                        Heart سبحان الله والحمد لله ولا اله الا الله والله اكبر  Heart
الرد
تم الشكر بواسطة: khodor1985 , khodor1985 , awidan76
#8
جزاك الله خير الجزاء
الرد
تم الشكر بواسطة: awidan76
#9
بارك الله فيك اخي / خضر

وجعل عملك خالصا لوجهه الكريم

جزاك الله عنا الف خير
  Heart   الرجاء البحث قبل وضع السؤال  Heart

   كل عام وانتم بالف بخير.  
الرد
تم الشكر بواسطة: awidan76
#10
دائما مبدع.. وفقك الله و رعاك
الرد
تم الشكر بواسطة: awidan76


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [مثال] مثال لنسخ وإستعادة قاعدة البيانات ( تحديث) نسخ تلقائي للقاعدة حسب اليوم والساعة جميل علي 56 11,413 12-07-18, 03:58 AM
آخر رد: dametucorazon
  فكرة TabControlفيها Animation كنت عملت مثلها قبل ان تبرمج Devexpress واحدة جاهزة viv 4 149 13-05-18, 10:41 PM
آخر رد: viv
  تحديث أداة الويب براوزر WebBrowser خالد 4 273 29-04-18, 12:08 PM
آخر رد: yousef elsayed
  [مثال] حفظ ملفات لـ PDF و الوورد والاكسيل داخل قاعدة البيانات( تحديث جديد) جميل علي 12 3,298 01-11-17, 09:48 PM
آخر رد: mohamed2316
Lightbulb [مثال] مثال ابلاغ عملائك بوجود تحديث للبرنامج Basil Abdallah 13 2,099 08-03-17, 01:13 PM
آخر رد: Basil Abdallah
Thumbs Up (تحديث) اتصال لقاعدة بيانات من نوع sqlserver عبر ثلاث طرق جميل علي 15 3,623 14-09-16, 04:42 PM
آخر رد: جميل علي
  ابسط مثال للتصاريح (سعود) (تحديث) جميل علي 3 955 13-09-16, 11:49 PM
آخر رد: جميل علي

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


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