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

 ما در اکسس با کنترل های متعددی سر و کار داریم.

تکس باکس ها ، دکمه ها ، چک باکس ها و …. نمونه هایی از این کنترل ها هسنمد . 

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

امروز می خواهیم راجع به کمبو باکس ها در VBA و نحوه کار با آنها صحبت کنیم .

کمبو باکس ها یکی از کنترل هایی هستند  که به وفور با آنها سرو کار داریم و به دفعات از آنها در پروژه های خود استفاده می کنیم.

مطمئنا با نحوه ایجاد و کار با یک کمبو باکس در  محیط اکسس بخوبی آشنایی دارید .

اما امروز می خواهیم به نحوه کار باکمبو باکس ها در محیط کد نویسی VBA  بپردازیم . 

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

۱- چگونه با استفاده از کد نویسی یک کمبو باکس را ایجاد کنیم . ؟

۲- چگونه با استفاده از کد نویسی کمبوباکس ها را مدیریت کنیم ؟

 

پس تا پایان این پست نیز همراه من باشید .

ایجاد کمبو باکس ها در VBA با استفاده از کد نویسی

در اولین قدم می رویم به سراغ این مطلب که اصلا چه طور می توانیم یک کمبو باکس را ایجاد کنیم .

بطور کلی برای ایجاد یک کمبو باکس ما دو راه ژیش رو داریم .

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

اما راه دومی که موضوع بحث امروز ما می باشد راه و یا روشی است که با استفاده از کد نویسی در محیط VBE  می توانیم به ایجاد یک کمبو باکس بپردازیم .

خوب برای این کار می رویم به سراغ مراحل انجام آن .

فرض کنید که ما فرمی داریم که در محیط اکسس قرار دارد .

در داخل این فرم یک دکمه داریم .

می خوهیم کاری کنیم که به محض اینکه بر روی این دکمه کلیک  شد دو اتفاق برای ما رخ دهد . 

اول اینکه یک فرم جدید برای ما ایجاد شود .

دوم اینکه بطور خودکار در داخل این فرم جدید یک کمبو باکس قرار گیرد .

 برای این کار به سراغ رویداد On_Click دکمه خود رفته و کدهای زیر را در آن  وارد می کنیم .

 

بیایید با هم نگاهی به این کدها بکنیم .

در خط اول ما یک متغیر تعریف کردیم به نام Ctl .

این کنترل را از نوع control  قرار داده ایم .

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

فرم مورد نظر ما از قبل ایجاد شده و با نام Form1  در اکسس ذخیره شده است

اما نکته مهم این است که این فرم باز شده باید حتما در حالت Design  باشد .

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

برای این کار ما از دستور Create Control  استفاده کرده ایم .

کمبو باکس ها در VBA

این دستور شامل یکسری از آرگومانها می باشد که با هم آن ها را مورد بررسی قرار می دهیم .

آرگومان اول Form name :

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

آرگومان دوم Control Type :

در این آرگومان نوع کنترل مورد نظر خود را  انتخاب می کنیم. 

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

برای مشاهده سایر انتخاب های مربوط به این آرگومان می توانید به اینجــــــا مراجعه نمایید ..

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

آرگومان سوم section

 با استفاده از این آرگومان تعیین می کنیم که کمبو باکس مورد نظر در کدام قسمت از فرم ما قرار گیرد .

در اینجا ما گزینه acdetail  را انتخاب می کنیم .

آرگومان چهارم :Parent

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

آرگومان پنجم :ColumnName

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

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

آرگومان  ششم :Left,Top.

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

آرگومان هفتم : Width, Height

با کمک این آرگومان نیز می توانیم طول و عرض کمبو باکس خود را تعیین کنیم . 

نکته مهم در مورد آرگومانهای ششم و هفتم که باید حتما مورد دقت قرار دهید این است که واحد اندازه گیری مربوط به این مقادیر بصورت twip  می باشد .

اگر بخواهیم کد بالا را مجدد باز نویسی کرده و  تمامی آرگومانهای مربوطه را در آن دخیل کنیم کد ما بصورت زیر خواهد بود .

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

مشاهده می کنید که یک فرم ایجاد شده و در داخل آن یک کمبو باکس قرار می گیرد .

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

حالا باید برویم به سراغ کار با اجزا  و ویژگی های آن و در واقع ببینیم که چگونه می توانیم با استفاده از کد نویسی به مدیریت یک کمبو باکس بپردازیم .

وارد کردن اطلاعات مورد نظر  کمبو باکس ها 

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

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

با هم به بررسی همه این موارد می پردازیم.

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

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

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

 ما برای کار با رفرنس ها و معرفی آنها  در اکسس با دو ویژگی سر و کار داریم . 

ویژگی  اول Control Source Type نام دارد  .

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

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

با هم نگاهی به این رفرنس ها و انواع آنها بکنیم. 

۱- دسته اول Value List

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

اما منظور از لیست ثابت چیست ؟

از جمله لیست هایی که اطلاعات آنها همیشه ثابت هستند می توان به ایام هفته ، فصل های سال و یا ماههای سال اشاره کرد .

اینها اطلاعاتی هستند که هم تعداد مشخص دارند و هم نیازیب ه تغییر در آنها وجود ندارد .

بنابراین به راحتی انها را می توان در قالب یک Value List  در داخل یک کمبو باکس قرار داده و آنها را در اختیار کاربر بگذاریم .

اما چگونه می توانیم این کار را انجام دهیم .

برای این کار نیاز به دستوری به نام Add Item  داریم .

با هم این دستور و نحوه استفاده از آن را بررسی می کنیم

 استفاده از متد Add Item

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

حال برای ادامه کار به سراغ کمبو باکسی که در مرحله قبل ایجاد کردیم می رویم .

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

برای این کار می توانیم از دستور فوق در کدهای خود استفاده کنیم .

به کدهای زیر نگاه کنید .

 حالا این کدها را با هم بررسی کنیم .

اول اینکه من در اینجا کمبو باکس مورد نظر خود را به نام ” cbo_days ” نام گذاری کرده ام.

دوم اینکه تمامی کدهای مربوطه را در داخل رویداد On Load  فرم خود نوشته ام .

این کار باعث می شود که به محض اینکه فرم مورد نظر من لود شد کمبو باکس موجود در داخل این فرم اطلاعات مورد نظری را که در قالب یک Value List  برایش تعریف کرده ایم را در خود ذخیره کند .

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

حالا برویم به سراغ روش دوم .

 استفاده از  ویژگی  Table /Query

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

برای این کار باید به سراغ دستورات SQL  بروید .

برای این منظور  اول جدول زیر را در نظر بگیرید . 

 

کمبو باکس ها در VBA

 

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

برای این منظور از کدهای زیر استفاده می کنیم .

نکته مهم و کاربردی در خطوط کد بالا مربوط به خط شماره ۸  می باشد .

 در این خط از کد ما خاصیت RowSourceType  را برابر با عبارت “table/query”  قرار داده ایم .

در این خط ۱۰  از کدها هم  از یک عبارت SQL  استفاده کرده ایم .

برای آشنایی بهتر و بیشتر با این دستورات می توانید به مطلب کار با دستورات SQL مراجعه کنید .

در انتها هم که سورس مربوط به کمبو باکس خود را برابر با عبارت sql  خود قرار داده ایم .

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

اما اکر که خوب دقت کنید مشاهده می کنید که این لیست که در کمبو باکس ما نمایش داده می شود دارای موارد تکراری است .

برای اینکه عنوان هر درس فقط یک بار به نمایش درآید باید یک تغییر کوچک در دستور خود ایجاد کنیم .

در اینجا کدهای جدید را درج کی کنم .

اما تشخیص اینکه این کدها در چه قسمتی با کدهای قبلی تفاوت دارند را بر عهده خودتان می گذارم .

 

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

حالا به سراغ گزینه سوم می رویم .

استفاده از  ویژگی Filed List
این ویژگی این امکان را به ما می دهد که لیستی از اسامی مربوط به فیلدهای یک جدول را در داخل کمبو باکس خود قرار دهیم .
با فرض اینکه ما جدولی داریم به نام tbllesson با استفاده از کدهای زیر می توانیم اسامی مربوط به فیلدهای موجود در این جدول را دصورت یک لیست در داخل کمبو باکس خود قرار دهیم . 
وقتی که فرم ما لود شود لبست مربوط به نام های فیلدهای جدولی که در این کد از آن نام برده ایم را در خود نمایش می دهد .
این هم سومین روشی بود که به کمک آن ما می توانیم به مدیریت داده ها در یک کمبو باکس بپردازیم .
پس تا به اینجای کار ما یک مبو باکس را ایجاد کردیم و به کمک برنامه نویسی مقادیر مورد نظر خود را در آن قرار دادیم . 
حالا اجازه بدهید کمی بیشتر با قابلیت های برنامه نویسی در کار با کمبو باکس ها آشنا شویم .
در ادامه چندین مورد از تنظیماتی را که با استفاده از کدهای برنامه نویسی می توانیم بر روی یک کمبو باکس اعمال کنیم را با هم بررسی می کنیم .
آشنایی با برخی از ویژگی های کمبو باکس در محیط کد نویسی
۱- تعیین تعداد آیتم های نمایش در کمبو باکس .
فرض کنید که یک کمبو باکس شامل ۱۰ ردیف از اطلاعات باشد. 
اما بنا بر هر دلیل بخواهیم که فقط ۳ آیتم ابتدایی به کاربر نمایش داده شود .
برای این منظور از کدی مانند کد زیر استفاده می کنیم .
۲-تعیین تعداد ستون های قابل نمایش در یک کمبو باکس
به جدول زیر نگاه کنید .
 
کمبو باکس ها در VBA
 
می خواهیم اطلاعات مربوط به نام هر درس به همراه نام معلم مربوطه را در قالب یک کمبو باکس نمایش دهیم .
برای این کار باید چند مرحله را پشت سر بگذاریم .
به کدهای زیر نگاه کنید
 ما در این خط از کد تعیین می کنیم که عبارت SQL  ما شامل دو فیلد از از جدول مورد نظر ما باشد .
حالا باید تعیین کنیم که کمبو باکس ما شامل دو ستون باشد تا بتواند هر کدام از این فیلدها را در خود نمایش دهد .
برای این کار  از  ویژگی به نام Columncount  در کد زیر استفاده می کنیم .
حالا کمبو باکس ما دارای دو ستون است .
اجازه بدهید کمی تغییرات در این ستون ها اعمال کنیم .
تغییر اول اینکه می خواهیم عنوان هر ستون نیز برای ما در کمبو باکس به نمایش درآید .
برای این کار کافی است  خاصیت Column Heads  را  برابر با مقدار True  قرار دهیم .
شکل کلی دستوراتی که تا به اینجا از آنها استفاده کرده ایم بصورت زیر است .
خروجی این کدها هم تا به اینجا برای من چیزی شبیه تصویر زیر است .
کمبو باکس ها در VBA
 
می توانیم با استفاده از کد زیر فونت مربوط به یک کمبو باکس را تغییر دهیم
 
این مطلب به تدریج تکمیل تر خواهد شد
ما در صفحه اینستاگرام خود هر روز آموزش هایی در خصوص ترفندهای کار با نرم افزارهای آفیس را ارائه می کنیم .
اگر علاقمند به یادگیری این ترفندها هستید می توانید با کلیک بر روی تصویر زیر به جمع ما در اینستاگرام بپیوندید .
کمبو باکس ها در VBA

 

 

 

آموزش های Access بازدید : 926 views 13 ژوئن, 2020 ۰