جستجو در اکسس به کمک یک کمبو باکس ساده
سلام به یکی از آموزش های سافت پلاس خوش اومدید .امروز در مطلب دیگری در زمینه آموزش اکسس می خواهیم به سراغ نحوه جستجو کردن در اکسس به کمک یک کمبو باکس ساده برویم .
جستجوی مقادیر در اکسس همواره یکی از دغدغه ها و نیاز های اصلی کاربران در نرم افزار اکسس بوده و هست.
اینکه به چه نحو و از طریق چه روش یا روش هایی می توان به جستجو کردن اطلاعات یا به نوعی فیلتر کردن اطلاعات در اکسس پرداخت خود مطلب مفصلی است .
چون برای این کار انواع و اقسام راهها و روش های مختلف وجود دارد .
اینکه برای جستجوی مقادیر اکسس از قابلیت های فیلتر کردن اطلاعات در جداول استفاده کنیم .
یا اینکه از قابلیت Find در اکسس استفاده کنیم .
به طراحی و ایجاد کوئری های مختلف در محیط اکسس بپردازیم و از طریق آنها اطلاعات مورد نظر خود را فیلتر کنیم .
یا اینکه قابلیت هایی را برای جستجوی اطلاعات از طریق فرم ها ایجاد کنیم .
بعنوان مثال می توانیم در داخل یک فرم یک تکس باکس قرار دهیم و به جستجوی اطلاعات خود بر مبنای مقادیری که در این تکس باکس وارد می کنیم بپردازیم .
البته این که بخواهیم از کدام یک از این روش ها استفاده کنیم کاملا به سلیقه و نیاز ما و صد البته به مهارت ما برای کار با این امکانات و البته ایجاد قابلیت های جدید در محیط اکسس دارد .
ما پیشترها و در همین سایت در طی چند مطلب به بررسی روش های پرداختیم که به کمک آنها می توانستیم به جستجو و یافتن مقادیر مورد نظر خود در قسمتهای مختلف اکسس بپردازیم .
مثلا در مطلب ایجاد قایلیت جستجوی همزمان در فرم اکسس به بررسی این مطلب پرداختیم که چگونه قابلیتی را ایجاد کنیم که به کمک آن بتوانیم در همان لحظه که ما مشغول درج عبارت مورد نظر خود در کادر مربوطه هستیم اطلاعات مورد نظر ما نیز فیلتر شوند .
قابلیتی که بسیار می تواند سرعت کار ما را بالا ببرد .
حالا امروز می خواهیم به بررسی یک روش دیگر بپردازیم .
در این روش می خواهیم یاد بگیریم که چه طور می توان اطلاعات موجود در یک فرم را با استفاده از یک کمبو باکس جستجو نموده و اطلاعات مورد نظر را فیلتر کرد.
من علیرضا شهرآئینی هستم و اگر تا انتهای این آموزش من را همراهی کنید هر چیزی که برای ایجاد این نوع از جستجو در اکسس نیاز داری را به شما خواهم آموخت .
البته در کنار متن این آموزش می توانید فیلم مربوط به همین آموزش را در انتهای این مطلب ببینید و همینطور یک نمونه از فایلی را که در اینجا می سازیم را می توانیید دانلود کنید .
پس تا انتهای این اموزش همراه من باش .
فهرست محتوا
مراحل جستجو و فیلتر کردن د اده ها با استفاده از کمبو باکس ها
برویم به سراغ اصل موضوع آموزشمان .
ما یک فرم داریم که در بالای آن یک کمبوباکس قرار دارد . داخل کمبو باکس اسامی مربوط به چند نویسنده وارد شده است .
اتفاقی که می افتد این است که شما هر نویسنده ای را که در داخل کمبو باکس خود انتخاب می کنید برنامه اطلاعات مربوط به همان نویسنده را برایتان جستجو کرده و بلافاصله برای شما نمایش می دهد .
برای شروع جستجوی مقادیر اکسس با این روش نیاز به یک جدول داری که حاوی تعدادی از اطلاعات باشد .
من از جدول زیر برای این کار استفاده می کنم . اول نگاهی به این جدول در نمای طراحی بیندازید.
تصویر زیر هم همان جدول بالا را نشان می دهد که با یک سری از اطلاعات مربوط به نام نویسنده و نام کتابها و موضوعات کتابهای مورد نظر پر شده است.
حالا با در نظر گرفتن همین اطلاعات کار خودمان را شروع می کنیم .
یک پیشنهاد خواندنی : محاسبه بیشترین مقدار رکوردها در جداول اکسس
مرحله اول : ایجاد فرم مورد نظر
اولین کاری که باید انجام دهید این است که برای این جدول یک فرم درست کنید .
درست کردن فرم هم که کاری ندارد . برای این کار خیلی ساده کافی است از سربرگ Create بر روی گزینه Blank Form کلیک کنید. مثل چیزی که در تصویر زیر می بینید .
حالا همین فرم رو که اکسس برایتان درست کرده در محیط Design باز کنید .
بعد از اینکه فرم رو به حالت دیزاین بردید داخل آن کلیک راست کرده و گزینه Form Header/Footer را انتخاب کنید .
یعنی همین گزینه ای که توی تصویر زیر می بینید .
با این کار فرم اکسس شامل یک سرصفحه ( Header ) در بالا و یک پاصفحه ( Footer ) در پایین و همچنین یک بخش Detail در ما بین این دو قسمت می شود .
حالا باید یک ساب فرم ( Sub Form) رو هم به فرم خودت اضافه کنی .اما چه جوری ؟ در ادامه به شما می گویم .
مرحله دوم : اضافه کردن ساب فرم به فرم اصلی
در این مرحله باید یک سابفرم را به فرم خودت اضافه کنی .
برای این کار همزمان که در محیط طراحی فرم خودتان هستی از سربرگ Design و از داشبورد Controls گزینه ای به همین اسم یعنی subform رو انتخاب کرده و اون رو روی فرم خودتان قرار بدهید .
تصویر زیر بهتر به شما کمک می کند .
بلافاصله بعد از این کار یک فرم تحت عنوان SubForm Wizard برای شما به نمایش در می آید .
این فرم از شما می خواهد که منبع اطلاعات این سابفرم رو بهش معرفی کنید . یعنی این سابفرم قراره اطلاعات کجارو نمایش بده ؟ این رو باید برای برنامه مشخص کنید.
شما باید جدول کتابها را به عنوان منبع این سابفرم معرفی کنید .
خوب برای این کار اول گزینه Use Existing table and query رو انتخاب کنید. مثل تصویر زیر .
از لیستی که برایتان نمایش داده می شود اسم جدول مورد نظر خودتان رو انتخاب کنید .
در اینجا اسم جدول مورد نظر ما tblbooks بود که من آن را انتخاب کردم .
بعد از این کار بر روی Next کلیک می کنیم .
در این پنجره فیلدهایی را که مورد نظری رو که می خواهید در سابفرم نمایش داده شود را انتخاب کنید .
من در اینجا تمام فیلدها را برای نمایش انتخاب کرده ام .
در پنجره پایانی هم که بر روی Finish کلیک می کنید و کار خودتان را در این مرحله به پایان می برید.
بعد از این کار سابفرم ما در قسمت Detail فرم قرار می گیرد .
اگر لازم دانستید می توانید تغییراتی را در اندازه و سایز سابفرم خود ایجاد کنید و تنظیماتی هم برای فونت آن در نظر بگیرید تا فرمت کمی شکل و شمایل بهتری به خودش بگیرد .
حالا برویم به سراغ مرحله بعدی .
مرحله سوم : افزودن کمبو باکس و تنظیمات مربوط به آن بر روی فرم
توی این مرحله باید یک کمبو باکس رو به فرم خودت اضافه کنید .
انجام این کار هم که چندان مشکل نیست .
دوباره می روید به سربرگ Design و از داشبورد Controls این بار گزینه ComboBox رو انتخاب می کنید و اون رو در قسمت Header یا همون سر صفحه فرم خودت قرار می دهید.
اسم این کمبو باکس را cbo_author می گذارید چون قرار است نام نویسنده ها را در خود ذخیره و نمایش بدهد .
یک نکته ، اگر پنجره Wizard برای شما به نمایش درآمد آن را ببندید چون توی این مرحله بهش احتیاجی ندارید .
حالا می رسید به قسمت شیرین ماجرا و اون هم نوشتن چند خط کد برای این کمبو باکس هستش .
البته ترس به دلتان راه ندهید این کدها هم خودشون ساده اند و هم من تا آنجا که بتوانم آنها را به ساده ترین شکل برای شما توضیح می دهم .
اما هدفمون چی هست .
ما دو تا هدف داریم :
اول این که این کمبو باکس اسامی مربوط به نویسنده ها را در خود ذخیره و به ما نمایش بدهد .
هدف دوم و اصلی هم این است که وقتی ما نام یک نویسنده را از این کمبو باکس انتخاب می کنیم اطلاعات مربوط به این نویسنده در سابفرم ما جستجو و فیلتر بشه و به ما نمایش داده شود .
خوب با این توضیحات برویم سراغ ادامه کارمان .
مرحله چهارم : کمی کد نویسی کنید
اول برویم به سراغ هدف اول مان.
باید کاری کنید که کمبو باکس موجود بر روی فرم اسامی مربوط به نویسنده ها رو از جدول Tblbooks خوانده و در خودش ذخیره کند .
خوب برای این کار هم می توانید از کد نویسی استفاده کنید.
به این کدها نگاه کنید .
"Me.cbo_author.RowSourceType = "value list ("علی شریعتی")Me.cbo_author.AddItem ("پائولو کوئیلو") Me.cbo_author.AddItem ("مرتضی مطهری") Me.cbo_author.AddItem ("برایان تریسی") Me.cbo_author.AddItem ("مایک جی مورگان") Me.cbo_author.AddItem ("محمد مونسی") Me.cbo_author.AddItem
شما با استفاده از این کدها اسامی مربوط به نویسنده های مورد نظر خودتان را به این کمبو باکس اضافه می کنید .
البته برای این کار روش های دیگری هم وجود دارد . برای توضیحات بیشتر به شما توصیه می کنم که فیلم این آموزش رو ببینید .
در کد بالا cbo_author نام کمبوباکسی است که من بر روی فرم خودم قرار دادم .
خوب با این کار هدف اولی که به دنبالش بودید را به سرانجام رساندید .
حالا می رویم سراغ هدف دوم .
نحوه جستجوی مقادیر اکسس با استفاده از یک کمبو باکس
در این قسمت باید کاری کنید که وقتی شما اسم یک نویسنده را از داخل این لیست فروافتادنی یا همان کمبو باکس خودتان انتخاب کردید بلافاصله فقط اطلاعات مربوط به همون نویسنده برای شما فیلتر کرده و در سابفرم مربوطه به نمایش در بیاید .
خوب برای این کار هم چاره ای نیست مگر اینکه برویم به سراغ برنامه نویسی VBA .
در قدم اول باید کاری کنید که برنامه تشخیص بدهد که شما چه مقدار یا بهتر است بگویم که چه نویسنده ای را از داخل کمبو باکس انتخاب کرده اید .
در قدم بعدی باید از برنامه بخواهی که همان اسم انتخاب شده را در داخل یک متغیر ذخیره کند .
خوب برای این دو منظور می توانی از کدهای زیر استفاده کنید :
Dim strsql As String strsql = "select * from tblbooks "'" & where Author='" & Me.cbo_author.Value
در کد بالا ابتدا یک متغیر تعریف کردیم به نام strsql از نوع متنی .
در خط بعدی هم با استفاده از یک عبارت SQL گفتیم که تمام آیتم های مربوط به نویسنده ای رااز جدول tblbooks انتخاب کند که اسم آن نویسنده در کمبو باکس ما انتخاب شده است .
خوب حالا باید اطلاعاتی رو که از طریق کد بالا استخراج کردیم رو در اختیار سابفرم خودتان قرار بدید تا به جای نمایش همه اطلاعات فقط اونها رو به شما نمایش بدهد. همین .
برای این کار هم خیلی ساده از کد زیر استفاده می کنیم .
Me.tblbooks_subform2.Form.RecordSource = strsql
توی این کد خاصیت رکورد سورس سابفرم خودمان همان عبارتی قرار دادیم که توی مرحله قبل آن را بدست آورده بودیم .
اگر که یک بار مقداری را در کمبو باکس خودمان انتخاب کنیم سابفرم ما بطور خود کار اطلاعات مربوط به همون نویسنده رو برای ما ما به نمایش می گذارد .
اما اگر نویسنده بعدی را انتخاب کنیم این بار سابفرم ما تغییری نمی کند .
برای حل این مشکل هم می تونیم قطعه کد کوتاه زیر را به روال خودمان اضافه کنیم .
Me.tblbooks_subform2.Form.Requery
توی کد بالا tblbooks_subform2 اسم سابفرمی است که روی فرم خودتان ایجادش کرده بودید حالا همه این کدها را باید در رویداد Aftrer_update کمبو باکس خودتان قرار بدهید .
با انجام این مراحل به راحتی می توانید نسبت به فیلتر کردن اطلاعات بر اساس نام نویسنده انتخابی خودت در کمبو باکس مربوطه اقدام کنید .
خوب در اینجا به پایان این آموزش می رسیم .
امروز و توی این آموزش یاد گرفتیم که چه جوری می تونیم به جستجوی مقادیر اکسس یا به عبارتی فیلتر کردن اطلاعات خودمون در یک فرم بپردازیم .
امیدوارم که برای شما هم مفید بوده باشد .
مطالب زیر را حتما مطالعه کنید
ساخت برچسب در اکسس💥چطور آنها را ایجاد و مدیریت کنیم ؟
ریبون ها در اکسس💥از مخفی کردن تا مدیریت کردن آنها
چطوری متن ها و تصاویر را بصورت متحرک در اکسس نمایش بدهیم ؟
فرمت دهی نوشته ها در اکسس | کاربرد + مثالها
۵ ویژگی در فرم های اکسس که کمتر از آنها خبر داشتید .
باز کردن گزارش اکسس برای یک رکورد مشخص + نمونه فایل
18 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام خدا قوت
لطفا لینک دانلود جستجوی مقادیر اکسس با استفاده از کمبو باکس را در سایت قرار بدید
بسیار بسیار ممنون از سایت خوبتون
سلام
میشه لینک دانلودش رو قرار بدید
با سلام
نمونه فایل اضافه شد
می توانید دانلود نمایید .
اگر سوال و یا مشکلی بود مطرح کنید تا پاسخ داده شود .
لطفا به سوالم جواب بدید:
اگر بخواهیم دو تا کمبوباکس سرچ بزاریم نحوه انجام چگونه هست
با سلام
مشخصا توضیح دهید که قرار است دو کمبو باکس چه چیزی را قرار است فیلتر کند
فایل می خواهد
چنانچه مقدور است فیلم آموزش جستجو با استفاده از کمبو باکس را برایم ارسال کنید .متشکرم
فیلم آموزش به زودی در همین صفحه قرار می گیرد
سلام
من فرم را پر کردم “نمونه فایل این آموزش” ولی برای من نیامد لطفا راهنمایی کنید ممنون
سلام بزودی اصلاح خواهددشد
سلام من عملیات بالا را انجام دادم ولی داخل کامبوباکس لیستی نشان نمی دهد
سلام توی اولین فرصت یک نمونه در سایت قرار می گیرد تا بهتر بتوانید با این موضوع کار کنید
با سلام و تشکر
لطف میکنید فایل نمونه را برای من بفرستید. آدرس ایمیل وارد شده است.
با سلام
من فرمی دارم که مقادیر (سال-ماه-تعداد-ورود-خروج) را دارد و میخوام جستجویی را بر مبنای دو کمبو باکس یکی برای سال و یکی برای ماه تعبیه کنم ( ۱۴۰۰ فروردین ) و این مقدار را هم بصورت لیست روزانه(برمبنای تاریخ) و هم به صورت جمع کل ماهیانه در کوئری مشاهده کنم نه در ساب فرم (مثال: در فروردین ۱۴۰۰ لیست تعداد و ورود و خروج را به من نشان دهد) چگونه میتونم انجام بدم لطفا” راهنمایی بفرمایید ممنون از شما
سلام
این کار تا زمانی جواب میده که مقادیر مثلا ستون نویسندگان بصورت مستقیم توی همین جدول تایپ شده باشه
یعنی اگه مقادیر ستون مورد نظر بصورت ریلیشن از جدول دیگه اومده باشه ، زمان جستجو کد کلید اصلی نشون داده میشه ، نه اسم نویسنده
با تغیر مقادیر بوند کالمن و کاونت کالمن هم درست نمیشه
راه حل چیه استاد؟
سلام من تمام مراحل انجام دادم و داخل فیلد هام #Name? نشان میدهد لطفا راهنمایی کنید
سلام خطای Name یعنی اینکه تابعی که نوشتید نمی تونه اسم تکس باکس یا هر چیز دیگه ای رو که در اختیار قرار دادید رو پیدا کنه
باید اسم مورد نظرتون رو درست وارد کنید
با سلام
چطور می تونیم بر اساس نام چند نویسنده به عنوان مثال دو نویسنده”مرتضی مطهری” و “علی شریعتی” فیلتر رو انجام بدیم؟
تشکر از دوستان