روشهای ایجاد پرسوجو در Access_کوئری در اکسس: انواع جستجو، نکات و پاسخ به پرسشهای متداول
کوئری در اکسس: انواع جستجو، نکات و پاسخ به پرسشهای متداول
مایکروسافت اکسس (Microsoft Access) یکی از ابزارهای قدرتمند مدیریت پایگاه داده است که برای ذخیره، مدیریت و تحلیل دادهها استفاده میشود. یکی از ویژگیهای اصلی اکسس، کوئریها (Queries) هستند. کوئریها به کاربران امکان میدهند دادهها را از جداول مختلف جمعآوری، فیلتر و تجزیه و تحلیل کنند. در این مقاله، به معرفی انواع کوئری در اکسس، نحوه استفاده از آنها و پاسخ به سوالات رایج در این زمینه میپردازیم.
کوئری چیست؟
کوئری در اکسس به معنای درخواست داده از پایگاه داده است. این درخواست میتواند برای نمایش، فیلتر، ویرایش یا حتی محاسبه دادهها باشد. کوئریها به کاربران کمک میکنند تا به سادگی و بدون نیاز به دانش پیشرفته برنامهنویسی، دادههای مورد نظر خود را استخراج و مشاهده کنند.
انواع کوئریها در اکسس
- کوئری انتخاب (Select Query)
کاربرد: این نوع کوئری برای انتخاب و نمایش دادهها از یک یا چند جدول استفاده میشود. شما میتوانید فیلترهایی را اعمال کرده و فقط دادههای مورد نیاز خود را ببینید.
نحوه استفاده: با استفاده از ابزار “Query Design” در اکسس میتوانید یک کوئری انتخاب ایجاد کنید. جداول یا کوئریهای موجود را انتخاب کرده و فیلدهای مورد نظر خود را اضافه کنید.
نکات: برای بهبود عملکرد، فقط فیلدهایی که نیاز دارید را انتخاب کنید و از فیلترهای مناسب استفاده کنید.
- کوئری اقدام (Action Query)
کاربرد: این کوئری برای انجام عملیاتی مانند اضافه کردن، حذف کردن یا بهروزرسانی رکوردها استفاده میشود.
انواع:
Update Query: برای بهروزرسانی مقادیر رکوردها.
Delete Query: برای حذف رکوردها.
Append Query: برای اضافه کردن دادهها از یک جدول به جدول دیگر.
Make-Table Query: برای ایجاد یک جدول جدید بر اساس دادههای کوئری.
نکات: همیشه قبل از اجرای کوئریهای اقدام، یک نسخه پشتیبان از دادهها تهیه کنید. این نوع کوئریها میتوانند تغییرات دائمی ایجاد کنند.
- کوئری پارامتریک (Parameter Query)
کاربرد: این نوع کوئری از کاربر درخواست میکند تا ورودیهایی را وارد کند و سپس بر اساس آن ورودیها، نتایج نمایش داده میشوند.
نحوه استفاده: در قسمت Criteria برای هر فیلد، میتوانید یک پیام درون کروشه ([ ]) وارد کنید. اکسس از کاربر میخواهد که مقدار مورد نظر را وارد کند و بر اساس آن دادهها را فیلتر میکند.
نکات: از پیامهای واضح و دقیق در پارامترها استفاده کنید تا کاربر بتواند به درستی دادهها را وارد کند.
- کوئری جدول متقاطع (Crosstab Query)
کاربرد: این کوئری دادهها را به صورت جدول متقاطع نمایش میدهد، که مشابه جداول Pivot در اکسل است. این کوئری برای تجزیه و تحلیل دادهها و مقایسه مقادیر بر اساس دو یا چند معیار استفاده میشود.
نحوه استفاده: از ابزار “Crosstab Query Wizard” در اکسس برای ساخت این نوع کوئری استفاده کنید.
نکات: مطمئن شوید که دادههای شما برای تحلیل به صورت جدول متقاطع مناسب هستند. این نوع کوئری برای مقایسه دادهها بر اساس دستهبندیهای مختلف بسیار مفید است.
- کوئری پیوست (Join Query)
کاربرد: این کوئری برای ادغام دادهها از چند جدول مختلف بر اساس یک فیلد مشترک استفاده میشود.
انواع پیوندها:
Inner Join: فقط رکوردهایی که در هر دو جدول فیلد مشترک دارند، نمایش داده میشوند.
Outer Join: همه رکوردهای یکی از جداول نمایش داده میشود و رکوردهای مرتبط از جدول دیگر نیز اضافه میشوند.
نکات: هنگام استفاده از پیوندها، مطمئن شوید که فیلدهای مشترک درست انتخاب شدهاند تا از نمایش دادههای نادرست جلوگیری شود.
نکات مهم برای بهینهسازی کوئریها
- استفاده از فیلترها و معیارها: همیشه سعی کنید دادههای غیرضروری را فیلتر کنید. استفاده از معیارهای مناسب در کوئری میتواند باعث بهبود سرعت و کارایی پایگاه داده شود.
- پیوستن جداول با دقت: هنگام پیوستن جداول (Join)، مطمئن شوید که از کلیدهای اصلی و فرعی مناسب استفاده میکنید. پیوند اشتباه میتواند منجر به نمایش دادههای نادرست یا ناکامل شود.
- استفاده از ایندکسها: ایندکسگذاری صحیح روی جداول میتواند بهبود قابل توجهی در سرعت اجرای کوئریها ایجاد کند. جداولی که روی آنها جستجوهای مکرر انجام میشود، باید به درستی ایندکس شوند.
- اجتناب از پیچیدگیهای غیرضروری: از کوئریهای چند مرحلهای و تو در تو فقط در موارد ضروری استفاده کنید. کوئریهای پیچیده ممکن است سرعت پایگاه داده را کاهش دهند.
- تست و اجرای مکرر: کوئریها را به طور مداوم تست کنید تا مطمئن شوید که نتایج دقیق و درستی ارائه میدهند. هرگونه تغییر در ساختار دادهها ممکن است نیاز به بهروزرسانی کوئریها داشته باشد.
پاسخ به پرسشهای متداول در مورد کوئریها
- چگونه میتوانم کوئری انتخاب بسازم؟
برای ساخت یک کوئری انتخاب، به تب “Create” بروید و گزینه “Query Design” را انتخاب کنید. سپس جداول یا کوئریهایی که میخواهید دادههای آنها را مشاهده کنید انتخاب کرده و فیلدهای مورد نظر را به کوئری اضافه کنید.
- چگونه میتوانم دادههای خود را با استفاده از کوئری فیلتر کنم؟
در قسمت طراحی کوئری، میتوانید در زیر هر فیلد مورد نظر در بخش “Criteria” معیارهایی را وارد کنید. به عنوان مثال، اگر میخواهید رکوردهایی که قیمت آنها بیشتر از 100 است را نمایش دهید، میتوانید >100 را در قسمت معیارها وارد کنید.
- چگونه میتوانم کوئری پارامتریک ایجاد کنم؟
برای ایجاد کوئری پارامتریک، در بخش معیارها (Criteria) از کروشههای مربع ([ ]) استفاده کنید. متن داخل این کروشهها پیامی خواهد بود که هنگام اجرای کوئری از کاربر درخواست ورودی میکند. مثلاً برای فیلتر کردن بر اساس نام محصول، میتوانید در قسمت معیارها [Enter Product Name] را وارد کنید.
- آیا میتوانم با یک کوئری رکوردها را بهروزرسانی کنم؟
بله، با استفاده از کوئری بهروزرسانی (Update Query) میتوانید رکوردهای موجود را بهروزرسانی کنید. برای این کار، به “Query Design” رفته و سپس “Update Query” را انتخاب کنید. فیلدهایی که قصد بهروزرسانی آنها را دارید، به کوئری اضافه کنید و مقادیر جدید را در قسمت “Update To” وارد کنید.
- چگونه میتوانم دادهها را از یک جدول به جدول دیگر منتقل کنم؟
برای انتقال دادهها از یک جدول به جدول دیگر، میتوانید از کوئری “Append” استفاده کنید. این نوع کوئری به شما اجازه میدهد تا دادههای انتخابشده از یک جدول را به جدول دیگر اضافه کنید.
- چگونه کوئریهای پیچیدهتر ایجاد کنم؟
برای ایجاد کوئریهای پیچیدهتر، میتوانید از چندین جدول استفاده کرده و از پیوندها (Joins) برای ترکیب دادهها استفاده کنید. همچنین، میتوانید از کوئریهای تو در تو (Nested Queries) استفاده کنید تا عملیاتهای پیچیدهتری را انجام دهید.
روشهای ایجاد پرسوجو در Access
برای ایجاد Query از ۲ روش میتوان استفاده کرد:
- ایجاد پرس و جو با روش Wizard: در این روش فقط میتوانید فیلدهای موردنظر را از جدول انتخاب کنید. یکی از کاربردهای این روش حذف فیلدهای غیر ضروری است و میتوانید Query را با فیلدهای موردنظر بسازید.
- ایجاد پرس و جو در نمای طراحی (Query Design): در این روش علاوه بر اینکه میتوانید فیلدهای موردنظر را انتخاب کنید و آنها را نمایش دهید، میتوانید روی فیلدها شرط تعیین کنید.
در این آموزش من میخواهم ایجاد پرسوجو در اکسس با استفاده از نمای Design را توضیح دهم.
نمای طراحی پرس و جو (Query Design) در اکسس
وقتی از سربرگ Create روی گزینه Query Design کلیک کنید، وارد نمای طراحی پرسوجو میشوید که به صورت تصویر زیر است. بخش بالای نمای Design برای نمایش جدولها است و بخش پایین آن، برای نمایش فیلدها و اعمال شرایط است.
نمای طراجی پرس و جو (Query Design) در اکسس (Access)
گزینههای قسمت پایین نمای Design
- Field: نام فیلد در این قسمت نمایش داده میشود.
- Table: نام جدول در این قسمت نمایش داده میشود.
- Sort: برای مرتبسازی است. نحوه مرتبسازی رکوردها بر اساس فیلد انتخاب شده تعیین میکند که می تواند صعودی یا نزولی باشد.
- Show: تنظیم نمایش یا عدم نمایش فیلد از این قسمت امکانپذیر است.
- Criteria: شرط موردنظر را در این قسمت وارد کنید.
- OR: شرطی که در این مکان قرار بگیرد، با شرط قید شده در قسمت Criteria توسط عملگر Or ترکیب میشود.
- Total: این آیتم در حالت پیش فرض وجود ندارد. برای اضافه کردن این آیتم در بخش پایینی نمای Design کلیک راست و سپس روی Total کلیک کنید. در ادامۀ آموزش یک مثال در مورد کاربرد Total آوردهایم.
طراحی یک پرسوجو برای یک جدول در نمای Design
در این قسمت میخواهم مراحل ایجاد پرسوجو برای یک جدول را در نمای Design به همراه مثال توضیح دهم. اگر در حال حاضر جدولی ندارید، آموزش ایجاد یک پایگاه داده را مطالعه کنید و یک جدول طراحی کنید.
مرحله اول: طرح سوال از پایگاه داده
دقیقاً سوال خود از پایگاه داده را مشخص کنید. ساخت یک پرسوجو پیچیدهتر از این است که فقط یک سؤال بپرسید، اما دانستن اینکه دقیقاً به چه سؤالی میخواهید پاسخ دهید، برای ایجاد یک پرسوجو مفید است.
خواسته من از پرسوجو: نمایش نام و نام خانوادگی کارکنانی که تحصیلات آنها فوق لیسانس است.
مرحله دوم: انتخاب اطلاعات مورد نیاز
هر نوع اطلاعاتی را که میخواهید در نتایج جستجوی خود بگنجانید، شناسایی کنید.
اطلاعات موردنیاز من: نام و نام خانوادگی و تحصیلات
مرحله سوم: انتخاب جدول
اطلاعات مورد نیاز شما در کدام جدولها هستند؟
جدول موردنیاز من: جدول مشخصات کارکنان
روی سربرگ Create کلیک کنید و Query Design را انتخاب کنید.
ایجاد پرسوجو (Query) در اکسس (Access)
از پنجرهٔ Show table جدول مشخصات کارکنان را انتخاب میکنیم و پنجره را میبندیم.
انتخاب جدول برای پرس و جو در اکسس
مرحله چهارم: تعیین شرط برای پرس و جو
شرایط مورد نظرتان را تعیین کنید.
شرط من: نمایش نام و نام خانوادگی کارکنانی که تحصیلات آنها «فوق لیسانس» است.
در این مرحله روی نام و نام خانوادگی و تحصیلات دابل کلیک کنید تا به قسمت پایین اضافه شود. شرط را در قسمت Criteria مربوط به ستون تحصیلات وارد کنید.
تعیین شرط برای پرس و جو در اکسس (Access)
مرحله پنجم: تعیین نوع اتصال
تعیین نوع اتصال زمانی انجام میشود که برای ایجاد پرسوجو از دو جدول که با هم در ارتباط هستند، استفاده کنید. در اینجا نیازی به انجام این مرحله نیست.
مرحله ششم: اجرای پرسوجو
در سربرگ Design روی Run کلیک کنید.
اجرای پرس و جو (Query) در اکسس
نتیجه به صورت زیر است:
نمای Datasheet برای پرس و جو در اکسس
مرحله هفتم: ذخیره پرسوجو
برای ذخیره پرسوجو روی سربرگ مربوط به Query کلیک راست کنید و روی Save کلیک کنید.
ذخیره پرس و جو (Query) در اکسس
پیغام زیر ظاهر میشود و از شما میخواهد نامی برای پرسوجو انتخاب کنید، نام موردنظر را انتخاب کرده و روی Ok کلیک کنید.
بعد از این پرسوجوی شما در پنل Navigation pane قرار میگیرد.
طراحی یک پرسوجو در نمای Design برای چند جدول
در طراحی یک پرسوجو در نمای Design با چند جدول، ابتدا ارتباط بین جدولها را برقرار کنید. سپس مراحل زیر را انجام دهید.
مرحله اول: طرح سوال از پایگاه داده
خواسته من: نام و نام خانوادگی کارکنانی که پروژه محول شده به آنها در وضعیت خوب است.
مرحله دوم: انتخاب اطلاعات مورد نیاز
اطلاعات موردنیاز من در اینجا نام و نام خانوادگی و وضعیت است.
مرحله سوم: انتخاب جدولهای مورد نیاز
جدولهای موردنیاز من «مشخصات کارکنان» و «مشخصات پروژه» است.
این مرحله مانند مرحله سوم طراحی Query با یک جدول در نمای Design است. پس جدولهای موردنیاز را وارد میکنیم.
مرحله چهارم: تعیین شرط برای پرس و جو
شرط موردنظر من نمایش نام و نام خانوادگی کارکنانی است که پروژه آنها در وضعیت خوب است. در قسمت Criteria ستون وضعیت “خوب” را تایپ کنید.
تعیین شرط برای پرس و جو در اکسس (Access)
پرس و جوهای انتخابی در عمل جداسازی اطلاعات به صورت ایستا عمل میکنند، یعنی در هر بار اجرا همیشه اطلاعات یکسانی را استخراج می کنند. در حالیکه پرس و جوهای پارامتری در زمان اجرا مقدار متغیر مورد استفاده در سوال را از کاربر می پرسند و در نتیجه با هر بار اجرا نتیجهء پرس و جو می تواند متفاوت باشد.
برای ایجاد یک پرس و جوی پارامتری, عبارت توضیحی مورد نظر را داخل علامتهای [ ] درج کنید تا در زمان اجرا از کاربر پرسیده شود.
مثال 1 : با هر بار اجرای پرس و جوی زیر، پنجرهء سوالی باز میشود و مقدار کد را از کاربر سوال میکند.
نحوه اجرا را می توانید در تصویر زیر ببینید :
مثال 2 : با هر بار اجرای پرس و جوی زیر، پنجرهء سوالی باز میشود و حرف اول نام خانوادگی را از کاربر سوال میکند.
در برنامه های ساده می توانید با استفاده از این نوع از پرس و جو ها، ظاهر مطلوب تری به کاربر ارائه دهید.
همهچیز درباره کوئری (Query) در Access – آموزش کامل
کوئری (Query) یکی از مهمترین بخشهای Microsoft Access است که برای فیلتر کردن، مرتبسازی، ترکیب و تجزیهوتحلیل دادهها در پایگاه داده استفاده میشود. در این آموزش، همه جزئیات مربوط به کوئری را بررسی میکنیم.
1. کوئری (Query) چیست؟
✅ کوئری در Access، یک دستور برای دریافت اطلاعات خاص از جداول است.
✅ به جای جستجوی دستی در جداول، میتوان از کوئریها برای نمایش، فیلتر و پردازش اطلاعات استفاده کرد.
✅ امکان ترکیب دادهها از چندین جدول و اجرای محاسبات روی دادهها را فراهم میکند.
2. انواع کوئری در Access
🔹 1. کوئری انتخابی (Select Query) – پرکاربردترین نوع
✅ هدف: استخراج دادهها از یک یا چند جدول با شرایط خاص
✅ مثال: نمایش فقط مشتریانی که در شهر تهران هستند
🔹 نحوه ایجاد:
- از تب Create گزینه Query Design را انتخاب کنید.
- جداول موردنظر را اضافه کنید.
- فیلدهای موردنظر را انتخاب کنید.
- شرط موردنظر را در ردیف Criteria قرار دهید.
- کوئری را اجرا کنید.
🔹 مثال SQL برای کوئری انتخابی:
SELECT FirstName, LastName, City
FROM Customers
WHERE City = 'تهران';
🔹 2. کوئری اجرایی (Action Query) – برای تغییر دادهها
✅ هدف: اعمال تغییر روی دادههای جدول (اضافه، حذف، بهروزرسانی)
🔹 انواع Action Query:
1️⃣ Append Query → اضافه کردن داده به یک جدول دیگر
2️⃣ Update Query → تغییر مقدار دادههای موجود
3️⃣ Delete Query → حذف رکوردهای مشخصشده
4️⃣ Make Table Query → ایجاد یک جدول جدید از نتایج
🔹 مثال SQL برای بهروزرسانی دادهها:
UPDATE Customers
SET City = 'مشهد'
WHERE City = 'تهران';
🔹 3. کوئری پارامتریک (Parameter Query) – برای کوئریهای پویا
✅ هدف: درخواست اطلاعات متغیر از کاربر هنگام اجرای کوئری
🔹 مثال: کوئری که از کاربر بپرسد “نام شهر را وارد کنید” و سپس دادههای مربوط به آن شهر را نمایش دهد.
🔹 نحوه نوشتن در Access:
- یک Select Query بسازید.
- در ستون Criteria بنویسید:
[لطفاً نام شهر را وارد کنید]
✅ هنگام اجرا، Access از کاربر مقدار شهر را درخواست میکند.
🔹 4. کوئری جدولبندی شده (Crosstab Query) – برای گزارشهای آماری
✅ هدف: نمایش دادهها بهصورت جدول محوری (Pivot Table)
🔹 مثال: نمایش مجموع فروش بر اساس ماه و منطقه
🔹 نحوه ایجاد:
- از تب Create گزینه Crosstab Query Wizard را انتخاب کنید.
- جدول یا کوئری موردنظر را انتخاب کنید.
- فیلدهای ردیف، ستون و مقدار را مشخص کنید.
- کوئری را اجرا کنید.
🔹 5. کوئری ترکیبی (Union Query) – ترکیب چندین جدول
✅ هدف: ترکیب دادهها از چندین جدول با ساختار مشابه
🔹 مثال SQL برای ترکیب دادههای دو جدول مشتریان:
SELECT FirstName, LastName, City FROM Customers1
UNION
SELECT FirstName, LastName, City FROM Customers2;
✅ خروجی، دادههای هر دو جدول را بدون تکرار نمایش میدهد.
🔹 6. کوئری ایجاد جدول (Make Table Query) – ساخت یک جدول جدید از دادهها
✅ هدف: ایجاد یک جدول جدید از نتایج کوئری
🔹 مثال SQL:
SELECT FirstName, LastName INTO NewCustomers
FROM Customers
WHERE City = 'تهران';
✅ این کوئری، جدول NewCustomers را ساخته و دادههای مشتریان تهرانی را در آن ذخیره میکند.
3. اعمال فیلتر و مرتبسازی در کوئریها
✅ مرتبسازی صعودی و نزولی:
SELECT FirstName, LastName FROM Customers
ORDER BY LastName ASC; -- صعودی
ORDER BY LastName DESC; -- نزولی
✅ اعمال چندین شرط با AND و OR:
SELECT * FROM Customers
WHERE City = 'تهران' AND Age > 30;
✅ جستجو با LIKE (برای مقادیر متنی):
SELECT * FROM Customers
WHERE LastName LIKE 'A%'; -- نام خانوادگیهایی که با A شروع میشوند
✅ فیلتر کردن مقادیر NULL:
SELECT * FROM Customers
WHERE PhoneNumber IS NULL;
4. اتصال بین جداول در کوئری (Joins)
✅ اتصال داخلی (INNER JOIN): نمایش فقط دادههای مشترک بین دو جدول
SELECT Customers.FirstName, Orders.OrderID
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
✅ اتصال خارجی (LEFT JOIN): نمایش همه مشتریان حتی اگر سفارشی نداشته باشند
SELECT Customers.FirstName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
✅ اتصال خارجی (RIGHT JOIN): نمایش همه سفارشات حتی اگر مشتری نداشته باشند
SELECT Customers.FirstName, Orders.OrderID
FROM Customers
RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
5. استفاده از توابع در کوئریها
✅ محاسبه مجموع (SUM):
SELECT SUM(TotalAmount) FROM Orders;
✅ میانگین (AVG):
SELECT AVG(Age) FROM Customers;
✅ حداکثر و حداقل مقدار (MAX, MIN):
SELECT MAX(Salary) FROM Employees;
SELECT MIN(Salary) FROM Employees;
✅ شمارش تعداد رکوردها (COUNT):
SELECT COUNT(*) FROM Customers WHERE City = 'تهران';
6. ایجاد گزارش از نتایج کوئری
✅ پس از اجرای کوئری، میتوان نتایج آن را در یک گزارش (Report) نمایش داد:
1️⃣ از تب Create گزینه Report را انتخاب کنید.
2️⃣ جدول یا کوئری موردنظر را انتخاب کنید.
3️⃣ تنظیمات ظاهری گزارش را انجام دهید.
7. بهینهسازی کوئریها برای سرعت بیشتر
✅ ایجاد ایندکس در جداول برای افزایش سرعت جستجو
✅ استفاده از WHERE بهجای HAVING برای اعمال شرطها
✅ کاهش تعداد فیلدهای انتخابشده در SELECT
✅ استفاده از JOIN بهجای Subquery در صورت امکان
ساختن جستجوی پویا در کوئری Access
جستجوی پویا در کوئری به این معنی است که کاربر بتواند مقدار جستجو را خودش وارد کند و دادههای فیلتر شده نمایش داده شوند. در Access، این کار را میتوان با کوئری پارامتریک (Parameter Query) انجام داد.
1. روشهای ساخت جستجوی پویا در کوئری Access
✅ روش ۱: استفاده از پارامتر در Criteria
✅ روش ۲: استفاده از فرم جستجو (با کنترلهای ورودی مثل TextBox و ComboBox)
✅ روش ۳: استفاده از VBA برای جستجوی پیشرفته
2. روش ۱: ایجاد کوئری پارامتریک (Parameter Query)
✅ در این روش، هنگام اجرای کوئری، Access از کاربر مقدار ورودی را درخواست میکند.
🔹 مراحل ساخت کوئری پارامتریک:
1️⃣ از تب Create گزینه Query Design را انتخاب کنید.
2️⃣ جدول موردنظر را اضافه کنید.
3️⃣ در فیلد موردنظر (مثلاً City)، در ردیف Criteria این مقدار را بنویسید:
[لطفاً نام شهر را وارد کنید]
4️⃣ کوئری را اجرا کنید.
5️⃣ Access یک پنجره نمایش میدهد و مقدار را از کاربر میپرسد.
✅ مثال SQL برای جستجوی پویا:
SELECT FirstName, LastName, City
FROM Customers
WHERE City = [لطفاً نام شهر را وارد کنید];
✅ کاربرد: اگر کاربر “تهران” را وارد کند، فقط مشتریان تهرانی نمایش داده میشوند.
3. روش ۲: استفاده از فرم جستجو برای کوئری پویا
✅ در این روش، یک فرم اختصاصی برای جستجو ساخته و مقدار ورودی کاربر از آن دریافت میشود.
🔹 مراحل ساخت فرم جستجو:
1️⃣ از تب Create گزینه Form Design را انتخاب کنید.
2️⃣ یک TextBox اضافه کنید و نام آن را txtSearch بگذارید.
3️⃣ یک دکمه (Button) اضافه کنید و نام آن را btnSearch بگذارید.
4️⃣ کوئریای ایجاد کنید و در قسمت Criteria مقدار زیر را وارد کنید:
[Forms]![YourFormName]![txtSearch]
✅ حالا وقتی کاربر مقداری را در txtSearch وارد کند و دکمه را بزند، نتایج بهطور پویا نمایش داده میشوند.
4. روش ۳: استفاده از VBA برای جستجوی پویا
✅ VBA کنترل بیشتری روی جستجو میدهد و نتایج مستقیماً در فرم نمایش داده میشوند.
🔹 مراحل:
1️⃣ در فرم txtSearch و یک دکمه (btnSearch) ایجاد کنید.
2️⃣ روی دکمه دوبار کلیک کنید و وارد VBA شوید.
3️⃣ کد زیر را وارد کنید:
Private Sub btnSearch_Click()
Dim strSQL As String
strSQL = "SELECT * FROM Customers WHERE City LIKE '*" & Me.txtSearch & "*';"
Me.RecordSource = strSQL
End Sub
✅ این کد هر مقداری را که در txtSearch وارد شود، در پایگاه داده جستجو کرده و نتایج را در فرم نمایش میدهد.
جستجوی پارامتریک برای دو فیلد در اکسس (نام و نام خانوادگی باهم)
برای جستجو در دو فیلد همزمان (مثلاً “نام” و “نام خانوادگی”) میتوان از کوئری پارامتریک استفاده کرد. در این روش، هنگام اجرای کوئری، پنجرهای باز میشود که از کاربر نام و نام خانوادگی را درخواست میکند و بر اساس آن دادهها را نمایش میدهد.
۱. ایجاد کوئری پارامتریک برای جستجوی نام و نام خانوادگی
مراحل ایجاد کوئری:
۱. به تب Create بروید و Query Design را انتخاب کنید.
۲. جدول موردنظر (مثلاً “کاربران”) را اضافه کنید.
۳. فیلدهای نام و نام خانوادگی را به بخش پایین کوئری اضافه کنید.
۴. در قسمت Criteria برای فیلد “نام” این مقدار را وارد کنید:
[نام را وارد کنید:]
۵. در قسمت Criteria برای فیلد “نام خانوادگی” این مقدار را وارد کنید:
[نام خانوادگی را وارد کنید:]
۶. کوئری را ذخیره کنید و اجرا کنید.
🔹 حالا هنگام اجرای کوئری، دو پنجره باز میشود که از شما نام و نام خانوادگی را درخواست میکند. اگر هر دو مقدار درست وارد شوند، نتایج نمایش داده میشوند.
۲. ترکیب جستجو در یک فیلد ورودی (ورود همزمان نام و نام خانوادگی)
گاهی اوقات، راحتتر است که یک کادر جستجو داشته باشیم که نام و نام خانوادگی را باهم دریافت کند. برای این کار از کوئری ترکیبی استفاده میکنیم:
مراحل ایجاد کوئری با یک کادر جستجو برای هر دو فیلد:
۱. در بخش Criteria فیلد “نام”، این مقدار را وارد کنید:
Like "*" & [نام و نام خانوادگی را وارد کنید:] & "*"
۲. در بخش Criteria فیلد “نام خانوادگی”، این مقدار را وارد کنید:
Like "*" & [نام و نام خانوادگی را وارد کنید:] & "*"
۳. کوئری را ذخیره کنید و اجرا کنید.
✅ در این روش، اگر کاربر مثلاً “علی محمدی” را وارد کند، جستجو هم در فیلد نام و هم در نام خانوادگی انجام میشود و نتیجهای که شامل هر دو مقدار باشد نمایش داده میشود.
۳. ایجاد فرم جستجوی پارامتریک (روش حرفهایتر)
اگر میخواهید یک فرم جستجو طراحی کنید که کاربران نام و نام خانوادگی را در دو TextBox جداگانه وارد کنند، مراحل زیر را انجام دهید:
۱. ایجاد یک فرم جستجو
۱. به تب Create بروید و گزینه Form Design را انتخاب کنید.
۲. دو TextBox ایجاد کنید و نام آنها را به ترتیب txtName و txtFamily بگذارید.
۳. یک دکمه (Button) اضافه کنید و نام آن را btnSearch بگذارید.
۲. ایجاد کوئری برای فرم جستجو
۱. یک کوئری جدید ایجاد کنید و جدول “کاربران” را اضافه کنید.
۲. در فیلد “نام”، این شرط را قرار دهید:
Like "*" & Forms![نام فرم]!txtName & "*"
۳. در فیلد “نام خانوادگی”، این شرط را قرار دهید:
Like "*" & Forms![نام فرم]!txtFamily & "*"
۴. کوئری را ذخیره کنید و نام آن را مثلاً qrySearch بگذارید.
۳. اجرای کوئری با کلیک روی دکمه
۱. روی دکمه btnSearch راستکلیک کنید و گزینه Properties را انتخاب کنید.
۲. در بخش On Click، روی [Event Procedure] کلیک کنید و دکمه … را بزنید.
۳. کد زیر را وارد کنید:
Private Sub btnSearch_Click()
DoCmd.OpenQuery "qrySearch"
End Sub
۴. فرم را ذخیره کنید.
✅ حالا وقتی کاربر نام و نام خانوادگی را وارد کرده و روی دکمه جستجو کلیک کند، نتایج بهصورت فیلتر شده نمایش داده میشوند.
جستجوی پارامتریک در دو فیلد همزمان با یک ورودی (روش ۲) در اکسس
در این روش، هنگام اجرای کوئری، تنها یک کادر ورودی نمایش داده میشود که نام و نام خانوادگی را همزمان دریافت میکند و بر اساس آن هم در فیلد نام و هم در فیلد نام خانوادگی جستجو انجام میشود.
✅ مزیت این روش:
- سریعتر و راحتتر، زیرا کاربر فقط یک مقدار وارد میکند.
- میتواند بخشی از نام یا نام خانوادگی را جستجو کند.
- انعطافپذیر است و میتوان جستجو را هوشمندتر کرد.
۱. ایجاد کوئری جستجوی پارامتریک برای دو فیلد
مراحل گامبهگام:
۱. در اکسس، تب Create را باز کنید و گزینه Query Design را انتخاب کنید.
۲. جدول مربوطه را اضافه کنید (مثلاً “کاربران” که شامل فیلدهای نام و نام خانوادگی است).
۳. فیلدهای نام و نام خانوادگی را به پایین جدول طراحی کوئری اضافه کنید.
۴. در قسمت Criteria فیلد “نام”، عبارت زیر را بنویسید:
Like "*" & [نام یا نام خانوادگی را وارد کنید:] & "*"
۵. در قسمت Criteria فیلد “نام خانوادگی”، همین عبارت را قرار دهید:
Like "*" & [نام یا نام خانوادگی را وارد کنید:] & "*"
۶. کوئری را ذخیره کنید (مثلاً نام آن را qrySearch بگذارید).
۷. حالا کوئری را اجرا کنید.
✅ نتیجه:
- یک کادر ورودی نمایش داده میشود که از کاربر میخواهد نام یا نام خانوادگی را وارد کند.
- اگر “علی” وارد شود، تمام افرادی که نام آنها “علی” یا نام خانوادگی آنها “علی” است نمایش داده میشوند.
- اگر “محمدی” وارد شود، تمام افراد با نام یا نام خانوادگی محمدی نمایش داده میشوند.
- اگر “علی محمدی” وارد شود، ممکن است نتایج بیشتری از انتظار نمایش داده شوند (برای حل این مشکل، روش پیشرفتهتر در پایین توضیح داده شده است).
۲. نکات مهم برای بهبود جستجو
✅ مشکل اصلی: در این روش، وقتی کسی دو کلمه را وارد کند (مثلاً “علی محمدی”)، کوئری ممکن است نتیجهای برنگرداند یا نتایج غیرمرتبط نمایش دهد.
راهحل پیشرفتهتر: جستجوی هوشمند بر اساس هر دو کلمه
میتوان کوئری را طوری تنظیم کرد که اگر کاربر دو کلمه وارد کرد، یکی در نام و دیگری در نام خانوادگی جستجو شود.
🔹 اصلاح کوئری برای دریافت دو مقدار جداگانه:
۱. در قسمت Criteria برای فیلد “نام”، این شرط را وارد کنید:
Like "*" & Split([نام و نام خانوادگی را وارد کنید:], " ")(0) & "*"
۲. در قسمت Criteria برای فیلد “نام خانوادگی”، این شرط را وارد کنید:
Like "*" & Split([نام و نام خانوادگی را وارد کنید:], " ")(1) & "*"
✅ نتیجه:
- اگر کاربر فقط “علی” وارد کند، جستجو در هر دو فیلد انجام میشود.
- اگر کاربر “علی محمدی” وارد کند، “علی” در فیلد “نام” و “محمدی” در فیلد “نام خانوادگی” جستجو میشود.
- اگر فقط یک مقدار وارد شود، همچنان در هر دو فیلد جستجو میشود.
🔹 نکته: این روش نیاز به استفاده از VBA یا یک تابع در ماژولها دارد، زیرا Split() بهطور مستقیم در کوئریهای اکسس پشتیبانی نمیشود.
۳. روش جایگزین: استفاده از فرم برای جستجو دقیقتر
✅ اگر روش بالا پیچیده شد، میتوان یک فرم جستجو طراحی کرد که دو TextBox جداگانه برای “نام” و “نام خانوادگی” داشته باشد.
مراحل:
۱. یک فرم جدید بسازید و دو TextBox اضافه کنید:
txtSearchبرای وارد کردن نام یا نام خانوادگی.
۲. یک دکمه جستجو (btnSearch) اضافه کنید.
- یک کوئری جدید (
qrySearch) بسازید و در فیلدهای نام و نام خانوادگی، این شرط را بنویسید:Like "*" & Forms![نام فرم]!txtSearch & "*" - در دکمه جستجو، در قسمت On Click کد زیر را اضافه کنید:
Private Sub btnSearch_Click()
Me.Requery
End Sub
✅ حالا با تایپ نام یا نام خانوادگی و زدن دکمه جستجو، لیست فیلتر شده نمایش داده میشود.
جستجوی پارامتریک در اکسس برای نام و نام خانوادگی بهصورت جداگانه (روش ۲ با مثال عملی)
در این روش، هنگام اجرای کوئری، دو پنجره ورودی مجزا ظاهر میشود که یکی برای نام و دیگری برای نام خانوادگی است. این کار باعث میشود که کاربر بتواند نام و نام خانوادگی را بهصورت جداگانه وارد کند و نتیجهای که هر دو شرط را داشته باشد نمایش داده شود.
۱. ایجاد کوئری پارامتریک برای دو فیلد مجزا
مراحل گامبهگام:
۱. به تب “Create” بروید و گزینه “Query Design” را انتخاب کنید.
۲. جدول مربوطه را اضافه کنید (مثلاً جدول کاربران شامل دو فیلد نام و نام خانوادگی).
3. فیلدهای نام و نام خانوادگی را به قسمت طراحی کوئری اضافه کنید.
4. در قسمت Criteria فیلد “نام”، این مقدار را بنویسید:
[لطفاً نام را وارد کنید:]
- در قسمت Criteria فیلد “نام خانوادگی”، این مقدار را بنویسید:
[لطفاً نام خانوادگی را وارد کنید:] - کوئری را ذخیره کنید (مثلاً نام آن را
qrySearchبگذارید). - حالا کوئری را اجرا کنید.
۲. اجرای کوئری و بررسی خروجی
✅ وقتی کوئری را اجرا میکنید، دو کادر ورودی ظاهر میشود:
- کادر اول: از شما نام را درخواست میکند.
- کادر دوم: از شما نام خانوادگی را درخواست میکند.
🔹 اگر در کادر اول "علی" و در کادر دوم "محمدی" را وارد کنید، کوئری فقط رکوردهایی که “علی محمدی” باشند را نمایش میدهد.
🔹 اگر فقط یکی از مقادیر را وارد کنید (مثلاً فقط “علی”)، اکسس فقط نتایج مطابق با آن مقدار در همان فیلد را نمایش خواهد داد.
۳. نکات مهم و بهبود جستجو
✅ جستجوی انعطافپذیرتر (قبول ورودی اختیاری)
در حالت عادی، اگر یکی از ورودیها را خالی بگذارید، نتیجهای نمایش داده نمیشود. برای این که اگر یکی از ورودیها خالی ماند، همچنان جستجو انجام شود، از Like استفاده کنید:
🔹 ویرایش شرط در کوئری:
در قسمت Criteria فیلد “نام”، این مقدار را جایگزین کنید:
Like "*" & [لطفاً نام را وارد کنید:] & "*" Or [لطفاً نام را وارد کنید:] Is Null
و برای نام خانوادگی این مقدار را قرار دهید:
Like "*" & [لطفاً نام خانوادگی را وارد کنید:] & "*" Or [لطفاً نام خانوادگی را وارد کنید:] Is Null
✅ مزیت این روش:
- اگر کاربر نام را وارد کند ولی نام خانوادگی را خالی بگذارد، همچنان نتایج فیلترشده نمایش داده میشوند.
- اگر نام خانوادگی وارد شود ولی نام خالی باشد، باز هم جستجو انجام میشود.
۴. تبدیل کوئری به یک فرم برای استفاده آسانتر (روش پیشرفتهتر)
اگر بخواهید کاربران بدون دیدن کادرهای ورودی پاپآپ، راحتتر جستجو کنند، میتوانید یک فرم جستجو بسازید.
مراحل ایجاد فرم جستجو:
- یک فرم جدید باز کنید و دو TextBox اضافه کنید:
txtName(برای وارد کردن نام)txtFamily(برای وارد کردن نام خانوادگی)
- یک دکمه جستجو (
btnSearch) اضافه کنید. - در Query Design، کوئری جدیدی ساخته و در فیلد “نام”، این شرط را وارد کنید:
Like "*" & Forms![نام فرم]!txtName & "*" Or Forms![نام فرم]!txtName Is Null - در فیلد “نام خانوادگی”، این مقدار را بنویسید:
Like "*" & Forms![نام فرم]!txtFamily & "*" Or Forms![نام فرم]!txtFamily Is Null - به دکمه جستجو بروید، در قسمت On Click این کد VBA را بنویسید:
Private Sub btnSearch_Click()
Me.Requery
End Sub
✅ حالا کاربر میتواند نام و نام خانوادگی را جداگانه در فرم وارد کند و با فشردن دکمه جستجو، لیست فیلتر شده را ببیند.
جستجوی پارامتریک در یک کادر ورودی با دو فیلد جداگانه (نام و نام خانوادگی) در اکسس
هدف:
میخواهیم هنگام اجرای کوئری، یک فرم ورودی با دو فیلد مجزا ظاهر شود که کاربر در یکی “نام” و در دیگری “نام خانوادگی” را وارد کند. سپس کوئری نتایج فیلتر شده را نمایش دهد.
۱. ایجاد فرم برای دریافت ورودی
مراحل گامبهگام:
- در تب “Create” گزینه “Form Design” را انتخاب کنید.
- دو جعبه متن (Text Box) اضافه کنید:
- نام اولی را
txtNameبگذارید (برای نام). - نام دومی را
txtFamilyبگذارید (برای نام خانوادگی).
- نام اولی را
- یک دکمه (Button) اضافه کنید:
- نام آن را
btnSearchبگذارید. - در قسمت On Click این دکمه، کوئری جستجو را اجرا کنید.
- نام آن را
- فرم را ذخیره کنید (مثلاً نام آن را
frmSearchبگذارید).
۲. ایجاد کوئری جستجو بر اساس اطلاعات ورودی فرم
مراحل:
- یک کوئری جدید در “Query Design” ایجاد کنید.
- جدول مربوطه (مثلاً کاربران) را اضافه کنید.
- فیلدهای “نام” و “نام خانوادگی” را اضافه کنید.
- در قسمت Criteria فیلد “نام”، این مقدار را بنویسید:
Like "*" & Forms!frmSearch!txtName & "*" Or Forms!frmSearch!txtName Is Null - در قسمت Criteria فیلد “نام خانوادگی”، این مقدار را بنویسید:
Like "*" & Forms!frmSearch!txtFamily & "*" Or Forms!frmSearch!txtFamily Is Null - کوئری را ذخیره کنید (نام آن را
qrySearchبگذارید).
۳. اجرای کوئری از طریق دکمه جستجو در فرم
- روی دکمه جستجو (
btnSearch) کلیک کنید. - در بخش Event > On Click، دکمه را انتخاب کرده و روی
[Event Procedure]کلیک کنید. - دکمه … را بزنید و در ویرایشگر VBA، این کد را وارد کنید:
Private Sub btnSearch_Click()
DoCmd.OpenQuery "qrySearch"
End Sub
- فرم را ذخیره کنید و ببندید.
۴. نحوه استفاده از فرم جستجو
✅ وقتی فرم frmSearch را باز کنید:
- در فیلد اول (
txtName)، نام “امیر” را وارد کنید. - در فیلد دوم (
txtFamily)، نام خانوادگی “محمدی” را وارد کنید. - روی دکمه جستجو کلیک کنید.
🔹 نتیجه:
کوئری qrySearch اجرا شده و نتایج فیلتر شده نمایش داده میشود (مثلاً تمام کاربرانی که نامشان “امیر” و نام خانوادگیشان “محمدی” است).
۵. بهبود تجربه کاربری با فرم نمایش نتایج
اگر بخواهید نتایج مستقیماً داخل فرم نمایش داده شوند، مراحل زیر را انجام دهید:
- یک فرم جدید (Continuous Form) برای نمایش نتایج بسازید:
- در تب Create > Form Design، یک فرم جدید باز کنید.
- در قسمت Record Source، کوئری
qrySearchرا انتخاب کنید. - این فرم را ذخیره کنید (نام آن را
frmResultsبگذارید).
- ویرایش کد دکمه جستجو برای نمایش نتایج در فرم جدید:
Private Sub btnSearch_Click()
DoCmd.OpenForm "frmResults"
End Sub
✅ حالا بعد از زدن دکمه جستجو، فرم frmResults باز شده و لیست فیلتر شده نمایش داده میشود.
روش دیگر برای جستجوی پارامتریک با دو فیلد (نام و نام خانوادگی) در اکسس
در این روش، بهجای استفاده از فرم یا پنجرههای ورودی جداگانه، میتوانیم از یک فیلد ورودی ترکیبی برای جستجو استفاده کنیم. یعنی کاربر میتواند نام و نام خانوادگی را در یک فیلد ورودی ترکیب شده وارد کند (مثلاً “امیر محمدی”) و پس از آن، برنامه بتواند این اطلاعات را جداگانه پردازش کند و جستجو را انجام دهد.
مراحل ساخت جستجو با یک ورودی ترکیبی
۱. ایجاد فرم ورودی
- فرم طراحی کنید و یک TextBox به نام
txtFullName(برای وارد کردن نام و نام خانوادگی ترکیبشده) اضافه کنید. - یک دکمه به نام
btnSearchبرای جستجو در فرم اضافه کنید. - این فرم را ذخیره کنید (مثلاً به نام
frmSearchFullName).
۲. ایجاد کوئری جستجو با پردازش نام و نام خانوادگی
- در تب “Create”، گزینه “Query Design” را انتخاب کنید.
- جدول کاربران یا جدولی که شامل فیلدهای
نامونام خانوادگیاست را اضافه کنید. - در Criteria فیلد
نام، این عبارت را وارد کنید:Like "*" & Left([Forms]![frmSearchFullName]![txtFullName], InStr([Forms]![frmSearchFullName]![txtFullName], " ") - 1) & "*" - در Criteria فیلد
نام خانوادگی، این عبارت را وارد کنید:Like "*" & Mid([Forms]![frmSearchFullName]![txtFullName], InStr([Forms]![frmSearchFullName]![txtFullName], " ") + 1) & "*"این دو عبارت به طور خودکار نام و نام خانوادگی وارد شده را جدا میکنند و سپس جستجو انجام میدهند. - کوئری را ذخیره کنید (مثلاً نام آن را
qrySearchFullNameبگذارید).
۳. اضافه کردن کد VBA برای اجرای جستجو
- کد VBA برای دکمه جستجو (On Click):
- در فرم جستجو (
frmSearchFullName)، دکمه جستجو (btnSearch) را انتخاب کنید. - در بخش “On Click” این کد را وارد کنید:
- در فرم جستجو (
Private Sub btnSearch_Click()
DoCmd.OpenQuery "qrySearchFullName"
End Sub
این کد باعث میشود که پس از وارد کردن نام و نام خانوادگی در یک فیلد، کوئری اجرا شود و نتایج جستجو نمایش داده شود.
۴. نحوه استفاده از فرم جستجو
- فرم
frmSearchFullNameرا باز کنید. - در فیلد
txtFullName، نام و نام خانوادگی (مثلاً “امیر محمدی”) را وارد کنید. - روی دکمه جستجو کلیک کنید.
- نتایج جستجو مطابق با نام و نام خانوادگی وارد شده، نمایش داده خواهد شد.
۵. نکات مهم و مزایا
- مزیت: این روش به کاربر این امکان را میدهد که نام و نام خانوادگی را به صورت یکپارچه وارد کند و همچنان جستجو انجام شود.
- چالش: در این روش، فقط یک فضای ورودی برای هر دو فیلد در نظر گرفته میشود و نیاز به پردازش جدا کردن نام و نام خانوادگی در کوئری داریم.
- پردازش: این روش نیاز به استفاده از توابع
LeftوMidدر اکسس دارد که میتوانند اطلاعات را از هم جدا کرده و جستجو انجام دهند.
جمعبندی و انتخاب بهترین روش
📌 اگر میخواهید جستجو به صورت ترکیبی انجام شود و فضای کمتری را برای ورودی نیاز دارید، از روش ورودی ترکیبی استفاده کنید. اگر نیاز به دقت بالاتر و کنترل بیشتر بر روی ورودیها دارید، روش دو فیلد مجزا بهتر است.
📌 اگر پروژه شما حرفهای است، فرم جستجو را ایجاد کنید و نتایج را در یک فرم جداگانه نمایش دهید.
🔹 روش ساده (کوئری پارامتریک استاندارد) → برای جستجو در هر دو فیلد با یک مقدار ورودی، اما دقت پایینتر.
🔹 روش پیشرفته (استفاده از Split برای جدا کردن دو مقدار) → برای جستجوی دقیقتر نام و نام خانوادگی، اما نیازمند VBA.
🔹 روش فرم جستجو → بهترین روش برای یک تجربه کاربری بهتر و انعطافپذیری بالاتر.
📌 اگر پروژه حرفهای است، فرم جستجو را بسازید، چون هم کار با آن راحتتر است، هم انعطافپذیری بیشتری دارد.
✅ اگر میخواهید جستجو ساده و سریع باشد، از روش کوئری پارامتریک ساده استفاده کنید.
✅ اگر بخواهید انعطاف بیشتری داشته باشید (امکان خالی گذاشتن یکی از فیلدها)، از روش Like استفاده کنید.
✅ اگر بخواهید کاربرپسند باشد و ظاهری حرفهای داشته باشد، فرم جستجو را بسازید.
🔹 روش ۱: جستجوی پارامتریک با دو کادر جداگانه برای نام و نام خانوادگی در کوئری.
🔹 روش ۲: دریافت یک ورودی شامل نام و نام خانوادگی باهم در کوئری.
🔹 روش ۳: ایجاد یک فرم جستجوی حرفهای با دو فیلد جداگانه و یک دکمه برای جستجو.
✅ بهترین روش، استفاده از فرم جستجو (روش ۳) است که هم انعطافپذیر و هم کاربرپسند است.
🔹 کوئریهای پویا امکان جستجوی سفارشی و انعطافپذیر را در پایگاه داده فراهم میکنند.
🔹 میتوان از کوئری پارامتریک، فرمهای جستجو، و VBA برای این کار استفاده کرد.
🔹 فرم جستجو + VBA بهترین گزینه برای جستجوی پیشرفته و سریع است.
✅ **با این روشها، کاربران میتوانند دادههای موردنظر را بهصورت پویا و حرفهای جستجو کنند!
🔹 کوئریها در Access ابزاری قوی برای دریافت، تغییر و تحلیل دادهها هستند.
🔹 میتوان از کوئریهای انتخابی، اجرایی، پارامتریک، جدولبندی، ترکیبی و… برای مدیریت دادهها استفاده کرد.
🔹 یادگیری SQL و توابع محاسباتی به شما کمک میکند تا کوئریهای حرفهایتری بسازید.
✅ با تسلط بر کوئریها، پایگاه داده Access را کاملاً بهینه و پویا کنید!