الاثنين، 12 سبتمبر 2011

البحث في جميع حقول قاعدة البيانات




أفضل وسيلة لتكوين برنامج يرضي المستخدم (العميل) في عملية البحث  وتكوين برنامج له القدرة على البحث في جميع حقول قاعدة البيانات هي بإتباع الخطوات التالية

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

1. نكون دالة تحول أسماء حقول DataGridView1 الى مايقابلها بالعربية
والفائدة منها هي لتحويل أسماء حقول قاعدة البيانات المعروضة في DataGridView1  بعد كل عملية بحث الى العربية

Function ReplacedNamesE2A(ByVal RecivedNames As StringAs String
Select Case RecivedNames(0)
Case "a" To "z"
Select Case RecivedNames
Case "age"
ReplacedNamesE2A = "العمر"
Case "name"
ReplacedNamesE2A = "الاسم الكامل"
Case Else
ReplacedNamesE2A = ""
End Select
Case Else
ReplacedNamesE2A = RecivedNames
End Select
End Function

2.     نكون دالة اخرى تعمل العكس تحول اسماء الحقول العربية الى الانكليزية
والفائدة منها هي عند استدعاء عملية البحث عن ما موجود في ComboBox1 يحوله من العربية الى الانكليزية لكي يتمكن من البحث عن الحقل المطلوب



Function ReplacedNamesA2E(ByVal RecivedNames As StringAs String
Select Case RecivedNames
Case "العمر"
ReplacedNamesA2E = "age"
Case "الاسم الكامل"
ReplacedNamesA2E = "name"
Case Else
ReplacedNamesA2E = ""
End Select
End Function


3.     نكون دالة تستدعى عند كل عملية بحث لتغير اسماء الحقول واعادة تعبئة ComboBox1 بأسماء الحقول بالغة العربية


Sub FillDataToDataGridAndcombo()
ComboBox1.Items.Clear()
For i = 1 To DataGridView1.ColumnCount - 1
Try
DataGridView1.Columns(i).HeaderText = ReplacedNamesE2A(DataGridView1.Columns(i).HeaderText)
'نملا قائمة الاسماء بالحقوا المتوفرة
ComboBox1.Items.Add(DataGridView1.Columns(i).HeaderText)
Catch ex As Exception
End Try
Next
End Sub

4.     ونكتب في حدث TextChanged الخاص ب  TextBox1_ كود عملية البحث


On Error Resume Next
DataGridView1.DataSource = DataGridView1.DataBindings
MyRows = DS.Tables("tabel").Select(ReplacedNamesA2E(ComboBox1.Text) & " LIKE '%" & Trim(TextBox1.Text) & "%'")
Dim FoundRows As DataTable = DS.Tables("tabel").Clone
For Each dr In MyRows
FoundRows.ImportRow(dr)
DataGridView1.DataSource = FoundRows
Next
()FillDataToDataGridAndcombo 


حمل المثال من هنا

ليست هناك تعليقات: