PDA

View Full Version : سوال: گزارش گیری بر اساس چک باکسهایی که تیک خورده اند



maaaaaa
دوشنبه 21 بهمن 1387, 13:18 عصر
با سلام به دوستان

برنامه ای دارم مینویسم با visual studio-زبان #c و تكنولوژي asp.net -از دیتابیس access استفاده کردم،جدولی دارم که حدود 16 فیلد با دیتا تایپ yes/no داره-مثلا 3 تا از فیلدها
rozaname_nevisi،akasi,film_bardari هست.
در پرکردن این 16 فیلد مشکلی ندارم-
میخوام گزارشی بسازم که در روی فرم آن 16 چک باکس فوق آورده شده و
وقتی که کاربر هر کدام از این چک باکس ها را تیک زد ،میخوام نتیجه select تمام رکوردهایی را بر گردونه که فیلدهای متناسب با اون چک باکسها در دیتابیس مقدارشون true هست. (مثلا 2 چک باکس عکاسی و فیلمبرداری در روی فرم تیک خورده اند حالا نتيجه select بره ركوردهاي را برگردونه که فیلد عکاسی و فیلمبرداریشان true هست.)

البته میخوام نتیجه select را در گرید ویو نیز ببینم.

1 تصویر هم از فرم گزارشم گذاشتم.
ممنون میشم راهنماییم کنید-خیلی خیلی زیاد به کمکتون نیاز دارم-
با تشکر فراوان.

jafarnia
دوشنبه 21 بهمن 1387, 20:25 عصر
توضيح مسئله اصلا واضح نيست. فايلهاي پروژه يا بخشي از آن كه بيانگر صورت مسئله و قابل اجرا باشد را ارسال كنيد تا مشكل رو حل كنم.

kh1387
دوشنبه 21 بهمن 1387, 21:10 عصر
با سلام
یه راه حل اینه که تمامی اطلاعات رو از جدول fetch کنی بعدش هر کدوم که true بود در صفحه نمایش بدی.
البته عیب این روش اینه که اگه اطلاعات زیاد باشه با کندی سرعت مواجه خواهی شد.

mh19842008
سه شنبه 22 بهمن 1387, 16:46 عصر
با سلام
برای این کار روش هایی وجود داره یک روش میتونه این باشه که یک تابع شامل دستور select..case داشته باشی حاوی 16 case شامل دستور واکشی اطلاعات (select)که برای هر چک باکس تیک خورده فراخوانی بشه ویک تابع برای واکشی اطلاعات که دستور select اون متغیره باشه وبرای چک باکس تیک خورده فراخوانی بشه در بدترین حالت 16 تا چک خورده باشند که در این حالت میتونی یک دستور شرطی بنویسی و تمام رکورد ها رو واکشی کنی
البته این تنها را نیست

maaaaaa
چهارشنبه 23 بهمن 1387, 11:35 صبح
در ارتباط با سوال آقای جعفر نیا

دیتا بیسم 16 فیلد از نوع yes/no داره ،در صفجه گزارشم 16 فیلد را هم طبق تصویر دیدید،

سوالم اینه که کاربری ممکن است اطلاعات افرادی را بخواد که مثلا 2 چک باکس عکاسی و فیلمبرداری آن تیک خورده

و کاربری دیگر ممکن است اطلاعات افرادی را بخواد که 4 تا از اون چک باکسها تیک خورده باشند

در شرط where دستور select نميدونم چی بنویسم

"select * from tbl_main where.."

فکر میکنم شرط where بایستی به صورت پویا نوشته شود و نه ایستا،فکر میکنم تعداد چک باکسها در شرط select باید پویا باشد.

غیر منطقی هست که من در دکمه گزارشم 16 چک باکس را and کنم و کد زیر را بنویسم:

AccessDataSource2.SelectCommand = "select code_meli as 'کد ملی', name as 'نام',lname as 'نام خانوادگی',telephone as 'تلفن',email as 'Email' from tbl_main where (akasi=" + (chk_akasi1.Checked) + " and rozname_nevisi=" + (chk_rozname_nevisi1.Checked) + " and tadvin_film=" + chk_tadvin_film1.Checked + ")";

لطفا دوستان خیلی زیاد کمکم کنید

Copricorn
چهارشنبه 23 بهمن 1387, 11:41 صبح
با سلام
دوست عزیز میتونی Value اون CheckBox ها رو توی یک پارامتر به دستور SQL پاس بدی و Select بزنی
مثلا:



create proc sp_check
@prm nvarchar(20)
as
begin
declare @qq nvarchar(200)
set @qq='select * from tablename
where fieldname in ('+@prm+')'

EXECUTE dbo.sp_executesql @qq

end


اگر مقداری که توی چک باکس ها بایند میشه رو توی یک جدول دیگه گذاشتید بهتره Value اون CheckBox ها رو برابر با ID قرار بدین و توی دستور بالا IDهارو پاس بدید
@prm رو از توی برنامه به SP پاس بدید

maaaaaa
چهارشنبه 23 بهمن 1387, 12:47 عصر
دوست عزیز

من از access استفاده کردم.

maaaaaa
چهارشنبه 23 بهمن 1387, 12:49 عصر
سلام ،
من از دیتابیس access استفاده کردم

milade
چهارشنبه 23 بهمن 1387, 13:05 عصر
"Select * from tbl_name where field=" & box1.Checked & " and field2=" & box2.checked"
این برا دو تا قیلدش بود
خودت دستور رو گسترش بده
موفق باشی

Copricorn
چهارشنبه 23 بهمن 1387, 15:16 عصر
از دستور به این شکل استفاده کن:


"select * from tablename where fieldname in ("+IDs+")"
منظور از IDs نام متغیری هست که Valueهای CheckBoxها را در آن قرار دادید
Valueهارا با "," از هم جدا کنید
مثلا:


Dim str as string="2,3,4"
البته str باید توی برنامه بصورت داینامیک ساخته بشه

maaaaaa
شنبه 26 بهمن 1387, 10:40 صبح
با تشکر از همه دوستان

سلام

مشکل این جاست که من اگر در شرط select بخوام 16 تا checkbox را and کنم هیچ نتیجه ای برگردانده نمیشه و اگر بخوام 16 تا checkbox را or کنم تمام اطلاعات بر گردانده میشه
حالا چه اونایی که فیلد عکاسیشون در فرم ثبت اطلاعات تیک خورده چه اونایی که تیک نخورده و ...


"+select * from tbl_main where akasi="+chk_akasi.checked

"+ and film_bardari="+chk_film

and ......