PDA

View Full Version : سوال: مشکل در گزارش گیری از مقادیر فارسی



veniz2008
سه شنبه 16 شهریور 1389, 18:22 عصر
سلام،من میخوام گزارش گیری بر اساس "نام و نام خانوادگی" داشته باشم(عنوان فیلد در جدول sql برابر name هستش و طولش رو هم 20 گرفتم)،واسه اسامی که انگلیسی ثبت میکنم بدون هیچ مشکلی گزارش گیری میکنم ولی اسامی رو که بصورت فارسی در جدول sql ثبت کردم با مشکل مواجه میشه و اونا رو نمیشناسه،مگر در 2 حالت:اول: وقتی مقادیر فارسی رو از جدول sql کپی و paste میکنم،اونو میشناسه و دوم:مثلا اگر بخوام واسه اسم "رضا"عمل گزارش گیری کنم باید بعد از تایپ کلمه "رضا" 17 بار دکمه space رو بزنم تا بتونه اونو تشخیص بده(تا برابر طول 20 که درواقع اندازه رشته من در sql هست بشه)،از تابع trimstart هم برای حذف فضاهای خالی پشت سر رشته ورودی استفاده کردم ولی مشکلم برطرف نمیشه،ممنون میشم راهنمایی کنید،اینم بخشی از کد برنامم:

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())
{

Saman Hashemi
سه شنبه 16 شهریور 1389, 18:33 عصر
سلام،من میخوام گزارش گیری بر اساس "نام و نام خانوادگی" داشته باشم(عنوان فیلد در جدول sql برابر name هستش و طولش رو هم 20 گرفتم)،واسه اسامی که انگلیسی ثبت میکنم بدون هیچ مشکلی گزارش گیری میکنم ولی اسامی رو که بصورت فارسی در جدول sql ثبت کردم با مشکل مواجه میشه و اونا رو نمیشناسه،مگر در 2 حالت:اول: وقتی مقادیر فارسی رو از جدول sql کپی و paste میکنم،اونو میشناسه و دوم:مثلا اگر بخوام واسه اسم "رضا"عمل گزارش گیری کنم باید بعد از تایپ کلمه "رضا" 17 بار دکمه space رو بزنم تا بتونه اونو تشخیص بده(تا برابر طول 20 که درواقع اندازه رشته من در sql هست بشه)،از تابع trimstart هم برای حذف فضاهای خالی پشت سر رشته ورودی استفاده کردم ولی مشکلم برطرف نمیشه،ممنون میشم راهنمایی کنید،اینم بخشی از کد برنامم:

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())
{
کدهای اشکالی نداره تو تاپیک قبلی هم دوستان اشاره کردند.شما باید به دنبال اشکال در سمت sql server بگردید.فیلدها را با nvarchar یا nchar تعریف کردید؟

veniz2008
چهارشنبه 17 شهریور 1389, 00:33 صبح
کدهای اشکالی نداره تو تاپیک قبلی هم دوستان اشاره کردند.شما باید به دنبال اشکال در سمت sql server بگردید.فیلدها را با nvarchar یا nchar تعریف کردید؟
هم با nchar و هم با nvarchar تست کردم،مشکل اینجاست که وقتی نام فارسی مورد نظر رو در textbox درج میکنم خودش بصورت اتوماتیک نمیتونه فضاهای خالی رو حذف کنه(با توجه به تابع trimstart ای که براش نوشتم)

persian_bigboy
چهارشنبه 17 شهریور 1389, 23:30 عصر
والا شما بیا از دستور Trim خالی استفاده کن ، راستی اگر از javasript فارسی نویسی استفاده میکنی اونا ایراد دارن و کلا سرور اون رو به عنوان یک کاراکتر فضای خالی نمی شناسه ، اگه اونو عوض کنی مشکلت حل میشه .
دوست دار پیشرفت شما میثم