19-06-13, 10:26 PM
(آخر تعديل لهذه المشاركة : 19-06-13, 10:29 PM {2} بواسطة aminsheeri.)
السلام عليكم ورحمة الله
أقدم لكم درساً بسيطاً للتعامل مع قواعد البيانات MS Access من خلال تطبيق بـVisual Basic.
في البداية نغير اسم الـForm الافتراضي للمشروع الجديد إلى frmMain، ونضع عليه:
Text Box: ونسمّه txtSearch
4 Buttons: ونسميهم: btnNew جديد، وbtnEdit تعديل، وbtnDelete حذف، وbtnClose إغلاق.
DataGridView: وسمّه dgvList.
قم بإنشاء قاعدة بيانات نوع mdb باسم saveDate.mdb
وخزنها في المجدل Debug
والآن:
قم بإضافة Module للمشروع باسم: functions
واكتب داخله الكود التالي:
وهنا قمنا باستدعاء الفضاء System.Data.OleDb الخاص بالتعامل مع قواعد البيانات من النوع MS Access.
في برمجة حدث التحميل للـForm اكتب الكود التالي:
وهذا الكود خاص بتجهيز الـDataGridView برمجياً، ومن ثم تعبئتها من قاعدة البيانات من خلال استدعاء الروتين LoadData ، وفيما يلي برمجته:
وكما نلاحظ، فهذا الروتين Public (عام) يمكن استدعاؤه حتى من خارج هذا الـform، وخاصة عند إجراء العمليات على قاعدة البيانات، بحيث يتم تحديث محتويات الـDtataGridView فور إنهاء العملية.
قم بكتابة الكود التالي في برمجة زر الإغلاق:
أقدم لكم درساً بسيطاً للتعامل مع قواعد البيانات MS Access من خلال تطبيق بـVisual Basic.
في البداية نغير اسم الـForm الافتراضي للمشروع الجديد إلى frmMain، ونضع عليه:
Text Box: ونسمّه txtSearch
4 Buttons: ونسميهم: btnNew جديد، وbtnEdit تعديل، وbtnDelete حذف، وbtnClose إغلاق.
DataGridView: وسمّه dgvList.
قم بإنشاء قاعدة بيانات نوع mdb باسم saveDate.mdb
وخزنها في المجدل Debug
والآن:
قم بإضافة Module للمشروع باسم: functions
واكتب داخله الكود التالي:
كود :
Imports System.Data.OleDb
Module functions
Public Con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\saveDate.mdb")
End Module
وهنا قمنا باستدعاء الفضاء System.Data.OleDb الخاص بالتعامل مع قواعد البيانات من النوع MS Access.
في برمجة حدث التحميل للـForm اكتب الكود التالي:
كود :
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' تجهيز الداتاقريدفيو
With dgvList
.DataSource = Nothing
.Rows.Clear()
.ColumnCount = 3
.Columns(0).HeaderText = "ID"
.Columns(0).Width = 30
.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(1).HeaderText = "الاســـــــم"
.Columns(1).Width = 150
.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(2).HeaderText = "تاريخ الميلاد"
.Columns(2).Width = 110
.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
' لجعل الخلية تعرض التاريخ فقط
.Columns(2).DefaultCellStyle.Format = "d"
End With
LoadData()
End Sub
وهذا الكود خاص بتجهيز الـDataGridView برمجياً، ومن ثم تعبئتها من قاعدة البيانات من خلال استدعاء الروتين LoadData ، وفيما يلي برمجته:
كود :
Public Sub LoadData()
Dim LSQL As String = "select * from TheTable order by ID"
Dim LAdapter As New OleDbDataAdapter(LSQL, Con)
Dim LDataSet As New DataSet
Dim RowsCount As Integer
Dim i As Integer
' مسح الداتاقريدفيو من قيم سابقة محتملة
dgvList.Rows.Clear()
If Con.State = ConnectionState.Closed Then
Con.Open()
LAdapter.Fill(LDataSet, "LoadingData")
RowsCount = LDataSet.Tables("LoadingData").Rows.Count
If RowsCount = 0 Then
dgvList.Rows.Clear()
LDataSet.Reset()
Con.Close()
Exit Sub
Else
dgvList.Rows.Add(RowsCount)
' Now: fill DGV with data
For i = 0 To RowsCount - 1
With dgvList
.Rows(i).Cells(0).Value = LDataSet.Tables("LoadingData").Rows(i).Item("ID")
.Rows(i).Cells(1).Value = LDataSet.Tables("LoadingData").Rows(i).Item("TheName")
.Rows(i).Cells(2).Value = LDataSet.Tables("LoadingData").Rows(i).Item("TheBirthDate")
End With
Next
LDataSet.Reset()
Con.Close()
End If
Else
LAdapter.Fill(LDataSet, "LoadingData")
RowsCount = LDataSet.Tables("LoadingData").Rows.Count
If RowsCount = 0 Then
dgvList.Rows.Clear()
LDataSet.Reset()
Con.Close()
Exit Sub
Else
dgvList.Rows.Add(RowsCount)
' Now: fill DGV with data
For i = 0 To RowsCount - 1
With dgvList
.Rows(i).Cells(0).Value = LDataSet.Tables("LoadingData").Rows(i).Item("ID")
.Rows(i).Cells(1).Value = LDataSet.Tables("LoadingData").Rows(i).Item("TheName")
.Rows(i).Cells(2).Value = LDataSet.Tables("LoadingData").Rows(i).Item("TheBirthDate")
End With
Next
LDataSet.Reset()
Con.Close()
End If
End If
End Sub
وكما نلاحظ، فهذا الروتين Public (عام) يمكن استدعاؤه حتى من خارج هذا الـform، وخاصة عند إجراء العمليات على قاعدة البيانات، بحيث يتم تحديث محتويات الـDtataGridView فور إنهاء العملية.
قم بكتابة الكود التالي في برمجة زر الإغلاق:
كود :
Me.Close