PDA

View Full Version : مبتدی: نمایش لیست کامل از فاکتورها



peym4ns
دوشنبه 17 بهمن 1390, 20:15 عصر
سلام به همه دوستان عزیز
یه مشکلی در نمایش لیست کامل تمام فاکتور ها داشتم. بنده یک جدولی از فاکتور ها و جدولی از کالاهای موجود در فاکتورها دارم.بین این دو جدول ارتباط یک به چند وجود دارد. در گزارش گیری که از فست ریپورت استفاده می کنم برای نمایش فاکتور انتخابی مشکلی ندارم اما وقتی می خوام لیست کامل فاکتور ها رو برای کاربر نمایش بده به درستی انجام نمیده. در انتخاب فیلد گروه بندی دچار مشکل شدم. برای نمایش فاکتور انتخابی کلید خارجی جدول کالاهای فاکتور رو برای گروهبندی انتخاب کردم( که به کلید اصلی در جدول فاکتورها وصل شده) ...
به نظر شما فیلد گروهبندی رو چی انتخاب کنم یا از چه فرمولی در گروه بندی فاکتور ها استفاده می کنم!!!

tiphooo
دوشنبه 17 بهمن 1390, 22:16 عصر
شما جدول فاکتور ها را در یک query جدا load کرده و جدول کالاهای فاکتور را در یک Query دیگر
و از کلید به عنوان پارامتر استفاده کنید و Master جدول کالاها را به جدول فاکتورها وصل کنید
گروه بندی را بر اساس کلید جدول فاکتورها ایجاد کنید و MasterData را به جدول کالاها وصل کنید و ریز کالاها را در آن بچینید.

peym4ns
چهارشنبه 19 بهمن 1390, 20:19 عصر
همه این کار ها رو تقریبا کردم، 2 تا FrxDbdataset توی فست ریپورتم آوردم، یکیش رو به جدول فاکتور ها وصل کردم و اون یکی رو به جدول کالاها. گروه بندی رو هر طوری انتخاب می کنم فاکتور ها رو از هم تفکیک نمیده البته اینو بگم در نمایش یک فاکتور انتخابی مشکلی نداره.
وقتی گروه بندی رو بر اساس کلید خارجی کالاها انتخاب می کنم به ازای هر تعداد فاکتور ، فاکتور هارو تکرار می کنه... خلاصه یه جور ساز مخالف میزنه...
راستی چطوری کلید رو به عنوان پارامتر برای گزارش انتخاب کنم؟

tiphooo
پنج شنبه 20 بهمن 1390, 03:41 صبح
شما گروه بندی را بر اساس مثلا شماره فاکتور انجام بده و اطلاعات اصلی فاکتور را در Group قرار بده (مثل شماره فاکتور نام خریدار ، ادرس و ...) و یک MasterDate به فرم اضافه کن و به FrxDataSet1 وصل کن و چیزی به آن اضافه نکن و ارتفاع آن را صفر کن (Height=0) و یک DetailData نیز اضافه کن و به جدول کالاهای فاکتور اضافه کن البته فراموش نشود جدول کالاها باید بر اساس فاکتور فیلتر شود در frxDBDataSet2 . اگر این کار با استفاده از FrxDBDataSet1 مشکل است برای بخش کالاها یک ADOQuery در خود FastReport اضافه کنید (چون حالت انتخابی شما در EXE است و اصل کار با FrxDataSet1 انجام گرفته و اکنون می توانید با شرایط FrxDataSet1 کالاها را Load کنید)و دستورات آن را در خاصیت SQL بنویسید و پارامتر به آن بدهید و Master (در Property ها) آن را به FrxDBdataSet1 وصل کنید

peym4ns
پنج شنبه 20 بهمن 1390, 18:14 عصر
دوست عزیز تمام این مراحل رو انجام دادم فقط چند نکته ای که برای من ابهام داره : اول اینکه "جدول کالاها بر اساس فاکتور فیلتر بشه" ، چطوری؟ خوب من هم دقیقا میخام همین اتفاق بیوفته فقط چطوری؟ مثلاً وقتی می خوام اطلاعات یک فاکتور رو نمایش بدم میام کالاها رو بر اساس شماره فاکتور فیلتر می کنم اما در نمایش انبوه چطوری میتونم این فیلتر رو در آنِ زمان انجام بدم. دوم اینکه در AdoQuery من چطوری میتونم کلید اصلی فاکتور رو به صورت پارامتر به adoquery بدم؟ یه خصوصیتی به نام params داره اما قفله.
من اینطور دستگیرم شده که اگه کلید اصلی فاکتور که همون شماره فاکتور رو به صورت پارامتر در حین گزارش به Adoquery ارسال کنم ، اون موقع نمایش ریز کالاها بر اساس پارامتر ارسالی نمایش داده میشه. به نظرتون شدنی و منطقی هست؟

tiphooo
جمعه 21 بهمن 1390, 21:08 عصر
هم شدنی ، هم منطقی ، هم بهترین راه حل
فرض را بر این بگذاریم که جدول کالاهای شما t1 نام دارد و FacNumber شماره فاکتور آن است برای فیلتر کردن آن در AdoQuery باید در SQL اینطوری بنویسید
SELECT * FROM t1 WHERE FacNumber=:FacNumber
برای تعریف پارامتر باید بعد از علامت مساوی (یا سایر علامتها) : بگذارید و بعد عنوان مثلا در اینجا FacNumber: پارامتر شماره فاکتور شماست
حال اگر دکمه parameter را بزنید دیگر قفل نیست و پارامتر ایجاد شده شما آنجاست و ابتدا نوع آن را مشخص کنید سپس مقدارش را که در مثال شما ظاهرا FrxDbDataSet1.شماره فاکتور باید باشد
خاصیت Master را هم مجددا تاکید می کنم به frxDBDataSet1 وصل کنید

peym4ns
دوشنبه 24 بهمن 1390, 12:15 عصر
به اون چیزی که میخواستم خیلی نزدیک شدم اما الان مشکلی که وجود داره انتخاب یک frxMemoView به عنوان پارامتر AdoQuery است. این frxMemoView به کد فاکتور متصله که در Group Header قرار داره. وقتی پارامتر رو مستقیما به کد فاکتور متصل میکنم کالاهای فاکتور اول رو در تمام فاکتورها تکرار میکنه که این با آنچه که می خواهیم در تضاده یعنی این پارامتر کد فاکتور اول را در خودش داره و تغییر نمی کنه. حالا محتوی frxMemoView چطوری به عنوان پارمتر میشه انتخاب کرد؟
به این صورت ارسال می کنم frxMemoView1.memo جواب نمیده و صفحه خالی رو میاره...
بابت این همه راهنمایی هم خیلی ممنونم!

tiphooo
دوشنبه 24 بهمن 1390, 16:52 عصر
تکراری آوردن بیشتر به خاطر اینه:
خاصیت Master را هم مجددا تاکید می کنم به frxDBDataSet1 وصل کنید
و اینکه برای باند Group باید یک باند Masterdata خالی داشته باشی که ارتفاع اون رو صفر کنی و اطلاعات کالا در Detaildata باشد

peym4ns
دوشنبه 24 بهمن 1390, 17:53 عصر
خاصیت Master را هم مجددا تاکید می کنم به frxDBDataSet1 وصل کنید
و اینکه برای باند Group باید یک باند Masterdata خالی داشته باشی که ارتفاع اون رو صفر کنی و اطلاعات کالا در Detaildata باشد

این موارد رو رعایت کردم من!

tiphooo
دوشنبه 24 بهمن 1390, 18:51 عصر
اگر گزارش را در فابل ذخیره کرده اید فایل fr3 مربوطه را ضمیمه کن

peym4ns
دوشنبه 24 بهمن 1390, 20:15 عصر
فایل رو ضمیمه کردم!
82611

tiphooo
سه شنبه 25 بهمن 1390, 01:59 صبح
متاسفانه چون از frxDBDataSet استفاده کردید نتونستم خروجی رو تست کنم
MasterData را بهFrxDBDataSet26 وصل کن و نام پارامتر ADOQuery1 را از Code: به FID: تغییر دهید باید مشکل حل شود.و ( Master=FrxDBDataSet26 البته شاید اینو گذاشتید ولی چون من FrxDataSet ها را نداشتم ندیدم )
البته می توانید لیست فاکتورها را هم به جای استفاده از frxDBDataSet در یک ADOQuery جداگانه مانند کالاها بسازید.

tiphooo
سه شنبه 25 بهمن 1390, 02:06 صبح
تابع num2str نیز که نوشتید به کتابخانه FastReport اضافه کنید تا در لیست توابع شما ظاهر شود و مجبور نباشید در هر گزارش آن را مجددا کپی کنید.و یک سری توابع دیگر مثل تیدیل تاریخ ها ، اسامی ماه ها و ... سعی کنید اینها را ساخته و به کتابخانه اصلی FastReport اضافه کنید.خیلی کارها را راحت تر می کند.مثلا اگر الان بخواهید تاریخ جاری سیستم را در گزارش به صورت شمسی نمایش دهید کار سختی خواهد بود اگر بخواهید هر بار کد نویسی کنید و یا از روالهای ذخیره شده در SQL استفاده کنید

peym4ns
سه شنبه 25 بهمن 1390, 09:59 صبح
من فکر نمی کردم که پارامتر هم باید هم نام با فیلد مورد نظر باشه. نمایش لیست الان درست کار می کنه از اینکه گام به گام من رو راهنمایی کردین واقعن ممنونم. نکاتی رو هم که گوش زد کردین رعایت می کنم.

tiphooo
سه شنبه 25 بهمن 1390, 19:41 عصر
وقتی از خاصیت Master استفاده کنید این حالت پیش می آید و پارامتر باید همنام باشد