PDA

View Full Version : مشکل در کد جستجو



mohammad_king62
پنج شنبه 16 مهر 1388, 14:26 عصر
سلام دوستان
به نظر شما اشکال کدی که من نوشتم در چیه ؟ عمل جستجو انجام نمی شه
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim strcon As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _
Application.StartupPath + "\db1.mdb"
Dim con As New OleDb.OleDbConnection(strcon)
If TextBox1.Text = "" Then
MsgBox("مورد جستجو را وارد کنید ", MsgBoxStyle.OkOnly, "خطا")
End If
con.Open()
Dim selectstr As String
selectstr = "select *from table2"
Dim da As New OleDb.OleDbDataAdapter(selectstr, con)
Dim ds As New DataSet()
Dim Dt As New DataTable
Select Case ComboBox1.SelectedIndex
Case 0
selectstr = "select id as شماره ,pname as نام کالا,up as قیمت کالا from table2 where id ='" + TextBox1.Text + "'"
Case 1
selectstr = "select id as شماره ,pname as نام کالا,up as قیمت کالا from table2 where pname ='" + TextBox1.Text + "'"
Case 2
selectstr = "select id as شماره ,pname as نام کالا,up as قیمت کالا from table2 where up ='" + TextBox1.Text + "'"
Case Else
Exit Sub
End Select
da.Fill(Dt)
Dim cmd As New OleDb.OleDbCommand("", con)
Try
cmd.ExecuteNonQuery()
Catch ex As Exception
Close()
End Try
Dt.TableName = ("table2")
da.Fill(ds, "table2")
con.Close()
DataGridView1.DataSource = ds
DataGridView1.DataMember = ds.Tables("table2").ToString

End Sub

nokhodsiah2001
پنج شنبه 16 مهر 1388, 15:13 عصر
سلام
به این شکل تغییرش به



Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strcon As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _
Application.StartupPath + "\db1.mdb"
Dim con As New OleDb.OleDbConnection(strcon)
If TextBox1.Text = "" Then
MsgBox("مورد جستجو را وارد کنید ", MsgBoxStyle.OkOnly, "خطا")
End If
con.Open()
Dim selectstr As String
' selectstr = "select *from table2"

Select ComboBox1.SelectedIndex
Case 0
selectstr = "select * from table2 where id ='" + TextBox1.Text + "'"
Case 1
selectstr = "select * from table2 where pname ='" + TextBox1.Text + "'"
Case 2
selectstr = "select * from table2 where up ='" + TextBox1.Text + "'"
Case Else
Exit Sub
End Select

Dim da As New OleDb.OleDbDataAdapter(selectstr, con)
Dim ds As New DataSet()
Dim Dt As New DataTable
da.Fill(Dt)
Dim cmd As New OleDb.OleDbCommand(selectstr, con)
Try
cmd.ExecuteNonQuery()
Catch ex As Exception
Close()
End Try
Dt.TableName = ("table2")
da.Fill(ds, "table2")
con.Close()
DataGridView1.DataSource = ds
DataGridView1.DataMember = ds.Tables("table2").ToString

End Sub

alimanam
پنج شنبه 16 مهر 1388, 15:34 عصر
با سلام

اینم یه نمونه کد جامع برای جستجو فیلدهای شما . امیدوارم که به دردتون بخوره

http://img230.imageshack.us/img230/411/23432434324.png

یا علی

mohammad_king62
پنج شنبه 16 مهر 1388, 15:37 عصر
ممنون از راهنمایی شما دوستان محترم
کدی که دوست عزیز nokhodsiah2001 گذاشت باز هم مشکل داره اگر امکان داره دوباره کد ها رو یک نگاهی بندازید . از دوست عزیز alimanam هم برای مثالشون ممنونم واقعا عالی بود ولی می خوام مشکل اون کدهای خودم بدونم کجاست .

mohammad_king62
پنج شنبه 16 مهر 1388, 19:38 عصر
دوستان کسی مشکل کد ها رو پیدا نکرد ؟

alimanam
پنج شنبه 16 مهر 1388, 21:18 عصر
با سلام

دوست عزیز منظور شما از این کد چیه ؟؟؟
Dim cmd As New OleDb.OleDbCommand("", con)
اگه فقط می خوای عملیات جستجو رو انجام بدی چه نیازی به کد بالا داری !!؟

دقیقاً بگو چکار می خوای انجام بدی تا کد بهتری واست بنویسم .

alimanam
پنج شنبه 16 مهر 1388, 22:07 عصر
اگه فقط می خوای عملیات جستجو رو بدی با توجه به کدهای قبلی شما من این تغییرات رو بهش دادم . نمونه کد کاملش در ضمیمه موجوده . فقط یه موضوع مهم : نوع 3 تا فیلدت چیه ؟ ( Text , Number , ... )


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If TextBox1.Text = "" Then
MsgBox("مورد جستجو را وارد کنید ", MsgBoxStyle.OkOnly, "خطا")
Exit Sub
End If

Dim strcon As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _
Application.StartupPath + "\db1.mdb"

Dim ds As New DataSet()
Dim selectstr As String = "Select id as شماره , pname as کالا ,up as قیمت from [Table2]"

Select Case ComboBox1.SelectedIndex
Case Is = 0
If IsNumeric(TextBox1.Text) = False Then MsgBox("مقدار نامعتبر است", MsgBoxStyle.Exclamation) : Exit Sub
selectstr = "Select id as شماره , pname as کالا ,up as قیمت from [Table2] Where id =" & TextBox1.Text ' & "'"
Case Is = 1
selectstr = "Select id as شماره , pname as کالا ,up as قیمت from [Table2] Where pname like '%" & TextBox1.Text & "%'"
Case Is = 2
selectstr = "Select id as شماره , pname as کالا ,up as قیمت from [Table2] Where up =" & TextBox1.Text ' & "'"
Case Else
If IsNumeric(TextBox1.Text) = False Then MsgBox("مقدار نامعتبر است", MsgBoxStyle.Exclamation) : Exit Sub
selectstr = "Select id as شماره , pname as کالا ,up as قیمت from [Table2]"
End Select

Dim con As New OleDb.OleDbConnection(strcon)
con.Open()

Dim da As New OleDb.OleDbDataAdapter(selectstr, con)
da.Fill(ds, "[Table2]")

DataGridView1.DataSource = ds.Tables("[Table2]")
con.Close()


End Sub

mohammad_king62
جمعه 17 مهر 1388, 00:55 صبح
دوست عزیز جناب alimanam باز هم مثل همیشه کارت علی بود ممنون کارم راه افتاد فقط یک مشکل هست واون اینه که هربار که عمل جستجو ویا نمایش اطلاعات انجام می شه در خروج از فرم و برگشتن دوباره اطلاعات فبلی که نمایش داده شده هنوز داخل datagridview هستند حتی من dataset رو هم clear کردم ولی باز همون مشکل باقی اگر راهی به ذهنت می رسه بگو چون توی یک تاپیک دیگه دوستان بحث کرده بودند راجع به باقی ماندن اطلاعات بعد از عملیات درج و ... درون datagridview ولی باز اونجا هم به نتیجه نرسید

alimanam
جمعه 17 مهر 1388, 13:24 عصر
با سلام

نمونه کد قبلی رو واست یکم دستکاری کردم اگه منظورت این باشه که در فراخوانی فرم جستجو می خوای اطلاعاتی درون Datagridview و Textbox نمایش داده نشه ( انگار که بار اوله که باز شده ) مشکلت با این نمونه کد حل میشه . یا علی

nokhodsiah2001
جمعه 17 مهر 1388, 14:05 عصر
سلام
من کدی که گذاشتم رو تست کردم و کار می کنه با تشکر از دوستمون alimanam که کمکتون کردن

اگر مشکل حل نشده بفرمایید تا اگر تونستم کمکتون کنم

mohammad_king62
جمعه 17 مهر 1388, 15:49 عصر
ممنون دوست عزیز مشکلم حل شد . با تشکر از راهنمایی همه شما