(25-05-24, 12:57 AM)justforit كتب : PHP كود :
Private Function GetKeysCount(cn As OleDbConnection, tb As String) As Integer
If cn.State = ConnectionState.Closed Then cn.Open()
Dim akeys As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, New String() {Nothing, Nothing, tb})
Return (akeys.Rows.Count)
End Function
هل اكسس يسمح باكثر من مفتاح ضمن جدول واحد؟
ان كان لا يسمح فهذا الكود مناسب للتحقق قبل الاضافة (لمن ليس عندهم برنامج الاكسس و انما فقط ملفات التشغيل)
برنامج Microsoft Access يسمح بوجود مفتاح أساسي واحد فقط لكل جدول. المفتاح الأساسي (Primary Key) هو فريد لكل صف في الجدول ويضمن عدم وجود صفوف مكررة. إذا كنت تريد التحقق مما إذا كان الجدول يحتوي بالفعل على مفتاح أساسي قبل إضافة مفتاح أساسي جديد، فإن الكود الذي كتبته مناسب لهذا الغرض.
الكود يتحقق من عدد المفاتيح الأساسية الموجودة في الجدول باستخدام GetOleDbSchemaTable مع OleDbSchemaGuid.Primary_Keys. إذا كان عدد الصفوف في الجدول الذي يحتوي على المفاتيح الأساسية يساوي صفرًا، فهذا يعني أن الجدول لا يحتوي على مفتاح أساسي حاليًا ويمكنك إضافة مفتاح أساسي جديد.
إليك بعض التوضيحات حول الكود:
فتح الاتصال إذا كان مغلقًا: إذا كان الاتصال بقاعدة البيانات مغلقًا، يتم فتحه.
الحصول على معلومات المفاتيح الأساسية: يتم استرجاع معلومات المفاتيح الأساسية للجدول المحدد باستخدام GetOleDbSchemaTable.
إرجاع عدد المفاتيح الأساسية: يتم إرجاع عدد المفاتيح الأساسية الموجودة في الجدول.
لتوضيح الأمور أكثر، إليك نسخة مبسطة من الكود مع بعض التعليقات التوضيحية:
PHP كود :
Private Function GetKeysCount(cn As OleDbConnection, tb As String) As Integer
' فتح الاتصال إذا كان مغلقًا
If cn.State = ConnectionState.Closed Then cn.Open()
' الحصول على جدول يحتوي على معلومات المفاتيح الأساسية للجدول المحدد
Dim akeys As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, New String() {Nothing, Nothing, tb})
' إرجاع عدد المفاتيح الأساسية
Return (akeys.Rows.Count)
End Function
كيفية الاستخدام:
يمكنك استخدام هذه الدالة للتحقق من وجود مفتاح أساسي في جدول معين قبل محاولة إضافة مفتاح أساسي جديد. على سبيل المثال:
PHP كود :
Dim cn As New OleDbConnection("Your_Connection_String_Here")
Dim tableName As String = "YourTableName"
Dim primaryKeyCount As Integer = GetKeysCount(cn, tableName)
If primaryKeyCount = 0 Then
' لا يوجد مفتاح أساسي حاليًا، يمكنك إضافة مفتاح أساسي جديد
Else
' يوجد مفتاح أساسي بالفعل، لا يمكنك إضافة مفتاح أساسي جديد
End If
بهذا الشكل، يمكنك التأكد من أن الجدول لا يحتوي على مفتاح أساسي قبل محاولة إضافة مفتاح أساسي جديد.
(25-05-24, 02:20 AM)justforit كتب : الكود التالي تمرر له اسم عمود ان اردت ان تعرف اي عمود هو المفتاح:
PHP كود :
Private Function GetKeysCount(cn As OleDbConnection, tb As String, Optional col As String = "") As Integer
If cn.State = ConnectionState.Closed Then cn.Open()
Dim akeys As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, New String() {Nothing, Nothing, tb})
Return akeys.Select("column_name='" & col & "'").Count
End Function
ان ردي هذا لشرح فكرنك و ذلك لافادة الجميع عافاكم الله
الكود الذي قدمته يقوم بالتحقق من وجود مفتاح أساسي معين في جدول محدد بناءً على اسم العمود. إليك النسخة المعدلة من الكود مع بعض التوضيحات والتعليقات:
PHP كود :
Private Function GetKeysCount(cn As OleDbConnection, tb As String, Optional col As String = "") As Integer
' فتح الاتصال إذا كان مغلقًا
If cn.State = ConnectionState.Closed Then cn.Open()
' الحصول على جدول يحتوي على معلومات المفاتيح الأساسية للجدول المحدد
Dim akeys As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, New String() {Nothing, Nothing, tb})
' إذا تم تحديد عمود، يتم التحقق من وجود المفتاح الأساسي لهذا العمود
If col <> "" Then
Return akeys.Select("COLUMN_NAME='" & col & "'").Count
Else
' إذا لم يتم تحديد عمود، يتم إرجاع عدد جميع المفاتيح الأساسية في الجدول
Return akeys.Rows.Count
End If
End Function
الشرح:
فتح الاتصال إذا كان مغلقًا: هذا الجزء من الكود يتحقق إذا كان الاتصال بقاعدة البيانات مغلقًا، وإذا كان كذلك فإنه يقوم بفتحه.
الحصول على معلومات المفاتيح الأساسية: يستخدم GetOleDbSchemaTable لاسترجاع جدول يحتوي على معلومات المفاتيح الأساسية للجدول المحدد.
التحقق من وجود مفتاح أساسي للعمود المحدد:
إذا تم تحديد عمود (أي أن col ليست سلسلة فارغة)، يتم استخدام Select للتحقق من وجود مفتاح أساسي لهذا العمود المحدد.
إذا لم يتم تحديد عمود، يتم إرجاع عدد جميع المفاتيح الأساسية في الجدول.
كيفية الاستخدام:
يمكنك استخدام هذه الدالة للتحقق من وجود مفتاح أساسي في جدول معين أو التحقق من وجود مفتاح أساسي لعمود معين. على سبيل المثال:
PHP كود :
Dim cn As New OleDbConnection("Your_Connection_String_Here")
Dim tableName As String = "YourTableName"
Dim columnName As String = "YourColumnName"
' للتحقق من وجود مفتاح أساسي لعمود معين
Dim primaryKeyCountForColumn As Integer = GetKeysCount(cn, tableName, columnName)
If primaryKeyCountForColumn > 0 Then
' المفتاح الأساسي موجود لهذا العمود
Else
' المفتاح الأساسي غير موجود لهذا العمود
End If
' للتحقق من وجود أي مفتاح أساسي في الجدول
Dim primaryKeyCountForTable As Integer = GetKeysCount(cn, tableName)
If primaryKeyCountForTable > 0 Then
' هناك مفتاح أساسي موجود في الجدول
Else
' لا يوجد مفتاح أساسي في الجدول
End If
بهذا الشكل، يمكنك التأكد من أن الجدول يحتوي أو لا يحتوي على مفتاح أساسي، وأيضًا يمكنك التحقق من وجود مفتاح أساسي لعمود معين.