PDA

View Full Version : جمع زیر گزارش در گزارش



انگوران
دوشنبه 11 تیر 1386, 18:11 عصر
دوستان سلام ـ در یک گزارش در قسمت persno header ( گروه بندی بر اساس شماره پرسنلی ) و در یک تکست باکس تعداد پرسنل را شمردم و با یک subreaport تعداد همراهان را
1-چطوری میتونم در یه تکست باکس دیگه جمع تعداد پرسنل و تعداد همراهان را داشته باشم ( یعنی تکست باکس رو ی گزارش و تکست باکس داخل زیر گزارش با هم جمع بشن ) .
2- چطوری میتونم در قسمت reaport footer جمع تعداد همراهان را داشته باشم .

mazoolagh
دوشنبه 11 تیر 1386, 22:44 عصر
1- شما میتونین یک textbox از نوع unbound بگذارین و control source اون رو مجموع اون دو Textbox دیگه بگذارین.
2- یک textbox از نوع unbound با control source برابر با (..)sum

انگوران
سه شنبه 12 تیر 1386, 10:52 صبح
لطفاً گزارش ضمیمه رو ببینید و کادرهای خالی تعداد پرسنل ، تعداد همراه و تعداد کل رو درست کنیین . توضیح اینکه جدول master اسامی پرسنل و جدول child اسامی افراد تحت تکفل هر پرسنل را شامل می شود و در فرم ezamgoroohi پس از وارد کردن شماره پرسنلی در سابفرم master تیک تائید و اعزام پرسنل را گذاشته و در سابفرم child نیز تیک تائید و اعزام افراد تحت تکفل مجاز را می گذارم و در نهایت گزارش تعداد پرسنل و تعداد افراد تحت تکفل را می خواهم .

mohammadgij
سه شنبه 12 تیر 1386, 14:16 عصر
برنامه رو یه نگاه بنداز ببین همونیه که می خواستی؟
یک view تشکیل دادم به نام ViewSelect تا تعداد هر پرسنل و افراد تحت تکفل رو برای یک گروه نشون بده.
اونوقت در Record Source رپورت هم یه مقداری تغییر دادم و فیلهای اضافی رو که استفاده نمی شدن از سلکت حذف کردم.

انگوران
سه شنبه 12 تیر 1386, 15:15 عصر
بله دوست عزیز این همونیه که من می خواستم ولی متاسفانه من تا حالا با این مدل گزارش کار نکردم اگه لطف کنین و بفرمائید چیجوری باید view بسازم و مراحل کار رو یه مقدار تشریح کنین ممنون میشم .

mohammadgij
سه شنبه 19 تیر 1386, 12:38 عصر
دوست عزیز من کار خاصی نکردم فقط از چند view تو در تو استفاده کردم( منظورم از view همون query هستش)

مثلا من اول view زیر رو تشکیل دادم.



(SELECT tblezam.grooh, COUNT(child.persno) AS Child
FROM tblezam INNER JOIN
child ON tblezam.persno = child.persno
GROUP BY tblezam.grooh) viwChild



که مقادیر Child هر گروه رو واسم برگردونه

در مرحله بعد view دوم رو تشکیل دادم




(SELECT COUNT(tblezam.persno) AS master, tblezam.grooh
FROM tblezam
GROUP BY tblezam.grooh) viwEzam



که تعداد Master های هر گروه رو به من برگردونه

در مرحله سوم از view اول و دوم یک view مشترک ساختم




(SELECT viwChild.grooh, Child, master
FROM
(SELECT tblezam.grooh, COUNT(child.persno) AS Child
FROM tblezam INNER JOIN
child ON tblezam.persno = child.persno
GROUP BY tblezam.grooh) viwChild
INNER JOIN
(SELECT COUNT(tblezam.persno) AS master, tblezam.grooh
FROM tblezam
GROUP BY tblezam.grooh) viwEzam ON viwChild.grooh = viwEzam.grooh
GROUP BY viwChild.grooh, Child, master) viwSelect



که تعداد Master و Child مربوط به هر گروه رو در یک سطر بتونم بدست بیارم. و ارتباطا اون دو view رو از طریق فیلد Grooh ایجاد کردم.

مرحله بعدی این بود که از view آخر(ViewSelect) و اون دو سه جدولی که شما شرایط رو ازش انتخاب میکنی یه SQL مشترک بگیرم




SELECT viwSelect.master, viwSelect.Child, viwSelect.grooh
FROM
(SELECT viwChild.grooh, Child, master
FROM
(SELECT tblezam.grooh, COUNT(child.persno) AS Child
FROM tblezam INNER JOIN
child ON tblezam.persno = child.persno
GROUP BY tblezam.grooh) viwChild
INNER JOIN
(SELECT COUNT(tblezam.persno) AS master, tblezam.grooh
FROM tblezam
GROUP BY tblezam.grooh) viwEzam ON viwChild.grooh = viwEzam.grooh
GROUP BY viwChild.grooh, Child, master) viwSelect
INNER JOIN
dbo.tblezam
INNER JOIN
dbo.master ON dbo.tblezam.persno = dbo.master.persno
INNER JOIN
dbo.child ON dbo.master.persno = dbo.child.persno ON viwSelect.grooh = dbo.tblezam.grooh
WHERE (dbo.master.taid = Yes) AND (dbo.master.ezam = Yes) AND (dbo.child.taid = Yes) AND (dbo.child.ezam = Yes)
GROUP BY viwSelect.master, viwSelect.Child, viwSelect.grooh

انگوران
سه شنبه 19 تیر 1386, 14:23 عصر
ممنونم دوست عزیز ولی متاسفانه کارم سخت تر شد یعنی همه کدهای بالا رو باید بنویسم یا اینکه با ابزارهای کویری میشه این کار رو انجام داد. ( فرض کنید کویری unmatch و ... را میسازیم وقتی وارد محیط sql که میشیم کدهای مربوطه رو می بینیم ) مواردی که فرمودین هم همین حالت رو داره یا نه باید خودم کدهای مربوطه رو تایپ کنم ؟

mohammadgij
سه شنبه 19 تیر 1386, 14:34 عصر
نه عزیزم من هم در Record Source ریپورت نوشتم واست و هم در کد بالا. کافیه که کد آخر رو کپی کنی و در یک Query ذخیره کنی. البته هر مرحله رو هم میتونی به عنوان یک Query ذخیره کنی و در Query آخر (کد آخر) از Query های ذخیره شده استفاده کنید.

mohammadgij
سه شنبه 19 تیر 1386, 14:44 عصر
این فایل رو هم نگاه کن. من با Query واست ساختم. اما من ترجیخ میدم بدون ذخیره کردن Query و از همون طریق فابل اول به نتیجه برسی و اون روش رو بیشتر از ذخیره Query دوست دارم

انگوران
سه شنبه 19 تیر 1386, 15:08 عصر
ممنونم دوست عزیز من فکر می کردم کویری veiw یک کویری خاص هستش مثل union و ...

mohammadgij
چهارشنبه 20 تیر 1386, 09:11 صبح
نه عزیزم. Query در اکسس استفاده میشه و View در SQL هستش. خب اینم اشکال من بود که به جای استفاده از نام Query از نام View استفاده کردم
با این تفاوت که Query هم Update، هم Insert ، هم DELETE ، هم Make Table و .... رو توی خودش میشه انجام داد اما در SQL از View فقط برای نمایش استفاده میشه و دستورات Insert,Delete,Upadet & ...... رو باید در Stored Procedure نوشت