PDA

View Full Version : سوال: مشکل در شناسایی فیلدهای فارسی برای عملیات گزارش گیری



veniz2008
یک شنبه 14 شهریور 1389, 17:04 عصر
سلام دوستان،من میخوام واسه پروژه دفترچه تلفن خودم براساس تلفن و "نام و نام خانوادگی" گزارش گیری کنم،گزارش گیری بر اساس شماره تلفن رو بدون مشکل انجام میدم ولی وقتی جستجو رو براساس نام و نام خانوادگی انجام میدم،فیلدهای نام و نام خانوادگی رو که بصورت فارسی در sql ذخیره شدن نمیشناسه،(کلا جستجو براساس هیچ فیلد فارسی دیگه ای رو هم تشخیص نمیده)،از کد زیر هم برای جستجو استفاده میکنم:

if (textBox1.Text == reader["name"].ToString().TrimStart())

veniz2008
یک شنبه 14 شهریور 1389, 18:48 عصر
با سلام.

میشه کلا کدت رو بذاری

یا یک نمونه برنامه بذار تا بشه راحتر فهمید و بهتر جواب داد.

و راستی چرا؟ TrimStart ؟
trimstart برای حذف فضاهای خالی پشت سر رشته فارسی بکار میره.

veniz2008
یک شنبه 14 شهریور 1389, 21:28 عصر
trimstart برای حذف فضاهای خالی پشت سر رشته فارسی بکار میره.
کسی نیست مشکل گشای کار ما بشه؟؟

shirko_r
دوشنبه 15 شهریور 1389, 09:33 صبح
سلام دوستان،من میخوام واسه پروژه دفترچه تلفن خودم براساس تلفن و "نام و نام خانوادگی" گزارش گیری کنم،گزارش گیری بر اساس شماره تلفن رو بدون مشکل انجام میدم ولی وقتی جستجو رو براساس نام و نام خانوادگی انجام میدم،فیلدهای نام و نام خانوادگی رو که بصورت فارسی در sql ذخیره شدن نمیشناسه،(کلا جستجو براساس هیچ فیلد فارسی دیگه ای رو هم تشخیص نمیده)،از کد زیر هم برای جستجو استفاده میکنم:

if (textBox1.Text == reader["name"].ToString().TrimStart())


----
درغیر اینصورت اگه اطلاعات وارد شده فارسی است پیشنهاد میکنم که اسمی و که میخوای جستجو کنی از داخل دیتا بیس کپی پیست کنی اگه نتونستی ببینیش دقت کن ببین اون اسم شامل حرف ی و یا حرف ک نباشه مثلا محمد رو جستجو کن اگه پیدا کرد یعنی کد درسته و فقط مشکلت با حروف ی و ک هستش در غیر اینصورت کد شما اشتباس

veniz2008
دوشنبه 15 شهریور 1389, 11:34 صبح
----
درغیر اینصورت اگه اطلاعات وارد شده فارسی است پیشنهاد میکنم که اسمی و که میخوای جستجو کنی از داخل دیتا بیس کپی پیست کنی اگه نتونستی ببینیش دقت کن ببین اون اسم شامل حرف ی و یا حرف ک نباشه مثلا محمد رو جستجو کن اگه پیدا کرد یعنی کد درسته و فقط مشکلت با حروف ی و ک هستش در غیر اینصورت کد شما اشتباس

نه عزیزان،عنوان فیلد در sql بصورت انگلیسی هستش(اسم فیلد name هستش)،مقادیر وارد شده رو بصورت فارسی وارد کردم،مثلا"رضا خجسته"،حالا وقتی در textbox1 مقدار "رضا خجسته" رو وارد میکنم،اونو شناسایی نمیکنه،ولی اگه یه نام انگلیسی ثبت کنم مثلا "reza khojaste" و بعدش این نام انگلیسی رو جستجو میکنم،شرط برقرار میشه،حالا به نظرتون مشکل کجاست؟اینم بخشی از کد برنامه(tell نام جدول ثبت تلفن هاست،فیلد نام رو در sql از نوع nchar

cmd.Connection = con;


SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = con;
cmd1.CommandText = "SELECT * FROM tell";
con.Open();


SqlDataReader reader = cmd1.ExecuteReader();

int i = 0;
while (reader.Read() == true)
{
if (textBox1.Text == reader["name"].ToString().TrimStart())
{

veniz2008
سه شنبه 16 شهریور 1389, 13:26 عصر
کد رو بصورت زیر تغییر دادم ولی مشکل برای فیلدهای فارسی پابرجاست

cmd.Connection = con;


SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = con;
cmd1.CommandText = "SELECT * FROM tell WHERE name=N'" + textBox1.Text + "'";
con.Open();


SqlDataReader reader = cmd1.ExecuteReader();

int i = 0;
while (reader.Read() == true)
{
if (textBox1.Text == reader["name"].ToString().TrimStart())
{

Reza_Yarahmadi
سه شنبه 16 شهریور 1389, 14:27 عصر
كدت رو بصورت زير تغيير بده ببين درست ميشه يا نه

SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = con;
cmd1.CommandText = "SELECT * FROM tell WHERE name LIKE @Name";
cmd1.Parameters.AddWithValue("@Name", textBox1.Text);
con.Open();