PDA

View Full Version : سوال: جست و جوي پويا



myazdani
چهارشنبه 11 خرداد 1390, 08:22 صبح
سلام
من ميخوام يه برنامه جست و جوي پويا بنويسم كه كاربر فيلدهاي دلخواهش رو مقدار دهي كنه و جست و جو بر اساس اون فيلدها انجام بشه

يه دستور select پارامتر دار نوشتم و مقدار پارامترها رو برابر مقادير تكست باكسها قرار دادم. ولي مشكل اينه كه مثلا اگر كاربر فقط بر اساس فيلد نام خانوادگي جست و جو كنه برنامه مياد ركوردهايي رو به عنوان نتيجه نشون مي ده كه فقط مقدار نام خانوادگي شون برابر مقدار وارد شده كاربر باشه و بقيه مقاديرش null باشه . يعني مثلا اگر دو ركورد داشته باشيم كه مقدار نام خانوادگي شان برابر مقدار وارد شده توسط كاربر باشه يكي شون همه فيلدهاش مقداردهي شده باشه يكي شون فقط نام خانوادگي ش و بقيه فيلدها برابر null فقط مياد ركورد دوم رو براي نتيجه نشون ميده.

تو تالار رو با عنوان جست و جوي پارامتري و عناويني از اين قبيل جست و جو كردم جوابمو پيدا نكردم
لطفا اگر كسي مي دونه كمك كنه
خيلي فوريه متشكرم

ma.rad
چهارشنبه 11 خرداد 1390, 09:26 صبح
من با همین عنوان تاپیک ایجاد کردم جستجو کنید :چشمک:

یوسف زالی
چهارشنبه 11 خرداد 1390, 09:26 صبح
سلام.
برای این کار این جور رفتار کن:

select *
from TBL
where (Cond1 = @Cond or @Cond = 0)
or
(Cond2 = @Cond2 or @Cond2 = 0)
or
.
.



برای فیلدهای خالی هم صفر بفرست . یا هر چیز دیگه ای.
فقط نکتش اینجاست که @Cond نوعش چی باشه و Default مقایسه شما چی هست. مثلا اینجا صفره.

amir65gh
چهارشنبه 11 خرداد 1390, 10:12 صبح
dynamic queryبهترین روش برای این کار هست.
تو فرم مورد نظر کنار هر پارامتر یه چک باکس قرار بده و در زمان اجرا هر کدوم از چک باکسها که تیک خورده بود مقدار پارامتر منتسب به اونو رو سرور بفرست. فقط یادت باشه Select راباید در این روش توی دکمه مورد نظر بسازی نه سرور یعنی روی client دستور select را بساز و روی سرور اجرا کن.


string selstr = "select * from table1 where 1=1";
if (chekboxName.Checked) selstr += "and name like '%" + textboxName.text + "%'";
...


موفق باشید.

myazdani
چهارشنبه 11 خرداد 1390, 10:22 صبح
من با همین عنوان تاپیک ایجاد کردم جستجو کنید :چشمک:

از راهنمايي هاي مفيد همه دوستان متشكرم

متاسفانه نتونستم تاپيك شما رو پيدا كنم اگر امكان داره و زحمت نيست لينكش رو قرار بديد

به هر حال از لطفتون ممنونم با اين توضيحات مي تونم مشكلمو حل كنم

Boy_nn
چهارشنبه 11 خرداد 1390, 10:30 صبح
برای حل این مشکل بهتره به جای عبارت "="
از عبارت like استفاده کنید
این جوری هم مشکلتون حل میشه هم جستجو یی که انجام میدید قوی تر میشه