PDA

View Full Version : سوال: مشکل در جست و جو اطلاعات در بانک اطلاعاتی



amin_sltny
شنبه 06 اسفند 1390, 09:11 صبح
سلام.یه مشکل عجیب در برنامه کتابخانه ای که با بانکه اطلاعاتی sql express 2008 ساخته ام دارم.مشکل من اینه که مثلا وقتی اسم یه کتاب مثل ریاضی را تو تtextbox مینویسم اونا نمی جوره اما وقتی خودم نام اون کتاب و از لیست کپی میکنم و داخل همون textbox می نویسم اونا می جوره کد جست و جومم به صورت زیره:
ObjectAlmas.DataAdapter.SelectCommand.CommandText = "select * from Book where Name like '" + "%" + textBox1.Text + "%" + "'";

ممنون میشم کمکم کنید!

kimm66
شنبه 06 اسفند 1390, 09:54 صبح
قبل از % اول کلمه N رو بزار تا فرسی رو تشخیص بده. یعنی کدت بشه این :ObjectAlmas.DataAdapter.SelectCommand.CommandText = "select * from Book where Name like N'%" + textBox1.Text + "%'";

vahdani_d
شنبه 06 اسفند 1390, 09:58 صبح
بله من هم فکر میکنم به قول دوست خوبم kimm این قسمت کدتون مشکل داره

'" + "%" + textBox1.Text + "%" + "'";

و باید به شکلی که گفته شد یعنی

N'%" + textBox1.Text + "%'";
نوشته بشه

vahdani_d
شنبه 06 اسفند 1390, 09:59 صبح
بله من هم فکر میکنم به قول دوست خوبم kimm این قسمت کدتون مشکل داره

'" + "%" + textBox1.Text + "%" + "'";

و باید به شکلی که گفته شد یعنی

N'%" + textBox1.Text + "%'";
نوشته بشه

amin_sltny
شنبه 06 اسفند 1390, 10:25 صبح
من این کارم کردم اما جواب نداد

Arash_janusV3
شنبه 06 اسفند 1390, 11:12 صبح
درود
type فیلد name چیست؟

firoozi90
شنبه 06 اسفند 1390, 11:19 صبح
سلام.
شما دستور SQL رو درست ننوشتیت.نباید رشته ها رو اینجور به هم پیوند بدید.مگر اینکه یه متغیر باشه(مثلا textbox4.text) از روش زیر استفاده کن حتما جواب می گیری.


da = new SqlDataAdapter("SELECT * FROM BARNAME WHERE ONVAN LIKE N'" + txtonvan.Text + "%'", con);

amin_sltny
شنبه 06 اسفند 1390, 12:27 عصر
سلام.
شما دستور SQL رو درست ننوشتیت.نباید رشته ها رو اینجور به هم پیوند بدید.مگر اینکه یه متغیر باشه(مثلا textbox4.text) از روش زیر استفاده کن حتما جواب می گیری.


da = new SqlDataAdapter("SELECT * FROM BARNAME WHERE ONVAN LIKE N'" + txtonvan.Text + "%'", con);


این کارا دوست عزیزمون هم قبلش گفته بود ومن هم گفتم که این کار را کردم نشد.

Hybrid
شنبه 06 اسفند 1390, 12:41 عصر
سلام ، خیلی عجیبه با این روش ها مشکلتون حل نشده ! اگه امکان داره همه ی کد مربوط به دکمه ی جستجو رو قرار بدین.

amin_sltny
شنبه 06 اسفند 1390, 12:52 عصر
سلام ، خیلی عجیبه با این روش ها مشکلتون حل نشده ! اگه امکان داره همه ی کد مربوط به دکمه ی جستجو رو قرار بدین.



اینم تمام کدم در جست و جو

switch (comboBox2.Text)
{
case "کد دیویی":
ObjectAlmas.DataAdapter.SelectCommand.CommandText = "select * from Book where ID like N'%" + textBox1.Text + "%'";
break;
case "نام کتاب":
ObjectAlmas.DataAdapter.SelectCommand.CommandText = "select * from Book where Name like N'%" + textBox1.Text + "%'";
break;
case "نام نویسنده":
ObjectAlmas.DataAdapter.SelectCommand.CommandText = "select * from Book where Writer like N'%" + textBox1.Text + "%'";
break;
}
ObjectAlmas.Dataset.Tables["Book"].Clear();
ObjectAlmas.DataAdapter.Fill(ObjectAlmas.Dataset, "Book");
bookview.DataSource = ObjectAlmas.Dataset;
bookview.DataMember = "Book";

vahdani_d
شنبه 06 اسفند 1390, 13:40 عصر
SqlConnection opendb = new SqlConnection();
opendb.ConnectionString = "Data Source=VAHDANI-PC;Initial Catalog=DBtest;Integrated Security=True";
SqlDataAdapter DA = new SqlDataAdapter();
DA.SelectCommand = new SqlCommand();
DA.SelectCommand.Connection = opendb;
DA.SelectCommand.CommandType = CommandType.Text;
switch (comboBox1.Text)
{
case "نام خانوادگی":
DA.SelectCommand.CommandText = "Select * from member where famili like '%" + textBox6.Text.Trim() + "%'";
break;
case "نام کاربری":
DA.SelectCommand.CommandText = "Select * from member where username like '%" + textBox6.Text.Trim() + "%'";

break;
case "تلفن":
DA.SelectCommand.CommandText = "Select * from member where sen like '%" + textBox6.Text.Trim() + "%'";
break;
}

opendb.Open();
DataTable dt = new DataTable();
DA.Fill(dt);
dataGridView1.DataSource = dt;

opendb.Close();

این کد رو تست کردم جواب میده ببین کارتون رو راه میندازه ؟

amin_sltny
یک شنبه 07 اسفند 1390, 08:54 صبح
دوست عزیز این کارم مشکلمو حل نکرد.ولی همین الان یه چیز دیگه فهمیدم.کلمه استاتیک را که جزو کلمه ها بود زدم که پیدا کنه اما پیدا نکرد بعد کلمه را به استاتی تغییر دادم بازم پیدا نکرد ولی وقتی ی را حذف کردم یعنی وقتی شد استات اونا پیدا کرد و جدول دیگه خالی نبود.

vahdani_d
یک شنبه 07 اسفند 1390, 09:08 صبح
من فکر میکنم مشکل دیگه از برنامه و کدهاتون نمیتونه باشه
احتمال نمیدین فارسی نیست و عربیه ؟
توی کنترل پنل زبان رو میگم اونم ی بار چک کنید شاید درست شد یا اینکه از کلید ترکیبی شیفت و سی یا ایکس یا هر کلیدی که ی تایپ میکنه استفاده کنید برای تست ببینیم درست میشه ؟!

amin_sltny
یک شنبه 07 اسفند 1390, 09:14 صبح
درسته مشکل همین بود که گفتید با شیفت و ایکس ی را نوشتم درست شد.نمیشه این مشکلا یه جور درستش کرد؟

moslem68
چهارشنبه 02 فروردین 1391, 11:22 صبح
sqlcom.CommandText = "Select * From Table1 Where Id Like 'N %" + TextBox1.Text + " N %' And Name Like 'N %" + TextBox2.Text + " N %' And Family Like 'N %" + TextBox3.Text + "N %'";

وقتی N ها بردارم روی انگلیسی جواب میده ولی تو فارسی جواب نمیده نوع فیلد ها NVARCHAR هستن ؟!

amin_sltny
چهارشنبه 02 فروردین 1391, 13:52 عصر
N برای اینه که حروف های فارسی را به صورت کد ذخیره کنه بنابراین وقتی شما N ها را برمیداری نمی تونه حروف فارسی را بشناسه.

moslem68
چهارشنبه 02 فروردین 1391, 14:36 عصر
N برای اینه که حروف های فارسی را به صورت کد ذخیره کنه بنابراین وقتی شما N ها را برمیداری نمی تونه حروف فارسی را بشناسه.
چه طوری اصلاحش کنم ؟

amin_sltny
چهارشنبه 02 فروردین 1391, 14:47 عصر
چه طوری اصلاحش کنم ؟

خب شما موقع وارد کردن اطلاعات اگه در دستور insert قبل از اطلاعات از N استفاده کنید و در جست و جو هم از N استفاده کنید مشکلی نداره هم فارسی را میشناسه و هم انگلیسی.

کد insert:


"insert into table1 values(N'"+textbox1.text+"')";

moslem68
چهارشنبه 02 فروردین 1391, 14:50 عصر
تو insert از این قاعده استفاده کردم
فارسی ثبت میشه ولی تو جستجو جواب نمیده فارسی رو
Select * From Table1 Where Id LIKE n ' % " + TextBox1.Text.TrimStart() + " %' And Name Like n ' %" + TextBox2.Text.TrimStart() + " %' And Family Like n ' %" + TextBox3.Text.TrimStart() + " %'"

کد جستجو ش

hekmatpour1362
چهارشنبه 02 فروردین 1391, 14:52 عصر
سلام
شاید یکی از مشکلات نحوه نوشتن دستورات SQL باشد ولی من هم با این مشکل روبه رو شدم آن هم نوع کارکترهای حرف ی و ک می باشد شما یک بار کلمه ریاضی را با ی معمولی بنویسید و یک بار هم حرف ی را یا کلید Ctrl +xکنید

moslem68
چهارشنبه 02 فروردین 1391, 16:23 عصر
با sp حل شد
CREATE PROCEDURE liking
@id nchar(10),
@Name nvarchar(50),
@Family nvarchar(50)


as
begin
SELECT *
FROM Table1
WHERE id = @id
OR Name LIKE @Name
OR Family LIKE @Family

end

barnamenevisforme
چهارشنبه 02 فروردین 1391, 16:25 عصر
سلام
با عرض تبریک سال نو به همه دوستان
اگه فقط مشکل جستجوی شما با کلماتی از قبیل ریاضی هست به احتمال زیاد من حدس میزنم جستجوی شما حساس به حرف ی که راه حلشم اینه که به جای ی از ي استفاده کنید.(یعنی shift +x).