مشاهده نسخه کامل
: دو تا مشکل در طراحی گزارش با کریستال ریپورت
aliaghaaaaa
01-08-2013, 10:15
سلام.
من دو تا مشکل با طراحی گزارش در کریستال دارم.
مشکل 1
من یه فرم دارم که چند نمونه اطلاعات می خوام توش داشته باشم.
الف) یه سربرگ دارم و یه سری اطلاعات شخصی که تو قسمت page header طراحیشون کردم و مشکلی نداره
ب) یه سری اطلاعات دیگه از شخص دارم مثل اطلاعات شغلی، اطلاعات تحصیلی و ... که می خوام فقط تو صفحه اول بیاد. منم تو قسمت details طراحیش کردم.
ج) یه سری اطلاعات دیگه هم هست که حالت جدولی داره و باید برای هرکس تکرار بشه (اطلاعات بستگان). من یه details دیگه رو فرم گذاشتم و توش این قسمت رو طراحی کردم.
حالا مشکل اینجاست که من می خوام سربرگ، اطلاعات شخصی و اطلاعات قسمت (ب) فقط تو صفحه اول بیان و اطلاعات بستگان اگه خواست زیاد بشه به صفحه دوم بره، صفحه دوم اینوجوری بشه: سربرگ و اطلاعات بستگان.
ولی میشه: سربرگ، اطلاعات الف، اطلاعات ب و بستگان.
یعنی اگه ده تا بستگان داشته باشیم، میشه ده صفحه که هر صفحه سربرگ، اطلاعات الف و ب رو داره و تو هر صفحه یکی از بستگان رو نشون میده.:n15:
مشکل 2:
من دو جدول دارم که اطلاعات رو با inner join از هر دو جدول انتخاب کردم و آوردم تو گزارشم.
حالا مشکل اینه که ممکنه یکی از اشخاصی که اطلاعاتش میاد تو گزارش اطلاعات بستگان نداشته باشه.
اونوقت هیچ اطلاعاتی از شخص رو نمیاره. یعنی حتی اطلاعات خودش رو هم نمیاره.:n23:
ممنون میشم اگه کمکم کنید.
خیلی برام مهمه. ممنون.:n22::n28:
بسم الله الرحمن الرحیم
با سلام
1) اطلاعاتی که نیاز دارید تنها در صفحه اول بیاید در قسمت Report Header قرار دهید.
قسمت Page Header برای مواردی ست که شما مایلید بالای تمام صفحات شما بیاید.
2) به جای inner join از Left Join استفاده کنید.
موفق باشید.
aliaghaaaaa
01-08-2013, 16:53
سلام.
1) اطلاعاتی که نیاز دارید تنها در صفحه اول بیاید در قسمت Report Header قرار دهید.
این کار رو کردم ولی مشکل اینه که برای صفحات 2 به بعد درست کار می کنه. یعنی برای صفحه اول نمیشه.
اول اطلاعات report header میاد بعد page header
ولی صفحات 2 به بعد درسته.
2) به جای inner join از Left Join استفاده کنید.
این کار رو کردم ولی left join تبدیل شد به LEFT OUTER JOIN و باز هم جواب نداد.
میشه لطفا بازم راهنمایی کنید؟
ممنون.
aliaghaaaaa
02-08-2013, 21:10
سلام.
میشه لطفا کنید و جواب رو بدین؟
ممنون میشم.
بسم الله الرحمن الرحیم
با سلام
اول اطلاعات report header میاد بعد page header
بله؛ قاعدتا باید اول report header بیاید. شما می خواهید اطلاعات بستگان بالای اطلاعات فردی در صفحه اول قرار بگیرد؟
این کار رو کردم ولی left join تبدیل شد به LEFT OUTER JOIN و باز هم جواب نداد.
کد زیر رو امتحان بفرمائید؛ بنده با جدول های فرضی امتحان کردم جواب داد.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
شاید جای دو جدول رو اشتباه نوشتید.
به تعریفی که در زیر آمده توجه بفرمائید.
The LEFT JOIN keyword returns all rows from the left table (table1), with the matching rows in the right table (table2). The result is NULL in the right side when there is no match.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید.
aliaghaaaaa
03-08-2013, 17:16
سلام.
مثلا من میخوام سربرگ فرمی که پرینت میشه در همه صفحات باشه که شامل آرم مجموعه، شماره و تاریخ و پیوست و ... میشه.
اینطور که شما فرمودید، در صفحه اول به عنوان قسمت دوم تو گزارش میاد و در بقیه صفحات میشه سربرگ.
من میخوام تو صفحه اول هم به عنوان سربرگ فرم باشه.
ممنون میشم اگه راهنمایی بفرمایید.:n18:
بسم الله الرحمن الرحیم
با سلام
یه پیشنهادی خدمتتون عرض میکنم.
آرم و غیره رو که فرمودید در Page Report قرار دهید و قسمتی زیر Page Report برای Group Header Section قرار دهید؛ منوی Crystal Report/Report/Group Expert .بر حسب شماره پرسنلی شخص گروه بندی کنید
و اطلاعات شخصی فرد و Headerهای فیلدهای بستگان رو اون جا قرار
دهید و فیلدهای بستگان رو در قسمت details.
موفق باشید.
misagh22
04-08-2013, 15:11
سلام ببخشید سوالم رو اینجا مطرح میکنم
من یه جدول شرکت دارم و یه جدول پرسنل .حالا میخوام تو گزارشم بالای صفحه یه سری اطلاعات از شرکت رو نشون بدم و زیر اون اطلاعات همه ی پرسنل رو نشون بدم.اما میخوام هرپرسنل اطلاعاتش در جدول(یا یه چیزی تو همین مایه ها) و سطر به سطر باشن.(درواقع هر پرسنل اطلاعاتش جدا جدا باشه) خواهشا اگه بلدین یا اینکه ایده ای درین باره دارین راهنماییم کنین ممنوووووونم:n30:
بسم الله الرحمن الرحیم
سلام ببخشید سوالم رو اینجا مطرح میکنم
من یه جدول شرکت دارم و یه جدول پرسنل .حالا میخوام تو گزارشم بالای صفحه یه سری اطلاعات از شرکت رو نشون بدم و زیر اون اطلاعات همه ی پرسنل رو نشون بدم.اما میخوام هرپرسنل اطلاعاتش در جدول(یا یه چیزی تو همین مایه ها) و سطر به سطر باشن.(درواقع هر پرسنل اطلاعاتش جدا جدا باشه) خواهشا اگه بلدین یا اینکه ایده ای درین باره دارین راهنماییم کنین ممنوووووونم:n30:
با سلام
بر حسب شماره شرکت گروه بندی بفرمائید؛ مثل همون حالتی که در پست شماره 7 عرض کردم.
موفق باشید.
aliaghaaaaa
04-08-2013, 16:23
سلام.
در مورد سوال دومم که راجع به join بود، شاید جداول من اشکالاتی داشته باشه.
جداولم اینطوریه:
جدول 1:
آی دی، اطلاعات شخصی، شغلی و ...
جدول دو: آی دی، آی دی جدول یک، اطلاعات بستگان.
جدول هام اشکال ندارن؟:n13:
و البته اگه میشه یکی از دوستان در مورد اشکالم در طراحی فرم گزارشم هم توضیح بدن.
ممنون.:n16:
بسم الله الرحمن الرحیم
جداولم اینطوریه:
جدول 1:
آی دی، اطلاعات شخصی، شغلی و ...
جدول دو: آی دی، آی دی جدول یک، اطلاعات بستگان.
جدول هام اشکال ندارن؟:n13:
با سلام
نه مشکلی نداره.
aliaghaaaaa
07-08-2013, 16:28
سلام.
از دوستان کسی پیشنهادی برای رفع مشکل من نداره؟
ممنون میشم اگه راهنمایی کنید.
بسم الله الرحمن الرحیم
سلام.
از دوستان کسی پیشنهادی برای رفع مشکل من نداره؟
ممنون میشم اگه راهنمایی کنید.
با سلام
اون مسئله ای که در مورد Left Join فرمودید هنوز پابرجاست؟
aliaghaaaaa
08-08-2013, 08:18
سلام.
left join رو امتحانش کردم. جواب می ده. ولی هنوز تو گزارشم نبردمش. و از راهنماییتون تشکر می کنم.
ولی هنوز مشکل فرم گزارشم درست نشده.
ممنون میشم اگه کسی بتونه راهنمایی کنه.:n27:
aliaghaaaaa
09-08-2013, 17:24
سلام.
کسی تو گزارش گیری تجربه این مشکلو نداره که بتونه کمک کنه؟:n13:
سلام
اجازه دهید اول یکبار سوال تان مرور کنیم و دقیق مطمئن شویم چه میخواهید.
- شما نیاز به یک گزارش دارید!
- گزارش شما یک هدر مشترکی در تمام صفحات دارد، مانند آرم یک شرکت که باید در بالای تمام صفحات تکرار شود.
- در بدنه گزارش یک رابطه یک به چند دارید مانند ارتباط یک نویسنده با چندین کتابی که نوشته.
- اطلاعات سطر والد "مانند همان تک نویسنده" میخواهید در صفحه اول بیایید و اطلاعات سطرهای فرزند در زیر آن.
- اگر بابت هر نویسنده-کتاب ، گزارش به صفحه دوم و سوم هم کشید نمیخواهید اطلاعات نویسنده مجدد تکرار شود و فقط میخواهید اطلاعات کتابها ادامه یابد
درست است؟ تمام شد؟
اگر جایی کم و کسر دارد، اشتباه گفتم یا متوجه شدم و... به دقت و صراحت، اصلاح یا اضافه کنید.
فعلاً اگر بخواهیم با این فرض جواب دهیم، گزارش شما کاملاً در چهارچوب یک گزارش عادی قرار داد.
یک گزارش بسیار ساده با یک جدول میتواند قالبی این چنینی داشته باشد.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ولی تقریباً در تمام برنامه های گزارش ساز برای چاپ صحیح یک رابطه یک به چند نیاز به افزودن یک Group Section داریم.
GroupSection روی یک والد تک قفل شده و برای فرزندان ان تکراری ایجاد میکند با قالب کلی زیر:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
شما کافی است یک Group Section به گذارش خود اضافه کنید و آن را روی فیلد ارتباطی جدول والد-فزند تان قفل کنید.
افزودن یک Group Section منطقاً و حتماً نیاز به گرفتن فیلدی برای تفکیک پذیری دارد.
(
همان فیلدی که در Join دو جدول یک به چند استفاده شده، شاید شما چندین Join داشته باشید ولی در اینجا مهم Join ای است که رابطه والد فرزندی مدنظر شما در گزارش را ایجاد کرده.
مثلاً اگر اطلاعات شما حاوی یک فرد و چندین دوست او باشد، احتمالاً کد PrimaryKey جدول افراد همان کلیدی است که جدول "افراد" را به جدول "دوستان" Join کرده.
)
پس از این افزودن کافی است...
آرم و مشخصات کلی همه صفحات را در PageHeader و PageFooter قرار دهید.
اطلاعات آن ارتباط تک (مثل شخص) را در GroupHeader قرار دهید.
و اطلاعات تکرارشونده به ازای هر فرد را (مانند کتابها یا دوستان ...) در Detail قرار دهید.
موفق باشید.
aliaghaaaaa
10-08-2013, 20:54
سلام.
دست شما درد نکنه و ممنون از اینکه بهم جواب دادید.
شما درست فرمودید:
همه ی صفحه ها باید سربرگ و اطلاعات اولیه نویسنده مانند نام و ... و بقیه اطلاعات مثلا شغلی و ... رو داشته باشه.
صفحات بعد، سربرگ، اطلاعات اولیه و اطلاعاتی مثل نام کتاب هایی که نوشته و احتمالا آنقدر زیاد باشند که به صفحات بعدی هم کشیده بشه.
یعنی صفحات 2 به بعد باید سربرگ، اطلاعات اولیه و بقیه اطلاعات detail رو داشته باشند.
ولی دقیقا gropu section چطور عمل می کنه؟
میشه یه توضیح کامل تری بدین؟ و اینکه چطور تکرار میکنه؟
ممنون میشم.:n11:
سلام
ولی دقیقا gropu section چطور عمل می کنه؟
میشه یه توضیح کامل تری بدین؟ و اینکه چطور تکرار میکنه؟
در واقع GroupSection به ازای مقادیر ثابت یک فیلد دلخواه Header و Footer ای به گزارش شما اضافه میکند.
به بیان دیگر
گزارش ما را از محور عمودی(!) برای مقادیر یک فیلد میشکند و به هر بخش Header و Footer ای اضافه میکند.
به عنوان نمونه شما در گزارشتان اطلاعات افراد و دوستان آنها را دارید (یک به چند) و میخواهید گزارش شما به ازای هر یک نفر (و طبیعتاً چندنفر دوست وابسته او) یک Header و Footer اضافه ویژه داشته باشد که اطلاعات آن یک نفر را فقط در ابتدای سرتیتر دوستان او، یکبار تکرار کنید.
در کریستال رپورت میتوانید از دیالوگ RightClick>Report>Group Expert گروه جدیدی ایجاد کنید.
امتحانی بفرمائید، انشاا... به مقصودتان خواهید رسید.
موفق باشید.
aliaghaaaaa
30-10-2013, 09:23
سلام.
مشکل من تو گزارش قبلی حل شد و از شما تشکر میکنم.
اما دو تا سوال دیگه تو گزارش گیری داشتم:
1- فرض کنید دو گروه از اطلاعات تکرار شونده داریم.
مثلا اطلاعات سوابق تحصیلی و اطلاعات سوابق شغلی
می خواهیم اطلاعات سوابق تحصیلی که کاملا نمایش داده شد بعدش اطلاعات سوابق شغلی شروع بشه.
یعنی بشه:
سوابق تحصیلی 1
سوابق تحصیلی 2
سوابق تحصیلی 3
.
.
.
سوابق تحصیلی n
---------------------------------------------------
سوابق شغلی 1
سوابق شغلی 2
سوابق شغلی 3
.
.
.
سوابق شغلی n
اگه سوابق تحصیلی رو تو یه details بزاریم و سوابق شغلی رو تو یه details دیگه جواب نمیده.
چون اینطور میشه:
سابقه تحصیلی 1
سابقه شغلی 1
-------------------
سابقه تحصیلی 2
سابقه شغلی 2
--------------------
.
.
.
چه راه حلی برای این کار وجود داره؟
البته اگه راهش استفاده از group هست، لطفا یه توضیح کامل بفرمایید.
2- من تو گزارشم می خوام یه عکس از شخصی که اطلاعاتش رو چاپ می کنم بزارم.
عکس رو هارد ذخیره شده و آدرسش تو دیتابیس هست
باید از چه کنترلی تو گزارشم استفاده کنم و چه کدی براش بنویسم که عکسش بیاد تو گزارش؟
با تشکر
سلام
برای اینکه دو بخش detail مجزا داشته باشید میتوانید از امکان subreport استفاده کنید.
کافیست اول دو report مجزا برای برای فقط دو بخش مورد نظر درست کنید.
سپس در گزارش سوم که گزارش اصلی است با کمک فرمان rightclick>insert>subreport دو گذارشی را که قبلا ساخته اید بیاورید.
لازم بذکر است که ارتباط بین کلید گزارش اصلی و کلید خارجی ها در دو زیر گزارش از طریق فرم subreport links قابل تنظیم است.
موفق باشید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.