نمایش نتایج 1 تا 16 از 16

نام تاپیک: آموزش گام به گام ساخت گزارش پویا

  1. #1
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    آموزش گام به گام ساخت گزارش پویا

    با سلام خدمت دوستان و اساتید خوبم !
    پس از کلی سر و کله زدن موفق شدم آن چیزی که مدتها فکرمو مشغول کرده بود و بسازم و خیلی مشتاق شدم که مراحل کار و در اختیار دوستان قرار دهم.
    منظورم از گزارش پویا اینه که وقتی یه جدول داریم و می خواهیم یک گزارش خط کشی شده با نوار های لایت و کمی جنگولک بازی با فیلدهایی که کاربر به دلخواه تیک می زنه بسازیم.
    اما از ابتدا 2 نکته بگم
    یکی اینکه در این مبحث نیاز به تعامل دوستان دارم و دوم اینکه به دلیل مشغله نمی تونم همه رو یه دفعه ارائه بدم .
    پس در هر زمان بخشی از مطلب و باهم بحث می کنیم.

    کلیات کار :
    به هر روشی که دوست دارید جدول نهایی رو آماده کنید مثلا از تاریخ تا تاریخ ... نام مشتری ... از محدوده فلان تا فلان و ...
    در نهایت با کوئری جدول نهایی آماده می شه.

    در مرحله بعد یک جدول باید داشته باشیم که نام اصلی فیلدها و یک caption فارسی و طول هر فیلد و نام جدول رو در خودش ذخیره می کنه
    مسلما با یه برنامه کوچیک می تونید این کارو انجام بدهید



    TBLFIELD.DBF
    Field Field Name Type Width Dec Index Collate Nulls Next Step
    1 COLNAME Character 15 No
    2 COLCAPTION Character 15 No
    3 COLWIDTH Numeric 10 3 No
    4 OLDWIDTH Numeric 10 3 No
    5 NEWWIDTH Numeric 10 3 No
    6 NLEFT Numeric 10 3 No
    7 LSEL Logical 1 No
    8 CTBLNAME Character 30 No
    1 No
    10 NID Numeric 5 No


  2. #2
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    از قرار معلوم زیاد طرفدار نداشت .
    اما خب ترجیح می دم ادامه بدم شاید در اواسط کار برای دوستان جذاب بشه.

    تا اینجای کار ما یه گزارش نهایی داریم که اطلاعات همه فیلدهایش در اختیارمان می باشد.

    حال باید فیلدها را در اختیار کاربر قرار دهیم تا انتخاب نماید. شما می توانید از هر روشی استفاده کنید از کلاسهای آماده یا listbox و ... استفاده کنید
    من از گرید استفاده کردم ارتفاع هدر را 0 قرار دادم و دو ستون یکی checkbox و دیگری textbox به آن اضافه کردم.

    توضیح :
    یه فرم جدید بسازید و یک گرید بهش اضافه کنید. دو فیلد COLCAPTION و lsel جدول فوق را در اون به نمایش در آورید.
    این فرم به کاربر اجازه می دهد تا فیلدهای دلخواهش را برای چاپ انتخاب نماید.




    در مرحله بعد باید اندازه فیلدها را جمع بزنیم تا ببینیم از اندازه کاغذ تجاوز می کند یا نه.
    اگر جمع اندازه کل فیلدهای انتخاب کوچکتر از سایز کاغذ بود می توانید مقدار باقیمانده را در فیلدها خرد کنیم البته با تناسب .
    مثلا طول کاغذ 20 سانتی متره جمع طول فیلدها 14 سانت شد 6 سانت و باید بین فیلدها به نسبت اندازه هر فیلد تقسیم کنیم:
    مثال :

    طول کاغذ 20 سانت

    فیلد 1 : 3 سانت
    فیلد 2 : 1 سانت
    فیلد 3 : 2 سانت
    فیلد 4: 5 سانت
    فیلد 5: 3 سانت
    -----------------------
    جمع : 14 سانت .
    مانده 6 سانت

    اگر طول هر فیلد را با OldWidth نشان دهیم :
    NewWidth = OldWidth + (OldWidth * 6 ) /14

    پس طول جدید فیلدها بصورت زیر خواهد شد :



    فیلد 1 :
    3+( 3*6 ) /14 = 4.28

    فیلد 2 :
    1+(1*6 ) /14= 1.42

    فیلد 3 :
    =2.85 2+( 2* 6 ) /14

    فیلد 4:
    5+( 5*6 ) /14 = 7.14

    فیلد 5:
    3+( 3*6 ) /14= 4.28
    -----------------------
    جمع : 19.97سانت تقریبا 20 سانتی متر

    پس ما هم اکنون طول تقریبی جدید فیلدها را برای نمایش داریم.

    حال اگر جمع کل طول فیلدها بیشتر از اندازه صفحه بود باید چکار کنیم؟
    با استفاده از همین فرمول به نسبت طول فیلدهارا کاهش می دهیم.

    نکته مهم :
    وقتی یک خطی در گزارش به اندازه 1 سانتی متر رسم کنید و آن گزارش را با استفاده از use باز کنید می بینید طول این خط را با عدد 3937 نشان می دهد نمی دانم این عدد چه واحدیست چیست اما احتمال زیاد تعداد نقاطی تشکیل دهنده تصویر هستند.
    با این فرض برای تبدیل هر یک سانتی متر از عدد 3937 استفاده می کنیم.

  3. #3
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    39
    پست
    2,107

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    يک سئوال: اين طول هر فيلد رو خودمان بايد در زمان طراحي گزارش دربياريم که هر کدوم مثلا چند سانت ميخوان؟
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  4. #4
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    از یادآوری شما ممنونم .
    تا این مرحله هنوز هیچ گزارشی طراحی نشده است .فعلا در مرحله محاسبات هستیم .

    با توجه به اینکه از فونت tahoma با سایز 10 استفاده کردم مشاهده کردم هر یک کارکتر تقریبا 1166.5 نقطه رو تشکیل می ده این هم مثل همون عدد 3937 بدست آوردم.
    طول هر فیلد ( مثلا 15 کارکتر یا 5 رقم) را در عدد فوق ضرب کرده تا اندازه نمایشی طول را در گزارش بدست آوریم

    wtol = 1166.5
    SCAN
    REPLACE oldwidth WITH wtol* colwidth
    ENDSCAN


    پس تا اینجا ما جدولی داریم که نام و طول فیلدهای مورد نظر کاربر را مشخص کرده.
    آخرین ویرایش به وسیله mehran_337 : دوشنبه 05 بهمن 1388 در 08:44 صبح

  5. #5
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: آموزش گام به گام ساخت گزارش پویا


    توضیح : همانطوریکه می دانیم هر گزارش هم مانند فرم ها و کوئری و .. مانند table می باشد و با دستور use report.frx قابل باز شدن می باشند.
    هر شی هم یک رکورد است مثلا اگر خطی به گزارش اضافه کنیم در جدولش می بینیم رکوردی ایجاد شده و فیلدها همان تنظیمات و خواص هر شی را داراست.
    در اینجا به گوشه ای از این خواص آشنا می شویم:

    ObjType
    این فیلد نشان دهنده نوع یک شی است که می تواند مقادیر عددی مختلفی داشته باشد
    مثلا :
    مقدار 1 تنظیمات کاغذ و چاپگر و ... .
    مقدار 9 اندازه تنظیمات هدر و دیتیل و فوتر
    مقدار 5 برچسب
    مقدار 6 خط
    مقدار 8 تکست باکس
    مقدار 18 متغیرهای گزارش
    مقدار 25 تنظیمات Dataenvironmen
    ...

    Name
    نام متغیر های گزارش

    Expr
    محتویات . تقریبا شبیه value. اینکه در تکست باکس چه مقادیر و چه متنی نمایش داده شود و ازاین قبیل.

    Vpos
    فاصله شی از بالای صفحه همانند top

    Hpos
    فاصله از سمت چپ صفحه همانند left

    به بقیه فیلدها فعلا کاری نداریم چون اسمشون مشخصه که چکار می کنند و بعضی ها زیاد کاربردی نیستند تعدادی هم در ادامه کار آشنا خواهیم شد.
    مثلا وقتی در init شی Dataenvironment دستوراتی می نویسیم در رکوردی که objtype مقدار 25 دارد می بینیم در فیلد Tag این دستورات ذخیره شده است.
    توصیه می شود گزارش خالی را ایجاد کنید و با دستور use بازش کنید و در هر مرحلهخ شی جدیدی اضافه کنید و تغییرات را در ساختار جدول ببینید تا بیشتر با عملکرد آن آشنا شوید.

    اینکه برای هر شی کد خاصی (ObjType) قرار دارد خوب است اما مثلا وقتی 5 فیلد بصورت تکست باکس در گزارش وجود دارد از کجا باید فهمید کدام رکورد مربوط به کدام فیلد است تا تغییر دهیم ؟
    مقدار Objtype همه تکست باکسها که 8 است پس نیاز به نامگذاری داریم.
    من از فیلد comment برای این کار استفاده کردم.
    چنانچه روی هر شی در محیط طراحی گزارش دابل کلیک کنید در برگه other روی edit comment کلیک کنید می بینید که می توانید متنی بنویسید که فقط توضیح است و تاثیری در عملیات ندارد
    من از این فیلد برای نامگذاری استفاده می کنم این متنی که می نویسید اگر گزارش را use کنید می بینید که در فیلد comment ذخیره شده است

  6. #6
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    حال باید گزارش مورد نظر را بسازیم . روشهای مختلفی برای اینکار وجود دارد .
    روشی که من انتخاب کردم این است که ابتدا یک گزارش مثلا با نام ReportBase داشته باشم که تمام اشیا مورد نظر مانند خط افقی ، خط عمودی ، برچسب ، تکست باکس و ... در آن بصورت خام تنظیم شده اند.
    کمی به این اشیا خواص آماده می دهیم تا بعدا کمتر نیاز به کدنویسی داشته باشد.
    مثلا تکت باکس را راست به چپ کرده و فونت مورد نظر را به آن اعمال می کنیم.
    حال اگر در گزارش اصلی این رکورد را کپی کنیم خواص مورد نظر اعمال شده است و نیاز به تنظیم مجدد ندارد.
    مجدد متذکر می شوم که این روش کاملا شخصی است و اصراری به استفاده از این روش نیست.مطمنا اساتید بنده در این سایت روشهای دیگری را نیز پیشنهاد خواهند داد.

    یک گزارش با نام ReportBase بسازید.

    یک خط عمودی به آن اضافه کنید و در comment مقدار Vline را قرار دهید.
    از این خط برای خط کشی عمودی بین ستونها استفاده خواهیم کرد

    یک خط افقی به آن اضافه کنید و در comment مقدار Hline را قرار دهید.
    از این خط برای خط کشی افقی بین رکوردها استفاده خواهیم کرد

    یک شی field (یا همون تکست باکس ) اضافه کنید با فونتی ضخیم تر و وسط چین و در comment مقدار HeaderCaption را قرار دهید و Expression آن را مقدار "text" دهید.
    از این شی برای نمایش تیتر هر ستون استفاده خواهیم کرد

    یک شی field (یا همون تکست باکس ) اضافه کنید با فونتی معمولی (ترجیحا tahoma) و راست چین و در comment مقدار DetailValue را قرار دهید و Expression آن را مقدار "-" دهید.
    از این شی برای نمایش محتویات هر ستون یا همون مقادیر اصلی گزارش استفاده خواهیم کرد

    البته گزارش پایه من اشیا بیشتری هم داره مثل تاریخ و شماره صفحه و ردیف و غیره که تنظیماتشو آماده می کنم و در یک فرم از کاربر می خوام انتخاب کنه که آیا می خواد تاریخ و شماره صفحه چاپ بشه یا نه .
    اگه کاربر خواسته باشه این اشیا و کپی می کنم در گزارش اصلیم یعنی رکوردهاشو کپی می کنم دیگه نیاز به تنظیم خاصی نداره که البته فعلا پایه کار و باهم مرور می کنیم بعدا به این ظرافت کاریها می پردازیم.

  7. #7
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    برای اینکه ساختار گزارش پایه بهم نریزه ابتدا یک جدول با ساختار گزارش می سازیم :



    Use reportBase.frx
    COPY STRUCTURE TO rptstruct.dbf



    اشیا اولیه مانند تنظیمات چاپگر و dataenvironment و خطوط عمودی و افقی را از گزارش پایه به این جدول کپی می کنیم :


    APPEND FROM reportBase.frx FOR objtype=1 OR objtype=9 OR objtype=23 OR objtype=25


    خب مسلما اگه گزارشتون متغیر هم داشته باشد کد 18 رو هم باید اضافه کنید و عر آنچه که می خواهید. ;-)


    اگر یادتون باشه در بالا گفتم تنظیمات کاغذ در رکوردی انجام می شه که objType مقدار 1 را دارد.
    پس بهتره در ابتدا ی کار نوع افق یا عمودی بودن کاغذ رو مشخص کنیم . چه بهتر که کاربر خودش انتخاب کنه.
    مثلا قبل از گزاش یه فرمی داشته باشه که تعیین کنه می خواد گزارش افق چاپ بشه یا عمودی


    IF amoodi = .t. && amodi papaer DEFAULT
    REPLACE expr WITH ALLTRIM(expr)+"ORIENTATION=0"+CHR(13)
    pwidth = 20
    ELSE && ofoghi page
    REPLACE expr WITH ALLTRIM(expr)+"ORIENTATION=1"+CHR(13)
    pwidth = 29
    ENDIF


    حالا با استفاده از متغیر pwidth اندازه صفحه رو داریم

  8. #8
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    39
    پست
    2,107

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    خيلي خوب داريد پيش ميريد تبريک ميگم.البته از شخص با تجربه اي با چند صد برنامه بعيد نيست.
    اين مقاله رو هم حتما مطالعه کرديد ، براي ساير دوستان قرار ميدم :
    http://www.foxite.com/articles/read....ing-on-the-fly
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  9. #9
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    جناب حسین زاده عزیز
    خودتون خوب می دونید که مستمع صاحب سخن را بر سر ذوق آورد از تشویقتون ممنونم فقط امید وارم برای دوستان مفید باشه چون خودمن با این مسئله خیلی درگیر بودم و کدی هم نتونستم مشابه پیدا کنم.
    البته لینک شما نکات جالبی داشت که باید بیشتر تحلیلش کنم.
    نمونه هایی که دیده بودم یا بصورت create report rpname field ... بود که اصلا مورد قبول من نبود
    و مثال دیگه ای دیده بودم که ابتداگزارش کاملی باید ساخته بشه بعد فیلدهایی که می خواهیم مخفی کنیم
    چیزی که مد نظرم بود اینه که بتونم خودم کاملا روی گزارش کار کنم.
    از دلگرمی شما مجددا ممنونم در ضمن اگر در زمینه لینکی که دادین توضیحاتی دارید فکر کنم به پربار شدن محتویات این تاپیک کمک کنه

  10. #10
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    در این مر حله می خواهیم ارتفاع header – detail , footer را تعیین کنیم.
    رکوردهایی که این خصوصیات را در خود نگهداری می کنند objtype=9 AND objcode=1 دارند و قبلا به جدول اضافه شده اند پس با دستور زیر ارتفاع را تعیین می کنیم :

    REPLACE height WITH 2*3937 FOR objtype=9 AND objcode=1 && ارتفاع هدر
    REPLACE height WITH 1*3937 FOR objtype=9 AND objcode=4 && ارتفاع ديتيل
    REPLACE height WITH 2*3937 FOR objtype=9 AND objcode=7 && ارتفاع فوتر


    اگر می خواهید کمی کار را دهان پر تر ارائه دهید می توانید توسط textbox تعیین ارتفاع این اشیا را به دست کاربر بسپارید.

    حال می خواهیم دو خط افقی در بخش هدر داشته باشیم تا عناوین درون آن قرار گیرد.


    این خطوط در تصویر برای وضوح بیشتر با رنگ قرمز نمایش داده شده است و با نام Hline نامگذاری شده اند.

    گفتیم گزارش پایه ای با نام reportBase.frx داریم که اشیا مورد نظر را در آن قرار دادیم و اگر یادتان باشد خط افقی به نام Hline هم به آن اضافه کرده بودیم . هم اکنون همان خط را به گزارش اصلی اضافه می کنیم ( البته 2 بار چون به دو خط نیازمندیم)


    APPEND FROM reportBase.frx FOR comment='Hline'
    APPEND FROM reportBase.frx FOR comment='Hline'


    حال باید این خطوط را به اندازه کل صفحه بکشیم البته بنده برای احتیاط به اندازه 1 سانتی متر از هر دوطرف حاشیه گذاری می کنم یعنی طول کاغذ (pwidth) 2 سانت کمتر

    ezaf6 = 1
    SCAN FOR comment='Hline'
    REPLACE height WITH 104.167 ,hpos WITH 3937 , vpos WITH (( HeaderHeight - ezaf6)*3837)+104.167 ,;
    width WITH (pwidth-1)*3937
    ezaf6 = 0
    ENDSCAN

    مقدار 104.167 یعنی ارتفاع این خط صفر است پس خط افقی خواهیم داشت.
    HeaderHeight - ezaf6 به این دلیل است که 2 خط به اندازه هستند اما فاصله آنها از بالای صفحه به اندازه 1 سانت فرق می کند .


    حالا می خواهیم خطوط عمودی را در هدر اضافه کنیم همان خطوطی که با رنگ سبز نمایش داده شده است و با Vine نام گذاری شده اند.
    نکته قابل توجه اینکه ما تعدادی رکورد را از جدول TBLFIELD انتخاب شده داریم (به انتخاب کاربر) که باید نمایش داده شود.

    1 - فیلدهایی که باید نمایش داده شوند را شماره گذاری کنید :

    SELECT TBLFIELD
    varsel =SELECT()
    REPLACE nid WITH 0 all
    vcnt=1
    SCAN FOR lsel
    REPLACE nid WITH vcnt
    vcnt = vcnt + 1
    ENDSCAN
    COUNT FOR lsel TO tvis


    2 – خطوط عمودی را اضافه می کنیم :


    LOCATE FOR comment="Vline"
    SCATTER TO tlin
    SELECT rptstruct
    FOR il = 1 TO tvis+1 && تعداد خطوط باید یکی بیشتر از تعداد فیلدها باشد
    APPEND blank
    GATHER FROM tlin
    REPLACE comment with "Vline" && برای محکم کاری چون بعضا این فیلد کپی نمی شه
    ENDFOR


    حالا باید مشخصات این خطوط را تنظیم نماییم
    vcnt = 1
    SELECT rptstruct
    SCAN FOR comment="Vline"
    SELECT tblfield
    LOCATE FOR nid=vcnt
    vwidth = newwidth
    vcaption = ALLTRIM(colcaption)
    vleft = nleft
    IF vleft=0 && اولین فیلد از سمت چپ
    vleft = pwidth*3937
    ENDIF
    SELECT rptstruct
    REPLACE height WITH 3837 ,hpos WITH vleft , vpos WITH ((HeaderHeight-1)*3937) , width WITH 104.167
    vcnt = vcnt + 1
    ENDSCAN
    فکر نمی کنم کدها نیاز به توضح خاصی داشته باشه ارتفاع خط – فاصله از چپ و فاصله از بالا تنظیم می شود
    همین مراحل برای بدست آوردن تنظیمات عنوانین به کار می رود اگر دوستان مطلبی برایشان نامفهوم بود بفرمایید تا توضیح بیشتر داده شود.

  11. #11
    کاربر دائمی
    تاریخ عضویت
    فروردین 1383
    محل زندگی
    ایران
    پست
    120

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    ایده خیلی خوبیه
    من خیلی وقت پیش یه کم تو این زمینه کار کردم
    و به شکل محدود توی یه نرم افزار گذاشتم چون میخواستم فقط ارتفاع ردیف ها ، ارتفاع هدر ، اندازه و نوع فونت و طول ستون رو تغییر بدم. اون قسمت برای چاپ بارکد بود روی لیبل های مختلف .
    با زحمت هایی که مهران عزیز کشیده اند اگه دوستان همت کنند حتما یه گزارش ساز خوبی ساخته خواهد شد.
    یه ایده که از قدیم تو ذهن منه اینه که برای دیزاین اون از یه دیزاینر مثل اونی که خود فاکس داره استفاده کنیم و بعد به روش مهران جان جنریت کنیم . اونوقت یه سیستم کاملی خواهد شد.
    البته فعلا بايد همين روش رو تا آخرش بريم .
    آقا مهران واقعا خسته نباشي .

  12. #12
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    ممنون از عنایت شما
    همه دوست دارن وقتی زحمتی و شروع کردن نتیجه بده . اولش فکر میکردم خیلی پروژه مهمیه چون خودم مدتها درگیرش بودم احساس می کردم بچه ها هم احتیاج داشته باشند اما بعدا که دیدم استقبال ازش کم بود کمی سرد شدم.
    دوست داشتم توی این مبحث بچه ها بیشتر شرکت کنند تا نتیجه خوبی بده
    پله پله بهتر بود تا نقد بشه بهمین دلیل بین ارسالهام فاصله می انداختم. اما خب جز همین یکی دو نظر ارسال دیگه ای ندیدم
    به هر حال منتظر نظر دوستان هستم
    یا علی

  13. #13
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    76

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    محران جان عزیز مثل همیشه نکات آموزشی شما منحصر به فرد ، جالب و مورد نیاز کار بران است من شخصا همیشه منتظر مطرح نمودن نکات آموزشی شما بوده ام و تمامی پاسخهای شما و دیگر اساتید را به سئوالات کاربران را دنبال می کنم . دلسرد نشوید یقیناً هستند دوستانی که از مطالب شما استفاده میکنند همانطور که گفتید اگر طرح باز تر شود مسلماً استقبال نیز بیشتر خواهد شد

  14. #14
    کاربر دائمی
    تاریخ عضویت
    دی 1387
    محل زندگی
    اصفهان
    پست
    186

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    با اهدا سلام و تشکر
    با آرزوی موفقیت در سال نو برای شما
    دوست گرامی اگر یک نمونه سورس نیز آپلود نمایید بسیار سپاسگزار خواهیم شد.
    ارادتمند زمانی

  15. #15
    کاربر دائمی آواتار arashkhaan2002
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    اصفهان و تهران
    پست
    193

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    مهران عزیز

    من قبلا به صورت آماتور این کارو کردم ولی همیشه تو فکرم این بوده که یک سیستم جامع گزارش ساز باید برای فاکس طراحی کنیم ، البته سیستمهائی در بازار وجود داره که DBF رو هم ساپورت میکنه ولی قیمتش بالاست و البته فارسی هستند.
    کاری که من کردم به این شکل بوده که فیلدها و اسامی سر ستون گزارش رو در دستور SQl رو به صورت پارامتری تعریف میکردم و و هر کدوم رو که کاربرتعیین میکرد داخل متغیر میریختم تا جزو کیوری بیاد ،بعدش 2
    تا رپورت آماده کرده بودم یکی پورتریت یکی لندسکیپ با عرض ستون های ثابت وفقط تعداد فیلدهای انتخابی رو چک میکردم ببینم به کدوم صفحه رپورت میخوره به پورتریت یا لندسکیپ و به کاربر نتیجه رو نمایش میدادم.
    ولی اگر این تحلیل شما از ابتدا نحوه گزارش گیری و سورت و گروه بندی داده ها یعنی کیوری رو هم از اول خودش بسازه و بعد از نمایش گزارش هم به ایجاد نمودار دلخواه برای کاربر بریسه دیگه نورعلی نوره.
    با تشکر از زحماتت.

  16. #16
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    گرگان
    پست
    473

    نقل قول: آموزش گام به گام ساخت گزارش پویا

    سلام
    من یک برنامه تحتvba دارم و می خوام کاربر بتونه هر وقت خواست از هر فرمی گزارش بگیره
    اما نمی خوام توی برنامه برای همه فرم ها گزارش ایجاد کرده باشم. برای این کار من یک جدول و یک کوئری اضافه در برنامه گذاشتم که متناسب با فرمی که کاربر در اون هست با زدن دکمه گزارش گیری ابتدا نام ومشخصات تمام فیلد های مربوط به جدولی که فرم بر پایه اون ایجاد شده داخل این جدول کمکی وارد می شه بعد کوئری کمکی بر مبنا این جدول مقدار می گیره و گزارش بر اساس این کوئری کمکی ایجاد می شه و تمام فیلدههای جدول در گزارش وارد میشه .
    فرم های موجود دربرنامه شامل ساب فرم هم هستند که این باعث می شه تعداد فیلدها خیلی زیاد باشه و مشکل من از همین جا شروع می شه .با جابه جا کردن و پخش کردن فیلد ها در قسمت های مختلف گزارش برای فرم های معمولی برنامه درست کار می کنه اما در بعضی از فرم ها یک فیلد چند مقدار داره مثل قیمت پیشنهادی برای یک محصول توسط شرکت های مختلف در اینجا برنامه برای هر کدوم از این مقدار ها یک گزارش ایجاد می کنه یک نفر به من گفت می تونم از grouping
    استفاده کنم ولی یا این کار اشتباه بود یا من بلد نیستم . ممنون می شم اگر
    راهنماییم کنید






قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •