ساخت لیست کشویی وابسته در اکسس

لیست-کشویی-وابسته-در-اکسل

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

ابتدا به زبانه Create رقته و با انتخاب گزینه Form Design از قسمت Forms یک فرم خالی ایجاد می کنیم. طبق تصویر زیر:

ساخت فرم در اکسس
ساخت فرم در اکسس

بعد از انجام مراحل بالا یک فرم به صورت زیر ایجاد می شود:

ساخت فرم در اکسس
ساخت فرم در اکسس

بعد از اضافه شدن فرم مشاهده می کنید که سه Tab برای این آبجکت به زبانه های اکسس اضافه شده، به زبانه Design رفته و در قسمت Controls روی Combo Box کلیک می کنیم تا انتخاب شود:

ساخت کمبوباکس در اکسس
ساخت کمبوباکس

سپس آبجکت انتخاب شده را روی فرم به اندازه دلخواه رها می کنیم، بعد از این کار یک کادر به شکل زیر باز خواهد شد:

ویزارد در اکسس
ویزارد در اکسس

چون می خواهیم سورس لیست کشویی از یک جدول فراخوانی شود از همان گزینه اول استفاده کرده و این کادر را Next می کنیم:

combo box wizard
combo box wizard in access

در مرحله دوم باید جدولی که داده های لیست کشویی درون آن قرار دارند را انتخاب کنیم، ما جدول مرود نظر را انتخاب کرده و این کادر را Next می کنیم:

آموزش اکسس
آموزش اکسس

در مرحله بعدی باید فیلدی که داده های لیست درون آن قرار دارند را انتخاب کنیم و به لیست Selected Fields منتقل کنیم، برای این کار فیلد State را به لیست روبرو انتقال می دهیم تا مشابه تصویر زیر شود:

آموزش اکسس
آموزش اکسس

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

آموزش اکسس
آموزش اکسس

در مرحله بعدی پیش نمایشی از مقادیر ستون State را مشاهده می کنید:

آموزش اکسس در حسابداری
آموزش اکسس در حسابداری

این کادر را Next می کنیم:

اکسس در حسابداری
آموزش اکسس در حسابداری

عملیات انتخاب سورس کومبوباکس به پایان رسیده و کافی است کادر بالا را Finish کنید. حالا روی سربرگ فرم کلیک راست کنید و گزینه Form View را انتخاب کنید تا فرم به حالت نمایش درآید:

فرم ها در اکسس
فرم ها در اکسس

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

لیست در اکسس
لیست در اکسس

نکته ای که اینجا وجود دارد این است که این لیست تمام مقادیر موجود در ستون State از جدول tblcities را نمایش می دهد، اما ما قصد داریم نام استان ها را به صورت منحصر به فرد نمایش دهد. بنابراین روی سربرگ فرم کلیک راست کرده و فرم را به حالت Design View می بریم و کومبوباکس را انتخاب می کنیم و از زبانه Design و از قسمت Tools گزینه Property Sheet را می زنیم تا کادر خصوصیات فرم باز شود:

 Property Sheet در اکسس

Property Sheet در اکسس

در این کادر می توانیم نام آبجکت ها را تغییر دهیم بنابراین به سربرگ Other رفته و در قسمت Name نام کومبوباکس را از Combo0 به cbostate تغییر می دهیم. برای اینکه مقادیر لیست کشویی را به صورت منحصر به فرد بیاوریم به سربرگ Data رفته و در قسمت Row Source کلیک می کنیم سپس بر روی دکمه سه نقطه کلیک می کنیم تا به محیط کوئری نویسی برویم:

Row Source در اکسس
Row Source در اکسس
آموزش اکسس
آموزش اکسس

در صفحه بالا کافی است که به قسمت Show/Hide رفته و روی گزینه Totals کلیک کنید:

آموزش اکسس در حسابداری
آموزش اکسس در حسابداری

با انجام این کار دستور Group By در قسمت دستورات کوئری اضافه می شود:

اکسس در حسابداری
اکسس در حسابداری

در انتها با زدن دکمه Close این کوئری را ذخیره می کنیم و به محیط فرم باز می گردیم.

بیشتر بخوانید:   چگونه در اکسل برنامه ریزی خطی رو محاسبه کنیم؟

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

آموزش لیست در اکسس
آموزش لیست در اکسس

اکنون باید در فرم برای نام شهرها نیز یک کومبوباکس ایجاد کنیم، بنابراین فرم را به حالت طراحی میبریم و از زبانه Design و از قسمت Controls یک کومبوباکس به فرم اضافه می کنیم و مراحلی که برای لیست استان در بالا انجام دادیم را برای نام شهرها نیز انجام می دهیم تا لیست شهرها را در کومبوباکس مشاهده کنیم. اما نکته ای که وجود دارد این است که وقتی عملیات بالا را انجام میدهیم در لیست کشویی دوم نام همه شهرها نمایش داده خواهد شد حتی اگر از کومبوباکس اول یکی از استان ها را انتخاب کرده باشیم:

آموزش اکسس
آموزش اکسس در حسابداری

باید دستوری بنویسیم که اگر از کومبوباکس اول یک استان انتخاب شد، کومبو باکس دوم براساس آیتم انتخاب شده از لیست اول فیلتر شود. بنابراین فرم را به محیط طراحی می بریم و کومبوباکس دوم را انتخاب می کنیم و از قسمت Property Sheet و سربرگ Data روی سه نقطه از قسمت Row Source کلیک می کنیم تا به محیط کوئری کومبوباکس دوم برویم. پس از انجام مراحل بالا فیلد State را نیز با درگ کردن به محیط کدنویسی کوئری اضافه می کنیم:

اکسس در حسابداری
اکسس در حسابداری

حالا برای فیلتر کردن لیست کشویی براساس استان انتخاب شده در زیر فیلد State و در قسمت Criteria دستور زیر را می نویسیم:

[Forms]![Form1]![cbostate]

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

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

حالا در قسمت Show چک باکس مربوط به State را غیرفعال می کنیم تا این فیلد در لیست کشویی دوم نمایش داده نوشد و کادر را ذخیره می کنیم تا وارد محیط فرم شویم:

آموزش اکسس
اکسس در حسابداری

حالا از لیست اول استان اصفهان را انتخاب می کنیم و لیست دوم را که باز کنیم نام شهرهای استان اصفهان نمایش داده می شوند:

آموزش اکسس
آموزش اکسس

تا اینجا کار ما تمام نشده، اگر از لیست اول استان تهران را انتخاب کنید و مجدد لیست دوم را باز کنید خواهید دید که هنوز نام شهرهای استان اصفهان نمایش داده می شوند. دلیل این موضوع این است که بعد از انتخاب لیست اول حتماً باید کومبوباکس دوم بروزرسانی شود یا بهتر بگویم کوئری نوشته شده در کومبوباکس دوم مجدد اجرا شود برای این منظور به نمای طراحی فرم رفته و کومبوباکس دوم را انتخاب کنید و از کادر Property Sheet به سربرگ Event رفته و در رویداد On Change کلیک کرده و در لیست موجود گزینه [Event Procedure] را انتخاب کرده و روی سه نقطه کلیک کنید تا وارد محیط برنامه نویسی اکسس شوید.

کافی است در سابروتین cbocity_Change دستور زیر را بنویسید:

برنامه نویسی در اکسس
برنامه نویسی در اکسس
برنامه نویسی vba در اکسس
برنامه نویسی vba در اکسس

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

نکته: اگر در لیست دوم یک آیتم را انتخاب کرده باشید و مجدد از لیست اول یک استان دیگر را انتخاب کنید آیتم انتخاب شده در لیست دوم همچنان موجود می باشد، بهتر است که بعد از انتخاب استان جدید لیست کشویی دوم خالی شود برای این منظور دستور زیر را بعد از دستور بالا بنویسید:

بیشتر بخوانید:   چگونه در اکسل برنامه ریزی خطی رو محاسبه کنیم؟

Me.cbocity = Null

ویدئو : ساخت لیست کشویی وابسته در اکسس

[et_bloom_locked optin_id=”optin_1″]

[/et_bloom_locked]

بیشتر بدانید:

12 دیدگاه

  1. با سلام
    خیلی عالی بود ممنون.فقط یه مشکلی بر خوردم که اون قسمت آخر یعنی ON CHANGE هر کاری میکنم به روز رسانی نمیشه نمیدونم چرا .

  2. خیلی ممنون خیلی عالی بود
    فقط یه سوال دارم که این لیست وابسته رو در فرم ایجاد کردین؛ آیا میتوان این کار را در یک جدول انجام بدیم به طوری که وقتی یک فیلد جدول من استان تهران شد فیلد بعدی جدول من فقط شهرهای استان تهران رو نمایش دهد؟!!
    ممنون

پاسخی بگذارید

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