PDA

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



محمد هدایتی
چهارشنبه 13 مرداد 1389, 22:09 عصر
من یک کد جستجو نوشتم که از متد find استفاده می کنه وقتی بر اساس کد پرسنلی search می کنم درست جواب میده اما وقتی بر اساس نام فارسی search می کنم اطلاعات رکورد های قبلی یا بعدی را نشان می دهد کسی می دونه چرا این جوری می شه؟
اگر می شه کامل توضیح بدید من صفر کیلومترم!در ضمن برنامم با sql2008 کار می کنه!

AliRezaPro
چهارشنبه 13 مرداد 1389, 22:40 عصر
اما وقتی بر اساس نام فارسی search می کنم اطلاعات رکورد های قبلی یا بعدی را نشان می دهد کسی می دونه چرا این جوری می شه؟
متاسفانه زبان فارسی و یونیکد همیشه مشکل آفرین هست.تکه کد مربوطه را برای بررسی قرار بدید

sayan
پنج شنبه 14 مرداد 1389, 00:33 صبح
قبل از علامت ' حرف N بزرگ رو بنویس ببین جواب می ده یا نه
یعنی اینطوری:

select * from Users where name=N'رضا'

wolf_majid
پنج شنبه 14 مرداد 1389, 00:44 صبح
قبل از علامت ' حرف N بزرگ رو بنویس ببین جواب می ده یا نه
یعنی اینطوری:

select * from Users where name=N'رضا'


این هم تست کن

select * from Users where name like [نام مورد نظر شما]
برای کلمات فارسی از [] استفاده کن

محمد هدایتی
پنج شنبه 14 مرداد 1389, 14:04 عصر
private void button1_Click(object sender, EventArgs e)
{
SqlConnection objConnection = new SqlConnection("Data Source=.;Initial Catalog=Hospital;Integrated Security=True");
SqlCommand objCommand = new SqlCommand();
objCommand.Connection = objConnection;
SqlDataAdapter objDataAdapter = new SqlDataAdapter();
DataSet objDataSet = new DataSet();
objDataAdapter.SelectCommand = new SqlCommand();
objDataAdapter.SelectCommand.Connection = objConnection;
objDataAdapter.SelectCommand.CommandText = "select * from Bimar";
objDataAdapter.SelectCommand.CommandType = CommandType.Text;
objConnection.Open();
objDataAdapter.Fill(objDataSet, "search");
objConnection.Close();
DataView objDataView = new DataView(objDataSet.Tables["search"]);
CurrencyManager objcurrency;
objcurrency = (CurrencyManager)(this.BindingContext[objDataView]);
objDataView.Sort = "NamBimar";
int p = objDataView.Find(textBox2.Text);
objcurrency.Position = p;
textBox1.Text = p.ToString();
dataGridView1.DataSource = objDataSet;
if (p == -1)
MessageBox.Show("error");
else
{

DataTable t;
t = objDataSet.Tables["search"];
textBox4.Text = t.Rows[p]["sen"].ToString();
textBox5.Text = t.Rows[p]["CodeMeli"].ToString();
textBox3.Text = t.Rows[p]["PkParvandeId"].ToString();
}
}
اینم کدش در ضمن من می خوام از متد find استفاده کنم

rozegar21
شنبه 16 مرداد 1389, 16:48 عصر
دوست عرزیز من امروز همین مشکل رو داشتم از پارامتراستفاده کردم مشکلم حل شد

محمد هدایتی
شنبه 16 مرداد 1389, 22:09 عصر
یعنی چه طوری می شه کدشو بزاری یه کم توضیح بدی ممنون می شم

rozegar21
شنبه 16 مرداد 1389, 23:23 عصر
string query1 = "select name as نام,ghymat as قیمت,tedad as ' تعداد موجود در انبار',tarjome as مترجم,nevisande as نویسنده from ketab where nevisande=@nevisande";
SqlCommand cm = newSqlCommand(query1, con);
SqlDataAdapter myadaptor = newSqlDataAdapter();
cm.Parameters.Add("nevisande", SqlDbType.NVarChar).Value = TextBox2.Text; ;
myadaptor.SelectCommand = cm;
myadaptor.InsertCommand = cm;
DataSet mydatset = newDataSet();
.
.
.


من این کاروکردم اگه دقت کنی پارامتر نوعش رو nvarchar گذاشتم که نوع فیلد نویسندهnvarchar هست