PDA

View Full Version : جستجو بر اساس چند فیلد



saber4166
سه شنبه 18 تیر 1387, 17:05 عصر
جستجوی من بر اساس چند فیلد به شکل زیر نمی دونم این طور که نوشتم درسته یا نه
این کد error میده خواهش مکنم و تقاضا میکنم به من بگین چه کار کنم
کد اصلی برای جستجو در خط های اخر این form نوشته شده

hdv212
سه شنبه 18 تیر 1387, 20:39 عصر
دوست عزیز، اصل مشکل+سورس کد+متن خطا رو بگو.

ebtekar
سه شنبه 18 تیر 1387, 21:20 عصر
واسه دیتا آداپتر یه در خواست اسکیول بنویس و با where و nad های متوالی این کار رو انجام بدید این راه سادشه راه بهتر می خوای باید با ado کار کنی

saber4166
سه شنبه 18 تیر 1387, 23:22 عصر
حداقل دوستان یک کد کامل از طرف خودتون که مطمئن هستید درست کار
می کنه به من بدین:افسرده::ناراحت:

naeeme
چهارشنبه 19 تیر 1387, 08:10 صبح
متاسفانه شما خطایی که دیدین رو نگفتین. اما مطمئنا این کد خطا میده چون در هنگام نوشتن sql فاصله گذاری رو رعایت نکردین

این کدی هست که شما نوشتین



da.SelectCommand.CommandText = "SELECT * FROM amar" +
"WHERE noekala=N'" + comboBox1.Text +
"' OR model=N'%" + textBox1.Text
+ "%' OR shomaremodel=N'%" +
Convert.ToInt16(textBox2.Text) + "%' " +
" OR shomareamval=N'%" +
Convert.ToInt16(textBox3.Text) +
"%' OR shomareseryal=N'%" +
Convert.ToInt16(textBox4.Text) + "%' OR " +
" makan=N'%" + textBox5.Text +
"%' OR namemarkaz=N'%" + textBox6.Text + "%' ";


به نقاط قرمز شده دقت کنین. حاصل این میشه


amarWHERE noekala

یکی از خطاهاتون این می تونه باشه

--------
لطفا از این به بعد حتما خطایی که دیدن رو بذارین. درواقع همون چیزهایی که hdv212 گفتند!!

saber4166
چهارشنبه 19 تیر 1387, 15:16 عصر
ببخشید دوستان خطای زمان اجرا میده ودقیقا روی string ای که نوشتم برنامه ی در
حال اجرا رو stop میزنه و یک صفحه باز میشه و خط اول میگه
Input string was not in a correct format.
انگار مثل زمانی که نتونه این کد رو اجرا کنه :ناراحت::افسرده:
اگه میتونید یه کد بدین که این مشکله من رو حل کنه واز کد شما استفاده کنم
بسیار ممنون میشم
اصلا انگار این کد درست اعمال نمی شه
خواهش میکنم یه کد که مشکلم رو حل کنه به من بدین
دوست عزیزم naeeme این نکته ای رو که گفتی هم نیست

naeeme
چهارشنبه 19 تیر 1387, 15:19 عصر
اون قسمتی که من نشون دادم رو دست کردین؟ اگه quickwatch کنین هم می تونین sql تولیدی خودتون رو ببینین. این جوری راحت تر متوجه خطاتون میشین.

کدتون رو به این صورت درست کنین

"SELECT * FROM amar " +
" WHERE noekala=N'" + comboBox1.Text +


یه سوال:
چرا Convert.ToInt16؟؟ خود تکست باکس رو بذارین!

saber4166
چهارشنبه 19 تیر 1387, 15:31 عصر
اخه درون بانکم از نوع int گذاشتم ودر textbox از نوع string
اون پیام اولتون هم نشد راسنی اصلا این طور نوشتن من درسته:ناراحت:

jeus
چهارشنبه 19 تیر 1387, 16:23 عصر
دوست من نیازی نیست شما حتما با افراد درون این فرم صحبت کنید شما میتونید پست و تاپیک بگذارید تا به جواب برسید
اما چند نکته مهمه
1: برای نوشتن پست یا تاپیک توضیحات را کامل داده و از جزئیات بپرهیزید
2: در هر تاپیک به یک مشکل یا حداکثر 2 مشکل اشاره کنید
3: در صورت پاسخ دادن به شما و یا دادن راهکار به دقت بخوانید به کار بگیرید و نتیجه را بیان کنید
4: هیچوقت هم عجول نباشید
5: لطف کردن با وظیف فرق داره (دوستانم همه لطف میکنند )
دوست من البته قبل از اینهاgoogle و جستجو توی سایت فراموش نشه

به نوشته های بالا دقت دارند میگن آسمون شما میگید ریسمون
موفق باشی

علیرضا مداح
چهارشنبه 19 تیر 1387, 17:44 عصر
سلام دوست عزیز ،
البته این شیوه نگارش کوئری صحیح نبوده و به هیچ عنوان از امنیت و Performance بالایی برخوردار نیست و اسباب حملات SQL Injection را فراهم می آورد، به شما پیشنهاد میکنم با Stored Procedure ها و چگونگی ایجاد آنها و همچنین Parameterized Queries آشنایی پیدا نمایید ، در صمن در SQL Server برای اجرای یک کوئری داینامیک بهتر است که از Stored Procedure به نام sp_executesql استفاده نمایید ، ../

saber4166
چهارشنبه 19 تیر 1387, 23:30 عصر
هیچ کی این کار رو انجام نداده که به من یه کد بده