'عمل مديول ووضع فانكشن به'
Module SearchByID
''' <summary>'
''' بحث حسب حقل محدد متعدد القيمة'
''' </summary>'
''' <param name="TableName">اسم الجدول</param>'
''' <param name="FindBy">اسم العامود في قاعدة البيانات المراد البحث فيه</param>'
''' <param name="Arr">مصفوفة تحمل القيم المراد البحث عنها</param>'
''' <returns>داتا تيبل</returns>'
''' <remarks>لا يوجد</remarks>'
Public Function LoadAllRowsToTheToolsInForm(ByVal TableName As String, FindBy As String, ByVal Arr As ArrayList) As DataTable
'تعريف متغير لعمل الاستعلام'
Dim StrSQL As String = String.Empty
'تعريف متغير من نوع رقمي'
Dim i As Integer = 0
'بداية عمل الاستعلام'
StrSQL = "Select * From " & TableName & " Where " & FindBy & "="
'تصفير المتغير الرقمي'
i = 0
'عمل لوب حسب عدد العدد المحفوظ بالاراي'
For i = 0 To Arr.Count - 1
'عمل شرط حسب أخر قيمة في الاراي'
If i = Arr.Count - 1 Then
'تكملة تعبئة الاستعلام'
StrSQL += "@txt" & i
Else 'كل قيم الاراي ما عدا آخر قيمة'
'تعبئة الاستعلام بـ اسم العامود و الباراميتر'
StrSQL += "@txt" & i & " Or " & FindBy & "="
End If
Next
'تصفير المتغير الرقمي'
i = 0
'كود الاتصال بقاعدة البيانات'
Dim Con As New SqlClient.SqlConnection("Server =(local);database=TestAsemXT;integrated security=false;User ID=UserName;Password=12345")
'تعريف داتا أدبتر'
Dim da As New SqlClient.SqlDataAdapter
'فتح الاتصال بقاعدة البيانات'
If Con.State = ConnectionState.Closed Then Con.Open()
'تعريف سيكول كوماندو وضع الاستعلام و كود الاتصال به'
Dim cmd As New SqlClient.SqlCommand(StrSQL, Con)
'عمل لوب حسب عدد العدد المحفوظ بالاراي لوضع الباراميترات فيه'
For i = 0 To Arr.Count - 1
'شرط لايقاف اللوب عند آخر قيمة'
If i = Arr.Count Then Exit For
'تعبئة الباراميترات من القيم المحفوظة بالاراي'
cmd.Parameters.AddWithValue("@txt" & i, Arr(i).ToString)
Next
'وضع الكوماند بـ الداتا أدبتر'
da.SelectCommand = cmd
'تعريف داتاتيبل'
Dim dt As New DataTable
'تفريغ الداتاتيبل'
dt.Clear()
Try
'فتح الاتصال بقاعدة البيانات في حال كان مغلقا'
If Con.State = ConnectionState.Closed Then Con.Open()
'تحميل السجلات في الداتاتيبل'
da.Fill(dt)
'إغلاق الاتصال بقاعدة البيانات في حال كان مفتوحا'
If Con.State = ConnectionState.Open Then Con.Close()
'العودة بـ الداتاتيبل المعبئة'
Return dt
Catch ex As Exception
'رسالة في حال وجود خطأ'
MessageBox.Show(ex.Message)
'إغلاق الاتصال بقاعدة البيانات في حال كان مفتوحا'
If Con.State = ConnectionState.Open Then Con.Close()
'العودة بقيمة فارغة بسبب الخطأ'
Return Nothing
Finally
'إغلاق الاتصال بقاعدة البيانات في حال كان مفتوحا'
If Con.State = ConnectionState.Open Then Con.Close()
End Try
End Function
End Module
'كيفية إستخدام الكود في الفورم'
'كيفية إستخدام الكود في الفورم'
Public Class Form1
'كود تحميل الفورم'
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'تعريف متغير ووضع الاستعلام به'
Dim StrSQL As String = "Select * From TestTable "
'كود الاتصال بقاعدة البيانات'
Dim Con As New SqlClient.SqlConnection("Server =(local);database=TestAsemXT;integrated security=false;User ID=UserName;Password=123456")
'تعريف داتا أدبتر'
Dim da As New SqlClient.SqlDataAdapter(StrSQL, Con)
'تعريف داتاتيبل'
Dim dt As New DataTable
'تفريغ الداتاتيبل'
dt.Clear()
'تعريف اسم للجدول في الداتا تيبل'
dt.TableName = "TestTable"
'تحميل السجلات في الداتاتيبل'
da.Fill(dt)
'عمل لووب لتعبئة الجدول من الداتا تيبل'
For Each Row As DataRow In dt.Rows
'وضع السجلات في الجدول'
DGV1.Rows.Add(Row.ItemArray)
Next
End Sub
'زر البحث عن طريق القيم المحددة في الجدول الاول'
Private Sub BtnFindByIdDGV1_Click(sender As Object, e As EventArgs) Handles BtnFindByIdDGV1.Click
'عمل أراي ليست'
Dim Arr As New ArrayList
'تفريغ الاراي ليست'
Arr.Clear()
'عمل لوب لتعبئة الاراي من القيم المحددة في الجدول الاول'
For Each row As DataGridViewRow In DGV1.Rows
'عمل شرط للتحقق من القيم المحددة في الجدول الاول'
If row.Cells(4).Value = True Then
'وضع القيم في الاراي حسب عامود الرقم'
Arr.Add(row.Cells(0).Value)
End If
Next
'لفريغ الجدول من السجلات في حال عمل بحث جديد'
DGV2.Rows.Clear()
'عمل لوب لتعبئة الجدول من الداتاتيبل العائدة من الفانكشن'
For Each row1 As DataRow In LoadAllRowsToTheToolsInForm("TestTable", "ID", Arr).Rows
'وضع السجلات في الجدول'
DGV2.Rows.Add(row1.ItemArray)
Next
End Sub
End Class