ورود

View Full Version : نحوه گزارش گیری در زبانهای برنامه نویسی



delphi5
شنبه 11 آذر 1391, 15:07 عصر
با سلام خدمت دوستان و سروران گرامی
من برای بار اول است که دارم روی گزارش گیری کار میکنم
نمی دونم چطور باید این کار رو انجام بدم
کلی هم توی وب دنبالش گشتم اما هیچ مطلبی رو پیدا نکردم
سوالم این است
من یه دیتا بیس دارم که درون اون چندین جدول تعریف کردم
حالا میخوام یک گزارش برای کاربرم ایجاد کنم
95861
مطابق با عکس فرم ارسالی میخوام که یک گزارش با چندین شرز ایجاد کنم که احتمال داره بعضی از فیلدها مقدار نداشته باشه
همونطور که توی عکس می بینید با انتخاب هر checkbox میشه اون شرط رو فعال کرد
حالا مشکلم اینجاست که چطور میتونم این گزارش رو بگیرم .
اگه بخوام هر شرط رو چک کنم و به ازای هر مقداری که کاربر وارد میکنه ، باید n! حالت ایجاد کنم که باز هم فکر میکنم این کار منطقی نیست.
شما چه راهکاری رو پیشنهاد میکنید ؟
پیشاپیش از اینکه وقت میزارید ازتون متشکرم

shocraneh
شنبه 11 آذر 1391, 23:16 عصر
شما باید یه لیست تعریف کنی و در صورتی که کاربر اون گزینه رو انتخاب کرد شرطت رو به لیست اضافه کنی .حالا لیست رو با and جوین میکنی و به سر رشته کوئری می چسبونی.


private List<string> arr
arr = new List<string>();
if (cmb_GradeDes.Text != "")
arr.Add("Tbl_a.GradeDes" + "=N'" + cmb_Grade.Text + "'");
tmpStr = Microsoft.VisualBasic.Strings.Join(arr.ToArray(), " AND ");

شرطت آمادست با where به سر کوئری اضافه می کنید(رشته کویری آماده میشه
البته راه بهتر پروسیجر است که شما باید برای متغییر ها از like استفاده کنی(البته برای پارامتر رشته ای فقط کاربرد داره)
select * from tbl where name like @name
حالا اگه کاربر موردی رو انتخاب نکرد به پروسیجر % رو به عنوان مقدار پارامتر ارسال میکنی

select * from tbl where name like '%'
تو اسکیوال اجراش کنید! انگار که اصلا شرطی وجود نداشته
موفق باشید

fakhravari
یک شنبه 12 آذر 1391, 09:34 صبح
select مشکلی نیست.
شما باید در در یک برنامه اونو پیاده کنید.
کریستال - استیمولیت - فست ریپورت - ریپورت وویور