06-11-14, 08:40 AM
(آخر تعديل لهذه المشاركة : 07-11-14, 06:07 PM {2} بواسطة الوليد ☺.
تعديل السبب: أضفت السطر التالي لتقويم أم القرى
)
السلام عليكم ورحمة الله
شوف أخوي العزابي
هذا مثال مجمع من عدة مشاريع لأحد الأخوة الله يذكره بالخير علشان نوصل للهدف من الفكرة
مشكلة قاعدة البيانات ما تتعامل مع التاريخ الهجري مباشرة حتى لو ظهر لك تاريخ هجري فهذا نتيجة التحويل
ولو استعلمت عن السنة في جملة الاستعلام مثل "(()SELECT YEAR(NOW" راح يعطيك السنة الميلادية
سوي مشروع جديد وحط فيه داتاجريد وزر ومربع نص
وبالنسبة لقاعدة البيانات
سوي جدول باسم table1 وفيه ثلاث حقول واحد نصي Name واثنين أرقام عادية اسمهم HijriYear والثاني HijriID
وقول باسم الله وشغل المشروع، وإن شاء يكون ما تريد،
PHP كود :
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
أضفت السطر التالي لتقويم أم القرى، قم بتفعيله مع تعطيل السابق إن أردت
PHP كود :
' معرفة السنة الهجرية الحالية حسب تقويم أم القرى في نظام الويندوز '
''Dim nowHijriYear As Integer = New System.Globalization.UmAlQuraCalendar().GetYear(Now)

