منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مشكلة في DataGridView1
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاااته

أسعد الله أوقاتكم بكل خييير

أنا كنت بعمل برنامج جديد وكان في البرنامج فورم للبحث من الداتابيز وعرض النتائج في DataGridView1

ولكن عند الضغط على زر بحث جديد وكتابة بحث جديد فإن DataGridView1 يقوم بعرض نتاج البحث الأول والثاني

وأنا فقط أريده أن يبحث عن المطلوب فقط

وهذا هو الكود
------------------> الكود أعطاني إيه أحد الإخوة ... أنا فقط قمت بالتعديل عليه ليعمل بشكل جيد

Imports System.Data.OleDb
Imports System.IO
Imports System.Data.SqlClient
Imports System.Data



Public Class Form2

Protected Overrides ReadOnly Property CreateParams() As CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
Const CS_DBLCLKS As Int32 = &H8
Const CS_NOCLOSE As Int32 = &H200
cp.ClassStyle = CS_DBLCLKS Or CS_NOCLOSE
Return cp
End Get
End Property

Dim Connectionstring As String = "provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\Employe.mdb;user id=admin;jet oledb:database password=12345b#"

Dim newconnection As New OleDbConnection(Connectionstring)
Dim DataSet1 As New DataSet
Dim SQLstr As String
Dim m As String


Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.TopMost = True
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Static m As Integer = 0

'اذا كان التكست المخصص للبحث فارغ يتم الخروج من الاجراء لعدم حدوث اخطاء
' If TextBox1.Text = Trim("") Then Beep() : Exit Sub

If TextBox1.Text = "" Then
' MessageBox("لا توجد نتيجه",48, "تنبيه")
MsgBox("لا توجد نتيجه", 48, "تنبيه")
End If

If RadioButton9.Checked = True Then
ExactSearch()
' ExactSearch()

ElseIf RadioButton10.Checked = True Then
GeneralSearch()

End If

Try


newconnection.Open()
Dim DataAdapter1 As New OleDbDataAdapter(SQLstr, newconnection)
DataAdapter1.Fill(DataSet1, "main")
newconnection.Close()
' DataGridView1.Rows.Clear()




DataGridView1.ColumnHeadersVisible = False



DataGridView1.DataSource = DataSet1
DataGridView1.DataMember = "main"
DataGridView1.AllowDrop = True

Button1.Enabled = False


If Me.BindingContext(DataSet1, "main").Count = 0 Then
MsgBox("لا توجد نتيجة", 48, "تنبيه")
Exit Sub
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub


Public Sub ExactSearch()


If RadioButton1.Checked = True Then
SQLstr = "SELECT * FROM main WHERE scode LIKE '" & TextBox1.Text & "'"
ElseIf RadioButton2.Checked = True Then
SQLstr = "SELECT * FROM main WHERE EMP LIKE '" & TextBox1.Text & "'"


End If
End Sub
Public Sub GeneralSearch()



If RadioButton1.Checked = True Then
SQLstr = "SELECT * FROM main WHERE scode LIKE '%" & TextBox1.Text & "%'"
ElseIf RadioButton2.Checked = True Then
SQLstr = "SELECT * FROM main WHERE EMP LIKE '%" & TextBox1.Text & "%'"


End If
End Sub

Public Sub ChangePosition()
Try
If Me.BindingContext(dataset1, "main").Count = 0 Then
Label22.Text = "قاعده البيانات فارغه"
Exit Sub
End If
Label22.RightToLeft = Windows.Forms.RightToLeft.Yes
Label22.Text = "السجل " & Me.BindingContext(DataSet1, "main").Position & _
" من " & Me.BindingContext(DataSet1, "main").Count
Catch ex As Exception
MsgBox(ex.Message)
End Try

End Sub

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Try
Me.BindingContext(DataSet1, "main").Position += 1
ChangePosition()
Catch ex As Exception

End Try
End Sub

Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click

Try
Me.BindingContext(DataSet1, "main").Position -= 1
ChangePosition()
Catch ex As Exception

End Try
End Sub

Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
Me.Close()
End Sub

Private Sub Button6_Click(sender As System.Object, e As System.EventArgs) Handles Button6.Click


-------------------------------> المشكلة هنا .. أنا هذا الزر يقوم بتفريغ الداتا جريد فيو ... ولكن عند البحث من جديد فإنه يقوم بعرض جميع النتائج السابقة ... لماذا ؟؟؟


TextBox1.Clear()
Button1.Enabled = True


' DataGridView1.Refresh()

DataGridView1.DataSource = Nothing
' DataGridView1.Rows.Clear(
'Call CType(DataGridView1.DataSource, DataTable).Rows.Clear()


End Sub

End Class
في بداية أي إجراء يقوم بعملية البحث ووضع ناتج البحث في DataGridView1 عليك اولا افراغ محتويات الاداة عن طريق الكود datagridview1.clear
فعلت ما قلته لي ... ولكن لم ينجح بعد

هذا هو كود زر إبحث

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Static m As Integer = 0
DataGridView1.Rows.Clear()

'اذا كان التكست المخصص للبحث فارغ يتم الخروج من الاجراء لعدم حدوث اخطاء
' If TextBox1.Text = Trim("") Then Beep() : Exit Sub

If TextBox1.Text = "" Then
' MessageBox("لا توجد نتيجه",48, "تنبيه")
MsgBox("لا توجد نتيجه", 48, "تنبيه")
End If

If RadioButton9.Checked = True Then
ExactSearch()
' ExactSearch()

ElseIf RadioButton10.Checked = True Then
GeneralSearch()

End If

Try


newconnection.Open()
Dim DataAdapter1 As New OleDbDataAdapter(SQLstr, newconnection)
DataAdapter1.Fill(DataSet1, "main")
newconnection.Close()
' DataGridView1.Rows.Clear()




DataGridView1.ColumnHeadersVisible = False



DataGridView1.DataSource = DataSet1
DataGridView1.DataMember = "main"
DataGridView1.AllowDrop = True

Button1.Enabled = False


If Me.BindingContext(DataSet1, "main").Count = 0 Then
MsgBox("لا توجد نتيجة", 48, "تنبيه")
Exit Sub
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub


وهذا كود زر بحث جديد

Private Sub Button6_Click(sender As System.Object, e As System.EventArgs) Handles Button6.Click





TextBox1.Clear()
Button1.Enabled = True


' DataGridView1.Refresh()

DataGridView1.DataSource = Nothing
' DataGridView1.Rows.Clear(
'Call CType(DataGridView1.DataSource, DataTable).Rows.Clear()


End Sub
قبل البحث
DataSet1.clear
الحمد لله نجح ... بارك الله فيك أخوي محمود رغمان