PDA

نسخه کامل مشاهده نسخه کامل : امكان سرچ براساس چند فيلد؟!



halizadeh
05-10-2007, 11:19
سلام

من مي خوام امكان سرچ براي برنامه م بزارم با مثلاً حدود 7يا 8 تا فيلد كه جستجو براساس اون فيلدها باشه اما وارد كردن هيچكدوم از فيلدها الزامي نيست ...

و هر ركوردي از جدول كه با اين مشخصات برابر بود رو نشون بده مثلاً اگه 10 ركورد با اين مشخصاتي كه كاربر تعيين كرده، برابر بود هر10 تا رو نشون بده...

(برنامه هم با Asp.netو بانك اسكيوال سرور هست)

hannibalLecter
07-10-2007, 19:01
سلام
من منظور دقیق تو رو نفهمیدم اما فکر کنم با این کد ها به جایی برسی .

SELECT * FROM TableName WHERE FIeldName=1

این علامت * باعث میشه که که همه فیلد ها رو در نتیجه نمایش یده .
اما برای زیاد کردن تعداد شرط ها از دستور زیر :

SELECT * FROM TableName WHERE FielName1=1 AND FieldName2=1 ......

تا آخر و اگر هم بخواهی که تمام قیلد ها رو نمایش نده و اون ها رو محدود بکنی از دستور .

SELECT FielName1,FieldName2 FROM TableName WHERE FieldName3=1

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

از این وبلاگ هم میتونی یک چیزایی بدست بیاری
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

hamedvahedi
07-10-2007, 21:18
سلام فرض مي کنم 3 تا textbox داري که بايد مقدارش با مقدار 3 فيلد در جدول برابر بشه. روشی که پيشنهاد مي کنم سودمند است. اما مي توني بهتر هم کار کني:

dim qs as string="select * from tb_main where (1=1)"
if textbox1.text<>"" then qs+="and(field1="""+textbox1.text+""")"
if textbox2.text<>"" then qs+="and(field2="""+textbox2.text+""")"
if textbox3.text<>"" then qs+="and(field3="""+textbox3.text+""")"
بعد هم این qs را اجرا کن

halizadeh
10-10-2007, 22:43
سلام

ممنون از كمكتون ،

من توي جدولم فيلدهايي رو دارم كه مي تونند مقادير مشخصي رو داشته باشند مثلا فيلد "foriyat " مي تونه يكي از اين سه مقدار رو داشته باشه"آني، فوري ، عادي" خب من مي خوام براي سرچ ام انتخاب براي فيلد فوريت رو با چكباكس برا كاربر بزارم
مثلاً يك CheckBoxList گذاشتم اينجوري:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

يعني ميخوام اگه كاربري دوست داشت ركوردهايي رو ببينه كه فيلدشون مثلاً مقدار"آني" يا "فوري" رو داره رو پيدا كنه
خب من برا اينكار اينجوري نوشته م:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
t متغيري هست كه چك مي كنه ميگه اگه چكباكس ديگري ازاين گروه انتخاب شده بود or كن وگرنه And كه اند يعني با فيلدهاي ديگه اي مثلاً درست كردم...

ببينيد من توي فرمم چندين تكست باكس دارم كه اين چكباكسها با تكست باكس هاي پر شده اند ميشه اما گزينه هاي چكباكس با هم ديگه orميشه.

مشكل من اينه كه من اگه بخوام ازor استفاده كنم حتماً بايد پرانتزگذاري رو خودم انجام بدم وگرنه اطلاعات اشتباه بدست مييارم....

منظورم رو با مثال شفافتر مي كنم:

مثلاً من می خوام رکوردهایی که فیلد "foriyat" آنها برابر با "آنی" یا "فوری" هست و فیلد "matter" آنها برابر "تبریک" هست رو بدست بیارم،
با توجه به كوئري كه گفتم نوشتم كوئري به اين شكل در ميياد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب ، توی این کوئری از پرانتز استفاده نشده در نتیجه کوئری یه شکل دیگه اعمال میشه یعنی؛ خروجی رکوردهایی بدست مییاد که فیلد "foriyat" اون "آنی" باشه یا فیلد"foriyat" برابر با "فوری" باشه و فیلد "matter" برابر با "تبریک" باشه یعنی بصورت خودکار به این شکل خروجی در مییاد:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در حالیکه این مدنظر منه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

یعنی من باید در برنامه پرانتز گذاری رو خودم انجام بدم ....
----
به نظر شما چجوري ميتونم پرانتز گذاري رو خودم انجام بدم؟؟؟