Imports System.Data.OleDb
Public Class Form1
Dim conn As New OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Database1.accdb;")
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
' قراءة قاعدة البيانات '
ReadDatabase()
End Sub
' قراءة قاعدة البيانات '
Private Sub ReadDatabase()
Using da As New OleDbDataAdapter("SELECT * FROM [table1] ", conn)
Using myDatatable As New DataTable
da.Fill(myDatatable)
Me.DataGridView1.DataSource = myDatatable
End Using
End Using
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Try
' الحقل HijriYear هو فقط لمعرفة الرقم التسلسلي المفترض وضعه '
' الحقل HijriID هو من نوع رقم عادي وليس ترقيم تلقائي لأن الترقيم يتم برمجياً '
' معرفة السنة الهجرية الحالية حسب التقويم الهجري نظام الويندوز '
Dim nowHijriYear As Integer = New System.Globalization.HijriCalendar().GetYear(Now)
' معرفة السنة الهجرية الحالية حسب تقويم أم القرى في نظام الويندوز '
''Dim nowHijriYear As Integer = New System.Globalization.UmAlQuraCalendar().GetYear(Now)
' معرفة أكبر رقم مسجل للسنة الحالية '
Dim maxHijriID As Integer = GetMaxHijriID(nowHijriYear)
If maxHijriID <> -1 Then
conn.Open()
'========== إضافة البيانات =========='
Using comm As New OleDbCommand(" INSERT INTO [table1] ([Name], [HijriYear], [HijriID] ) VALUES (@Name, @HijriYear, @HijriID) ", conn)
comm.Parameters.AddWithValue("@Name", Me.TextBox1.Text)
comm.Parameters.AddWithValue("@HijriYear", nowHijriYear)
comm.Parameters.AddWithValue("@HijriID", maxHijriID + 1) ' نضيف واحد '
comm.ExecuteNonQuery()
End Using
conn.Close()
' قراءة قاعدة البيانات '
ReadDatabase()
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
'========== دالة لمعرفة أكبر رقم مسجل للسنة المحددة =========='
Private Function GetMaxHijriID(hijriYear As Integer) As Integer
Try
conn.Open()
'========== معرفة أكبر رقم مسجل للسنة الحالية =========='
' متغير من نوع أوبجكت تحسباً لرجوع قيمة فارغة '
Dim maxHijriID As Object
Using comm As New OleDbCommand(" SELECT MAX([HijriID]) FROM [table1] WHERE [HijriYear] = @HijriYear ", conn)
comm.Parameters.AddWithValue("@HijriYear", hijriYear)
maxHijriID = comm.ExecuteScalar
End Using
' في حالة القيمة الفارغة يتم تحويلها إلى رقم صفر '
maxHijriID = IIf(maxHijriID.GetType Is GetType(System.DBNull), 0, maxHijriID)
conn.Close()
Return maxHijriID
Catch ex As Exception
MsgBox(ex.Message)
Return -1
End Try
End Function
End Class