تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[كود] أبسط طريقة للبحث في الــDataTable
#1
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
في نقاش في احدى مواضيع المنتدى لاول مرة افكر كيف ممكن ان اصل او ان اعرف الموضع الذي فيه نتيجة البحث في الـDataTable
سابقا كنت استخدم جملة For هكذا
PHP كود :
for as integer=0 to dt.rows.count-1
dim t 
as string=dt(i)(عمود الاسماء او المراد البحث ضمنه)
if 
t=any thing to search for
bindingcontext(dt).position=i
exit for
next 
بصراحة كنت حاس من زمان  انه لابد من وجود طريقة احسن من ذلك.
والان مع الكود الافضل .
الدالة:
PHP كود :
Private Function Search(ByVal t As String) As Integer
        Dim sql 
As String ""
 
       If IsNumeric(tThen
            sql 
"tid=" Val(t) & ""
 
       ElseIf IsDate(tThen
            sql 
"dob ='#" CDate(t).ToShortDateString "#'"
 
       Else
            sql 
"tname='" "'"
 
       End If
 
       If dt.Select(sql).Count 0 Then
            Dim i 
As DataRow
            i 
dt.Select(sql).Single
            Return dt
.Rows.IndexOf(i)
 
       Else
            Return Nothing
        End 
If
 
   End Function 
طبعا لو لم يحصل على نتيجة سيعيد nothing وهو 0  وهو اول موضع بالصفوف.
طريقة استخدامها كالتالي:
PHP كود :
       Dim s As String InputBox("أكتب ماتريد البحث عنه")
 
       BindingContext(dt).Position Search(s)
 
       pos() 
كما ترى يمكن البحث في اي نوع رقم نص تاريخ.
الاجراء pos اضافي.
و كل عام و انتم بخير.

على فكرة هذه الدالة تناسب اذا عملت Binding للادوات ومن غيرها لن تحصل على نتيجة.
اساس الفكرة هو الانتقال لموضع النتيجة.
[صورة مرفقة: rel.png]
الرد
تم الشكر بواسطة: asemshahen5 , viv , الرائد , ابراهيم ايبو
#2
و هذه طريقة اخرى ايضا :

PHP كود :
       Dim dv As New DataView
        dv 
dt.DefaultView
        dv
.RowFilter " ClumnName='" "ما تبحث عنه في العامود" "'"
 
       DataGridView1.DataSource dv 
أو :
PHP كود :
       Dim StrSQL As String "Select * From TB_Users "
 
       Dim cn As New SqlConnection("Server =(local);database=DB;integrated security=true")
 
       Dim da As New SqlDataAdapter(StrSQLcn)
 
       Dim dt As New DataTable
        da
.Fill(dt)
 
       dt.DefaultView.RowFilter " User_Nam='" TextBox1.Text "'"
 
       DataGridView1.DataSource dt.DefaultView 
الرد
تم الشكر بواسطة: viv , viv , سعود , الرائد
#3
PHP كود :
dt.DefaultView.RowFilter " User_Nam='" TextBox1.Text "'" 
معلومة مفيدة ...
هذا يناسب ان يوضع في 
TextBox1_TextChanged
بشرط ان لا تكون هذه الاداة معمول لها binding
[صورة مرفقة: rel.png]
الرد
تم الشكر بواسطة: asemshahen5 , الرائد , الرائد



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم