منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[كود] GetKeysCount - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم مكتبة اكواد VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=185)
+--- الموضوع : [كود] GetKeysCount (/showthread.php?tid=48846)



GetKeysCount - justforit - 25-05-24

PHP كود :
Private Function GetKeysCount(cn As OleDbConnectiontb As String) As Integer
     
If cn.State ConnectionState.Closed Then cn.Open()
 
    Dim akeys As DataTable cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, New String() {NothingNothingtb})
 
    Return (akeys.Rows.Count)
 
End Function 

هل اكسس يسمح باكثر من مفتاح ضمن جدول واحد؟
ان كان لا يسمح فهذا الكود مناسب للتحقق قبل الاضافة (لمن ليس عندهم برنامج الاكسس و انما فقط ملفات التشغيل)


RE: GetKeysCount - justforit - 25-05-24

الكود التالي تمرر له اسم عمود ان اردت ان تعرف اي عمود هو المفتاح:
PHP كود :
Private Function GetKeysCount(cn As OleDbConnectiontb As StringOptional col As String "") As Integer
     
If cn.State ConnectionState.Closed Then cn.Open()
 
    Dim akeys As DataTable cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, New String() {NothingNothingtb})
 
    Return akeys.Select("column_name='" col "'").Count
 End 
Function 



RE: GetKeysCount - غزة العزة - 25-05-24

(25-05-24, 12:57 AM)justforit كتب :
PHP كود :
Private Function GetKeysCount(cn As OleDbConnectiontb As String) As Integer
     
If cn.State ConnectionState.Closed Then cn.Open()
 
    Dim akeys As DataTable cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, New String() {NothingNothingtb})
 
    Return (akeys.Rows.Count)
 
End Function 

هل اكسس يسمح باكثر من مفتاح ضمن جدول واحد؟
ان كان لا يسمح فهذا الكود مناسب للتحقق قبل الاضافة (لمن ليس عندهم برنامج الاكسس و انما فقط ملفات التشغيل)

برنامج Microsoft Access يسمح بوجود مفتاح أساسي واحد فقط لكل جدول. المفتاح الأساسي (Primary Key) هو فريد لكل صف في الجدول ويضمن عدم وجود صفوف مكررة. إذا كنت تريد التحقق مما إذا كان الجدول يحتوي بالفعل على مفتاح أساسي قبل إضافة مفتاح أساسي جديد، فإن الكود الذي كتبته مناسب لهذا الغرض.

الكود يتحقق من عدد المفاتيح الأساسية الموجودة في الجدول باستخدام GetOleDbSchemaTable مع OleDbSchemaGuid.Primary_Keys. إذا كان عدد الصفوف في الجدول الذي يحتوي على المفاتيح الأساسية يساوي صفرًا، فهذا يعني أن الجدول لا يحتوي على مفتاح أساسي حاليًا ويمكنك إضافة مفتاح أساسي جديد.

إليك بعض التوضيحات حول الكود:

فتح الاتصال إذا كان مغلقًا: إذا كان الاتصال بقاعدة البيانات مغلقًا، يتم فتحه.
الحصول على معلومات المفاتيح الأساسية: يتم استرجاع معلومات المفاتيح الأساسية للجدول المحدد باستخدام GetOleDbSchemaTable.
إرجاع عدد المفاتيح الأساسية: يتم إرجاع عدد المفاتيح الأساسية الموجودة في الجدول.
لتوضيح الأمور أكثر، إليك نسخة مبسطة من الكود مع بعض التعليقات التوضيحية:

PHP كود :
Private Function GetKeysCount(cn As OleDbConnectiontb As String) As Integer
    
' فتح الاتصال إذا كان مغلقًا
    If cn.State = ConnectionState.Closed Then cn.Open()
    
    ' 
الحصول على جدول يحتوي على معلومات المفاتيح الأساسية للجدول المحدد
    Dim akeys 
As DataTable cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, New String() {NothingNothingtb})
 
   
    
' إرجاع عدد المفاتيح الأساسية
    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(cntableName)

If 
primaryKeyCount 0 Then
    
' لا يوجد مفتاح أساسي حاليًا، يمكنك إضافة مفتاح أساسي جديد
Else
    ' 
يوجد مفتاح أساسي بالفعل، لا يمكنك إضافة مفتاح أساسي جديد
End 
If 

بهذا الشكل، يمكنك التأكد من أن الجدول لا يحتوي على مفتاح أساسي قبل محاولة إضافة مفتاح أساسي جديد.

(25-05-24, 02:20 AM)justforit كتب : الكود التالي تمرر له اسم عمود ان اردت ان تعرف اي عمود هو المفتاح:
PHP كود :
Private Function GetKeysCount(cn As OleDbConnectiontb As StringOptional col As String "") As Integer
     
If cn.State ConnectionState.Closed Then cn.Open()
 
    Dim akeys As DataTable cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, New String() {NothingNothingtb})
 
    Return akeys.Select("column_name='" col "'").Count
 End 
Function 

ان ردي هذا لشرح فكرنك و ذلك لافادة الجميع عافاكم الله
الكود الذي قدمته يقوم بالتحقق من وجود مفتاح أساسي معين في جدول محدد بناءً على اسم العمود. إليك النسخة المعدلة من الكود مع بعض التوضيحات والتعليقات:

PHP كود :
Private Function GetKeysCount(cn As OleDbConnectiontb As StringOptional col As String "") As Integer
    
' فتح الاتصال إذا كان مغلقًا
    If cn.State = ConnectionState.Closed Then cn.Open()
    
    ' 
الحصول على جدول يحتوي على معلومات المفاتيح الأساسية للجدول المحدد
    Dim akeys 
As DataTable cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, New String() {NothingNothingtb})
 
   
    
' إذا تم تحديد عمود، يتم التحقق من وجود المفتاح الأساسي لهذا العمود
    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(cntableName)
If 
primaryKeyCountForTable 0 Then
    
' هناك مفتاح أساسي موجود في الجدول
Else
    ' 
لا يوجد مفتاح أساسي في الجدول
End 
If 

بهذا الشكل، يمكنك التأكد من أن الجدول يحتوي أو لا يحتوي على مفتاح أساسي، وأيضًا يمكنك التحقق من وجود مفتاح أساسي لعمود معين.