تقييم الموضوع :
  • 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 ك ب / التحميلات : 196)

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

فيه مشكلة في الاتصال ؟؟؟؟؟
الرد }}}}
تم الشكر بواسطة:
#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 ك ب / التحميلات : 145)
أتمنى لكم التوفيق
الرد }}}}
تم الشكر بواسطة:
#6
مشكور يا أخي

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [مثال] حفظ ملفات لـ PDF و الوورد والاكسيل داخل قاعدة البيانات( تحديث جديد) جميل علي 9 972 02-12-16, 03:40 PM
آخر رد: thecareep
  [مثال] مثال لنسخ وإستعادة قاعدة البيانات ( تحديث) نسخ تلقائي للقاعدة حسب اليوم والساعة جميل علي 27 2,260 30-11-16, 11:25 AM
آخر رد: جميل علي
Thumbs Up (تحديث) اتصال لقاعدة بيانات من نوع sqlserver عبر ثلاث طرق جميل علي 15 950 14-09-16, 04:42 PM
آخر رد: جميل علي
  ابسط مثال للتصاريح (سعود) (تحديث) جميل علي 3 452 13-09-16, 11:49 PM
آخر رد: جميل علي

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


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