PDA

View Full Version : جستجو و گزارش گیری



fokker
دوشنبه 14 تیر 1395, 07:26 صبح
با سلام . سوالی در خصوص جستجو و گزارشگیری داشتم که اگر اساتید محترم پاسخ دهند بسیار متشکر خواهم بود
میخواستم بدونم به چه صورتی میتوان در هنگام جستجوی محدوده ی از اطلاعات که خود از چند زیر مجموعه تشکیل شده است پس از یافتن اطلاعات مورد نیاز، بتوان با انتخاب یک یا چند آیتم از زیر مجموعه های مورد نظر ، گزارشگیری و پرینت تهیه نمود.

mazemi2
دوشنبه 14 تیر 1395, 09:04 صبح
شما بوسیله محدود کردن یک کوئری سرچ را انجام میدید، که نمونه فایلش در برنامه نویس پیدا میشه، سپس با ایجاد یک محدودیت جدید به روی یک کوئری دیگر می توانید گزارش خود را بسازید، که احتمالا از طریق یک فرم اینکار رو انجام می دهید.
اگر نمونه فایل دارید ضمیمه کنید تا بقیه اصلاح کنند.

fokker
دوشنبه 14 تیر 1395, 11:47 صبح
شما بوسیله محدود کردن یک کوئری سرچ را انجام میدید، که نمونه فایلش در برنامه نویس پیدا میشه، سپس با ایجاد یک محدودیت جدید به روی یک کوئری دیگر می توانید گزارش خود را بسازید، که احتمالا از طریق یک فرم اینکار رو انجام می دهید.
اگر نمونه فایل دارید ضمیمه کنید تا بقیه اصلاح کنند.

سلام . ممنون از لطفت. ببینید من فکر کنم راه حلش در استفاده از combo box multiselect باشه، اما نمیدونم دقیقا باید چی کار کنم. در جدولی که دارم تایپ فیلدی که با اون سرچ میکنم رو multipleValue گذاشتم اما این کار باعث شد بقیه سرچ های که با اون فیلد درست کرده بودم ارور بدن. متاسفانه هم حجم فایلم زیاده ، اگه بتونید نمونه کوچکی بذارید یا بیشتر توضیح بفرمایید ممنون میشم.

mazemi2
دوشنبه 14 تیر 1395, 20:31 عصر
هرچند مساله برای من مبهم هست ولی از ایده multi select شما در یک لیست باکس استفاده کردم. ساختار داده در نمونه فایل، ساده و در دو جدول که رابطه یک به چند دارد خلاصه شده است. امیدوارم برای سوالتان ایده بدهد.

fokker
سه شنبه 15 تیر 1395, 07:03 صبح
هرچند مساله برای من مبهم هست ولی از ایده multi select شما در یک لیست باکس استفاده کردم. ساختار داده در نمونه فایل، ساده و در دو جدول که رابطه یک به چند دارد خلاصه شده است. امیدوارم برای سوالتان ایده بدهد.

سلام . ممنون از لطفت بابت راهنمایی. میشه لطفا نمونه بذاری که مشابه همین کار باشه با این تفاوت که (مانند فرم Form1) دارای دوتا کمبو باکس باشه ، به این ترتیب که با انتخاب گزینه مناسب در کمبو اولی (در نمونه پیوست بنام کالای اصلی می باشد) ، موارد زیر مجموعه در کمبو دومی نمایش داده بشه و سپس با انتخاب یکی از موارد در کمبو دومی ، لیست باکس آپدیت بشه.

fokker
سه شنبه 15 تیر 1395, 07:16 صبح
هرچند مساله برای من مبهم هست ولی از ایده multi select شما در یک لیست باکس استفاده کردم. ساختار داده در نمونه فایل، ساده و در دو جدول که رابطه یک به چند دارد خلاصه شده است. امیدوارم برای سوالتان ایده بدهد.


راستی در کوئری (بنام کوئری3) در فایل پیوست در قسمت Criteria نوشته شده (In (8;9;10 ، میشه لطفا دلیلش رو برام توضیح بدید. ممنون

mazemi2
سه شنبه 15 تیر 1395, 12:07 عصر
راستی در کوئری (بنام کوئری3) در فایل پیوست در قسمت Criteria نوشته شده (In (8;9;10 ، میشه لطفا دلیلش رو برام توضیح بدید.

از کوئری 3 برای ساخت ریپورت استفاده میشه و برای استخراج کوئری 3 از معیارهای وارد شده در فرم (لیست باکس) استفاده می کنیم. بنابراین کوئری 3 در هر بار اجرا از نو پارامترهای محدود کننده را از فرم دریافت می کند. می دانیم که با توجه به داده های فایل نمونه، دستورات select زیر باهم یکسانند :
(SELECT* FROM kala INNER JOIN kala2 ON kala.ID = kala2.kalaID WHERE kala2.ID in (8,9,10
و
((SELECT* FROM kala INNER JOIN kala2 ON kala.ID = kala2.kalaID WHERE (((kala2.ID)=8)) OR (((kala2.ID)=9)) OR (((kala2.ID)=10
که بنده از روش اولی استفاده کردم. عدد 8، 9 و 10 اشاره به آخرین گزارش شماست که مربوط کد کالاهای فرعی iphon5 ،iphon4 و iphon6 می باشند. برای جزییات روش استخراج کوئری 3 به کد VBA فرم نگاهی بیاندازید.



میشه لطفا نمونه بذاری که مشابه همین کار باشه با این تفاوت که (مانند فرم Form1) دارای دوتا کمبو باکس باشه ، به این ترتیب که با انتخاب گزینه مناسب در کمبو اولی (در نمونه پیوست بنام کالای اصلی می باشد) ، موارد زیر مجموعه در کمبو دومی نمایش داده بشه و سپس با انتخاب یکی از موارد در کمبو دومی ، لیست باکس آپدیت بشه.

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

fokker
سه شنبه 15 تیر 1395, 17:56 عصر
از کوئری 3 برای ساخت ریپورت استفاده میشه و برای استخراج کوئری 3 از معیارهای وارد شده در فرم (لیست باکس) استفاده می کنیم. بنابراین کوئری 3 در هر بار اجرا از نو پارامترهای محدود کننده را از فرم دریافت می کند. می دانیم که با توجه به داده های فایل نمونه، دستورات select زیر باهم یکسانند :
(SELECT* FROM kala INNER JOIN kala2 ON kala.ID = kala2.kalaID WHERE kala2.ID in (8,9,10
و
((SELECT* FROM kala INNER JOIN kala2 ON kala.ID = kala2.kalaID WHERE (((kala2.ID)=8)) OR (((kala2.ID)=9)) OR (((kala2.ID)=10
که بنده از روش اولی استفاده کردم. عدد 8، 9 و 10 اشاره به آخرین گزارش شماست که مربوط کد کالاهای فرعی iphon5 ،iphon4 و iphon6 می باشند. برای جزییات روش استخراج کوئری 3 به کد VBA فرم نگاهی بیاندازید.


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

ممنون از لطفت. یک نگاهی به روابط بانک من بنداز. سوال من اینه که میخوام در جدول TblMakan از فیلد Name_makan بعنوان کمبو شماره یک و در جدول Tbl_Repair از فیلد repairName بعنوان کمبو شماره دو استفاده کنم و بعد از انتخاب کمبو ها اطلاعاتی (شامل IDNumber و Propertise و InsertModulOne ) از جدول Components در لیست باکس مشاهده شود. چطور باید عمل کنم.؟

mazemi2
چهارشنبه 16 تیر 1395, 02:17 صبح
اگر شما فرمی با نام form1 و در ان كمبويي با نام combo1 برای انتخاب مکان داشته باشید، یک کوئری بنام q1 از سه جدول کار جزیی، مکان و تعمیرات با دستور ذیل بسازید:
SELECT TBL_makan.ID_makan, TBL_makan.name_makan, TBL_repair.repairName, TBL_repair.codeRep, TBL_makan.ID_makan
FROM (TBL_makan INNER JOIN karejozi ON TBL_makan.ID_makan = karejozi.makan) INNER JOIN TBL_repair ON karejozi.ID_joz = TBL_repair.ID_jozWHERE (((TBL_makan.ID_makan)=[Forms]![Form1]![Combo1]));

در همان فرم یک، از combo2 براي انتخاب تعميرات استفاده نماييد.

برای استخراج اطلاعات نهایی مورد نظرتان کوئری دیگری بسازید با دستور:
SELECT components.idNumber, components.properties, components.insertMedoulOne, TBL_repair.repairName, Q1.codeRep
FROM ((TBL_makan INNER JOIN karejozi ON TBL_makan.ID_makan = karejozi.makan) INNER JOIN (TBL_repair INNER JOIN Query ON TBL_repair.codeRep = Q1.codeRep) ON karejozi.ID_joz = TBL_repair.ID_joz) INNER JOIN components ON TBL_repair.codeRep = components.codeRep
WHERE (((Q1.codeRep)=[Forms]![Form1]![Combo2]));

بقيه رويه كارتان در نمونه فايل هاي ضميمه نشان داده شده است.