PDA

View Full Version : سوال: سوالی در مورد طراحی پرسوجو ؟



alifatehi
سه شنبه 09 مهر 1387, 02:57 صبح
سلام

طبق فایل زیر می بینید که نیاز دارم به یک پرسوجو به این عنوان که گزارشی به کاربر بدهد:

کاربر نیاز دارد که دو تاریخ رو بدهد و گزارشی مبنی از نوع بیمه ومبلغ بیمه را به کاربر بدهد .

تمام کار با یک جدول است . و به نظر من فیلد هایی که درگیر این موضوع هستند فیلد : kindBme (نوع بیمه ) amountBime (مبلغ بیمه) daBeginBime (تاریخ شروع بیمه ).

روند کا ربه این صورت است : پنجره ای باز می شود و کاربر دو تاریخ را وارد می کند مثلا تاریخ روز به این شکل : 86/02/12 تا 86/02/13 بعد دکمه گزارش را می زند . و لیستی که مبنی از نوع بیمه و مبلغ کلی که به این نوع بیمه اختصاص داده شده است را نمایش می دهد .


مثلا : در یک روز ممکن است 4 بیمه بدنه به ارزش اولی 10 دومی 20 سومی 30 چهارمی 40 --- 5 تا بیمه ثالث به ارزش اولی 20 دومی10 سومی 30 چهارمی 40 پنجمی 250 به ثبت رسیده باشد .
گزارش باید تمام ارزش هارو باهم جمع ببنده و بگه این نوع بیمه چقدر در اون تاریخ ازش داشته ( پول گرفته)
.

نکته فیلد kindbime از نوع LookUp Wizard است که در فرم به صورت کمبو باکس قرار گرفته است.

alifatehi
سه شنبه 09 مهر 1387, 19:37 عصر
بهتر چه کاری انجام بدم


ایا بهتر نیست از کریستال رپورت استفاده کنم

مهدی قربانی
چهارشنبه 10 مهر 1387, 01:12 صبح
سلام
آقاي فاتحي ببينيد اين نمونه مطابق خواسته شماست ؟ چنانچه مطابقت داشت و توضيحات بيشتري لازم بود بفرمائيد خدمتتون ارائه بشه .

alifatehi
چهارشنبه 10 مهر 1387, 02:20 صبح
یه مشکلی پیش امد زمانی که روی دکمه گزارش کلید می کنم این پنجره باز می شه Enter Parameter Value علت چیست ؟

البته قابل ذکر بگم که کمی تغییرات بهشدادم و فقط اجازه دادم فیلد DaBeginBime , KindBime نمایش داده بشه.

البته داخل گزارش باید همین تور باشه .

سوال دیگه اگر تغییراتی خواستم بدم مثل این نوع بیمه چند درصد از کل مبلغ رو به خود اختصاص داده باید چه بکنم .

مهدی قربانی
چهارشنبه 10 مهر 1387, 17:30 عصر
سلام
خدمت شما عارضم كه اگر به Query1‌توجه كنيد در قسمت Criteria‌ آدرس كنترلهاي TextBox موجود روي Form1 داده شده كه در اصل پرس و جو مقادير تاريخ مورد نيازش رو به اينصورت دريافت مي كنه ، اون كادر پرسش پارامتر كه شما مشاهده كرديد علتش اينه كه چون گزارش رو بطور مستقيم باز كرديد طبيعيه كه چون گزارش پارامترهاي لازم رو ( از تاريخ تا تاريخ ) دريافت نمي كنه از شما اين موارد رو سئوال مي كنه اين يعني اينكه شما بايد گزاش رو از طريق Form1‌ و تعيين تاريخها باز كنيد .
در مورد درصد هم شما اول بايد در قسمت Report Header گزارش جمع كل AmountBime رو بدست بياريد و بعد در قسمت KindBime Footer گزارش هم در يك تكست باكس كه فرمتش از نوع Percent تعيين شده بواسطه تقسيم جمع مبالغ هر بيمه با جمع كل مبالغ ، سهم درصد رو بدست بياريد
نمونه مربوطه خدمت شما

alifatehi
جمعه 12 مهر 1387, 01:08 صبح
سلام
اقامهدی خیلی ممنون از راهنمایی های که کردی .

شرمنده نا واردی ما شما رو دچار زحمت کرده .

"راستش همان گونه که در نمونه قبل برام مثال زدی من هم همین کارهارو کردم فقط جای مغییر ها رو عوض کردم حالا نمی دونم چرا اجرا نمی شه حتی queriy اونم درست کار نمی کنه لطف کنید بگید مشکل من کجاست ."
این مشکل خودم حل کردم حالا نمی دونم درست حل کردم یا نه : جدول userid نیز به کوئری اضافه مشکل حل شد فکر می کنم ایراد از کلیدش بود.

سوال دیگم چگونه طبق مثال شما هر نوع بیمه می تونه تعدادش رو محاسبه کنه مثلا اگر بیمه بدنه 10 تا است تعداد بنویسه بعد نوع بیمه بعد بقیه آیتم ها.



منتظرم

متشکر

alifatehi
یک شنبه 14 مهر 1387, 02:54 صبح
ممکن در یک طول تاریخ بیش از 50 مورد اطلاعات باشه . ما 17 مورد بیمه داریم که نمی توانم انها را در یک صفحه قرار داد . پس طبیعی است که در چند صفحه گزارش خلاصه شود . نکته ای که اینجاست این است . برای ما جمع کلی مبلغ خیلی مهمه ایا می توان آن را در اخر گزارش ذکر کرد.

و سوالی که اینجا برای من پیش امد این که خوب یک بازه زمانی ما 20 مورد داریم و 3 صفحه گزارش اما در یک بازه زمانی دیگه 80 مورد و در 6 صفحه . آیا هنوز می توان همان شرط بالا را داشته باشیم.

alifatehi
یک شنبه 14 مهر 1387, 03:21 صبح
در ادامه سوال بالا می توان گزارشی مثل تصویر زیر ساخت

در صورت انجام این کار می توانید کمک کنید

جزئیات جدولی که بایت مثل تصویر زیر گزارش بده :

نوع بیمه COmbo box با خصوصیت Look Wizard
مبلغ ها همه به صورت text box
و همه دداخل یک جدول هستند.

مهدی قربانی
دوشنبه 15 مهر 1387, 01:14 صبح
سلام
فكر مي كنم شما حالتي مثل Crosstab‌ مورد نظرتون باشه ، روش كار مي كنم .

alifatehi
دوشنبه 15 مهر 1387, 02:46 صبح
منظرم اینکه گزارش مثل تصویر بالا باشد .
سوال دومم اون نمونه گزارشی که لطف کردید و برام طراحی کردی می تونه تعداد نوع بیمه رو نیز نشان بده . مثلا : اگر 3 تا بیمه بدنه داریم برای هر کدومشاون یک رکورد اختصاص نده بلکه بنویسه بیمه بدنه 3 عدد مبلغ کل بیمه بدنه(جمع سه تاشون بشه) و بعد از مقدار کل کم کند..

alifatehi
چهارشنبه 17 مهر 1387, 14:29 عصر
منتظر جواب ها و راهنمایی های شما هستیم

مهدی قربانی
پنج شنبه 18 مهر 1387, 00:46 صبح
سلام
جناب فاتحي ، گزارش bimeID_Crosstab رو در نمونه ضميمه ملاحظه كنيد ، اين گزارش با كمك گرفتن از يك كوئري Crosstab و بهره گرفتن از يكسري علمليات داخل گزارش ايجاد شده ( مطابق با تصويري كه ارسال كرده بوديد .

alifatehi
جمعه 19 مهر 1387, 12:53 عصر
سلام
جناب فاتحي ، گزارش bimeID_Crosstab رو در نمونه ضميمه ملاحظه كنيد ، اين گزارش با كمك گرفتن از يك كوئري Crosstab و بهره گرفتن از يكسري علمليات داخل گزارش ايجاد شده ( مطابق با تصويري كه ارسال كرده بوديد .


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

مهدی قربانی
شنبه 20 مهر 1387, 01:20 صبح
سلام
براي بازه زماني از ابزار فيلتر خود گزارش كمك گرفتم اگر به رخداد On Open گزارش توجه كنيد اقدامات مشخصه

مهدی قربانی
شنبه 20 مهر 1387, 22:08 عصر
سلام
متوجه منظورتون نشدم ( جستجو گرها، توزيع ، فيلد جديد ) .

alifatehi
یک شنبه 21 مهر 1387, 00:01 صبح
سلام
متوجه منظورتون نشدم ( جستجو گرها، توزيع ، فيلد جديد ) .


ببخشید اشکال تایپی داشتم می خواستم بدونم شما به چه طریق این کوئری و گزارش را تهیه کردید . راستش منم همین کار و کردم اما مثل نمونه شما نشد .

بازم ممنون

مهدی قربانی
یک شنبه 21 مهر 1387, 08:41 صبح
سلام
من در نمونه آخري ديگه از كوئري استفاده نكردم بلكه در On Open گزارش بواسطه كدنويسي مقادير موجود در تكست باكسهاي موجود روي فرم رو در 2 متغير ذخيره كردم و بواسطه ساخت يك رشته حاوي تابع Between And از خصوصيت Filter‌ گزارش اسفاده كردم تا بتونم مقادير موجود در گزارش رو بر اساس تازيخهاي دريافتي از فرم نمايش بدم يك بار ديگه به كدنويسيهاي فرم و گزارش دقت كنيد مراحل كار مشخصه فقط بازم تاكيد مي كنم نكته كليدي در خصوص نمايش اطلاعات بر اساس بازه زماني در استفاده از خصويت Filter گزارش هست كه بواسطه كد نويسي اشاره شده عملياتي ميشه ، ضمناً اگر موفق نشديد نمونه خودتون رو با توضيحات كامل بذاريد تا ببينم اشكالش كجاست .

alifatehi
یک شنبه 21 مهر 1387, 12:36 عصر
راستش من در طراحی Crosstab مشکل دارم که نمی دونم باید به چه شیوه ای طراحی کنم عینا مثل نمونه شما اعمال می کنم اما جواب نمی ده راستی شما از ویزارد خود اکسس برای Crosstab استفاده کردید در صورت استفاده شما از آن لطف کنید توزیع بدید.

باتشکر

مهدی قربانی
دوشنبه 22 مهر 1387, 00:36 صبح
سلام
منظور شما نحوه ساخت نمونه آخريه يا نمونه قبليش كه با استفاده از كوئري Crosstab ايجاد شده ؟

alifatehi
دوشنبه 22 مهر 1387, 00:43 صبح
سلام
منظور شما نحوه ساخت نمونه آخريه يا نمونه قبليش كه با استفاده از كوئري Crosstab ايجاد شده ؟


منظورم طراحی کوئری Crosstab است .

مهدی قربانی
سه شنبه 23 مهر 1387, 02:53 صبح
سلام
در قسمت كوئريها يكي از گزينه ها Query Crosstab Wizard هست كه وقتي وارد ويزارد مربوطه بشيد با توجه به مراحل و توضيحات متوجه روش كار خواهيد شد در اصل در كراس تب شما مثلاً مي تونيد دريافتيهاي يكسال شخص رو كه در قالب ركوردهاي ماهيانه ( به شكل رديفي عمودي ) ثبت شده رو در يك ركورد با 12 ستون متشكل از ماههاي سال نمايش بديد در اين حالت كوئري نام شخص رو گروه مي كنه و بعنوان Row Heading ( سر رديفها ) با خاصيت Row Heading لحاظ ميكنه و ماههاي سال رو به عنوان Column Heading ( سر ستونها ) با خاصيت Group By در نظر ميگيره و نهايتاً دريافتي ماهيانه رو به عنوان Value با خاصيت Sum در نظر ميگيره كه در اصل نمايانگر مبالغ ماهيانه هر شخص هست .

alifatehi
چهارشنبه 24 مهر 1387, 22:51 عصر
سلام
در قسمت كوئريها يكي از گزينه ها Query Crosstab Wizard هست كه وقتي وارد ويزارد مربوطه بشيد با توجه به مراحل و توضيحات متوجه روش كار خواهيد شد در اصل در كراس تب شما مثلاً مي تونيد دريافتيهاي يكسال شخص رو كه در قالب ركوردهاي ماهيانه ( به شكل رديفي عمودي ) ثبت شده رو در يك ركورد با 12 ستون متشكل از ماههاي سال نمايش بديد در اين حالت كوئري نام شخص رو گروه مي كنه و بعنوان Row Heading ( سر رديفها ) با خاصيت Row Heading لحاظ ميكنه و ماههاي سال رو به عنوان Column Heading ( سر ستونها ) با خاصيت Group By در نظر ميگيره و نهايتاً دريافتي ماهيانه رو به عنوان Value با خاصيت Sum در نظر ميگيره كه در اصل نمايانگر مبالغ ماهيانه هر شخص هست .


خیلی ممنون اما من حدود 30 در صد از گفته های شما رو متوجه شودم .وقتی می خوام مبلغ ها رو جمع ببنه به مشکل برخوردم براش یک ستون جدید می سازه که داخلش خالی است . و مبلغ ها رو هرکدوم داخل یک ستون دیگه می نویسه .


امکان این وجود داره که تمام مراحل را برام بنویسید

.شرمنده

مهدی قربانی
جمعه 26 مهر 1387, 20:26 عصر
سلام
ببينيد اين لينك كمكي مي كنه ؟
http://www.access.qbuilt.com/html/crosstab_queries.html

alifatehi
دوشنبه 29 مهر 1387, 00:55 صبح
خیلی ممنون از راهمایی که کردید جالب بود اما مشکل برای ترجمه متن انگلیسی آن
در صورت مچکر .

راستش فایلی که در زیر آوردم نمونه از برنامه من است که گزارشی که شما زحمت کشیدید در ان قید شده است اما مشکلاتی دارد ایا این مشکلات قابل حل است در صورت قابل حل بودم اصلاح می فرمائید . و نظرتون در مورد این پروژه ساده بگید که کجا ها(چه مواردی) باید اضافه بشن کجا ها (چه مواردی)باید حذف شوند . در کل نظرتون بگید. البته قابل ذکر است که این برنامه آزمایشی است و برای مدت یک ماه کاربر باید با آن کار کند .

مهدی قربانی
سه شنبه 30 مهر 1387, 00:48 صبح
سلام
شما قابليت و خلاقيت لازم رو داريد و قطعاً در صورت تلاش بيشتر مي تونيد موانع رو از سر راه برداريد .
در مورد پروژه شما بايد عرض كنم اول بستگي داره به خواسته كاربر شما اما از نظر فني و طراحي مشكل خاصي بنظر نمي رسه و ميشه گفت كه متناسب طراحي شده .
اما در مورد اصلاحات : اول اينكه تاريخهايي كه روي فرم تعيين كرديد قطعاً نتيجه اي در بر نخواهد داشت 870101 تا 870102 در نمونه شما من اين پيش فرض رو تغيير دادم و دوم در گزارش حتي اگر تاريخها رو غير از اون چيزي كه شما تعيين كرده بوديد وارد مي شد از مجموع ركوردها فقط 1 ركورد ديده ميشد كه در نتيجه ممكن بود محاسبات هماهنگ نباشه و غير طبيعي نشون بده كه علت اين مسئله هم قرار گرفتن Page Break در گزارش بود . الان فكر مي كنم كه ديگه مشكلي نباشه .

alifatehi
پنج شنبه 02 آبان 1387, 23:58 عصر
این پیغام خطا از چیست ؟ در صورت دانشتن راهنمایی کنید چگونه مشکل را حل کنم .

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

مهدی قربانی
جمعه 03 آبان 1387, 00:56 صبح
سلام
آقاي فاتحي بيشتر توضيح بديد ، چه اطلاعاتي رو در دفعات بعدي وارد مي كنيد ضمناً آيا فرمت داده هاي ورودي متفاوت هست ؟

alifatehi
جمعه 03 آبان 1387, 12:19 عصر
سلام
آقاي فاتحي بيشتر توضيح بديد ، چه اطلاعاتي رو در دفعات بعدي وارد مي كنيد ضمناً آيا فرمت داده هاي ورودي متفاوت هست ؟

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

alifatehi
یک شنبه 05 آبان 1387, 23:47 عصر
خوب سوال قبلی که جوابی براش پیدا نکردم.

حالا یک سوال یا یک در خواست .

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

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

مهدی قربانی
دوشنبه 06 آبان 1387, 00:18 صبح
سلام
در ارتباط با اون خطايي كه تصوير كده بوديد من همه جور تستش كردم ولي با خطا يا پيغامي روبرو نشدم ولي يه كاري مي گم انجام بديد ، در كد نويسي كامند باتون فرم تاريخ اون خطي كه عبارت
On Error GoTo Err_cmdreport_Click نوشته شده رو كامنت كنيد بعد فرم رو اجرا كنيد و ببينيد اون خطاي Mismatch روي كدوم خط قرار ميگيره .
در مورد سئوال دومتون هم مشخص كنيد كدوم فرم و چه اطلاعاتي رو مي خواين در قالب گزارش داشته باشيد البته بهتره اين مبحث جديد به تاپيك جديدي هم منتقل بشه چون هم موضوعش فرق مي كنه هم اين تاپيك داره خيلي طولاني ميشه .

alifatehi
دوشنبه 06 آبان 1387, 01:42 صبح
سلام
در ارتباط با اون خطايي كه تصوير كده بوديد من همه جور تستش كردم ولي با خطا يا پيغامي روبرو نشدم ولي يه كاري مي گم انجام بديد ، در كد نويسي كامند باتون فرم تاريخ اون خطي كه عبارت

ه .

خیلی ممنون
چشم سعی می کنم فردا شب جواب بشو بدم


در مورد سئوال دومتون هم مشخص كنيد كدوم فرم و چه اطلاعاتي رو مي خواين در قالب گزارش داشته باشيد همان فرمی که اطلاعات رو وارد می کنیم . می خوام زمانی که کاربر کلید می کند روی باتون گزارشی از آن فرم نمایش داده بشه . به همین ترتیب برای بقیه فرم ها مثل نمونه زیر که زمانی دکمه Preview Fact Sheet را می زنیم .اطلاعات نمایش داده می شود.


البته بهتره اين مبحث جديد به تاپيك جديدي هم منتقل بشه چون هم موضوعش فرق مي كنه هم اين تاپيك داره خيلي طولاني ميشهراستش هدفم انیکه در آخر کار یک مقاله آموزشی تهیه کنم مشکلاتم و راه حل هایی که شما و دیگر دوستان پیشنهاد دادن قید کنم برای دیگر دوستان مبتدی . On Error GoTo Err_cmdreport_Click نوشته شده رو كامنت كنيد بعد فرم رو اجرا كنيد و ببينيد اون خطاي Mismatch روي كدوم خط قرار ميگيره .

alifatehi
سه شنبه 07 آبان 1387, 22:12 عصر
منتظر ایده یا نظرت شما هستم

alifatehi
پنج شنبه 09 آبان 1387, 12:52 عصر
منتظر
راه حل شما هستم