ورود

View Full Version : جستجوی کارکتر به کارکتر



سمیرا دهقان
چهارشنبه 03 مهر 1387, 13:50 عصر
من می خواهم یه سرچی درست کنم که هنگامی که مثلا کاراکتر "ح" را وارد می کنم هر اسمی که با



"ح"شروع می شود نشان دهد برای این کار از کد زیر استفاده می کنم ولی سطرخالی نشان میدهد .



مقادیر درون دیتابیس من به صورت فارسی است


این هم کدی که استفادهمی کنم



Private Sub test_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cmd.CommandType = CommandType.Text
cmd.CommandText = "select name,family from ali"
cmd.Connection = con
con.Open()
ds.Clear()
da.Fill(ds, "ali")
con.Close()
DataGridView1.DataBindings.Add(New Binding("datasource", ds, "ali"))
End Sub

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
cmd.CommandType = CommandType.Text
cmd.CommandText = "select name,family from ali where name Like ' " + TextBox1.Text + " % '"
cmd.Connection = con
con.Open()
ds.Clear()
da.Fill(ds, "ali")
con.Close()
End Sub

naeeme
چهارشنبه 03 مهر 1387, 13:58 عصر
cmd.CommandText = "select name,family from ali where name Like ' " + TextBox1.Text + " % '"

توی این قسمت شما مشکل دارین. به قسمتهای قرمز شده توجه کن. یه فضای خالی در هر دو جا دارین که باعث میشه توی دیتابیش به دنبال " ح %" بگرده نه به دنبال "ح%". به همین دلیل چیزی برنمی گردونه

سمیرا دهقان
پنج شنبه 04 مهر 1387, 12:24 عصر
سلام

من کد را با توجه به صبحت های شما به شکل زیر در آوردم ولی باز سطر خالی نمایش می دهد


cmd.CommandText = "select name,family from ali where name Like '%" + TextBox1.Text + "'"

fat_roze2000
پنج شنبه 04 مهر 1387, 12:33 عصر
سلام

من کد را با توجه به صبحت های شما به شکل زیر در آوردم ولی باز سطر خالی نمایش می دهد


cmd.CommandText = "select name,family from ali where name Like '%" + TextBox1.Text + "'"


روشی که شما استفاده کردی اصلا بهینه نیست. ابتدا باید همه سطرها رو از بانک واکشی کنی. بعد روی DataTable سرچ کنی.


dsTemp.Tables(0).Select("name like '" & TextBox1.Text & "'")


این کد یه آرایه از DataRow بر میگرداند.

سمیرا دهقان
پنج شنبه 04 مهر 1387, 12:53 عصر
دوست عزیز می شود بیشتر توضیح بدهید

کجا باید از این کد استفاده کرد

آیا این % کاراکتر را نمی خواهد ؟

سمیرا دهقان
پنج شنبه 04 مهر 1387, 12:55 عصر
راستی من با datatable کار نکرده ام می شود یه خورده درباره آن توضیح دهید

ali_md110
پنج شنبه 04 مهر 1387, 14:05 عصر
من فکر کنم دوستمون جستجوی در لحظه میخان انجام بدن

Public Sub SearchLike(ByVal table As String, ByVal Field As String, Optional ByVal objsearch As Object = "txtsearch", Optional ByVal Dvgrid As Object = "DataGridView1")

Dim CNN As OleDbConnection
Dim DS As New DataSet
Dim Adapter As OleDb.OleDbDataAdapter
Dim cnnstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb"
CNN = New OleDbConnection(cnnstr)
Dim SQL As String = "select * from " & table
Adapter = New OleDbDataAdapter(SQL, CNN)

Adapter.Fill(DS, table)
With DS.Tables(table)
.DefaultView.RowFilter = Field & " like '%" & objsearch.ToString & "%'"
Dvgrid.DataSource = .DefaultView
End With
End Sub
بدین صورت استفاده کنید

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
SearchLike("Table1", "name", TextBox1.Text, DataGridView1)
End Sub
ارگومان اول نام جدول ارکومان دوم نام فیلد سوم نام کنترل مانند تکست باکس و چهارم هم یک دیتاگراید ویو

student12
پنج شنبه 04 مهر 1387, 14:14 عصر
با سلام.

شما در قسمت Form_Load گفتید که Datagrid رو پر کنه؟ ( SqlDataAdapter1.fill(dataset1

میتونین textbox بذارید ازین کد هم میشه استفاده کرد:

TextBox1_TextChanged


& "*'" DataView1.RowFilter = "name like'" & TextBox1.Text