ComboBox.ItemData property (Access) :
expression.ItemData (Index)
پراپرتی ItemData داده در ستون باند شده برای ردیف مشخص شده در یک کمبو باکس را بر می گرداند. ایندکس از صفر شروع میشود
با استفاده از مجموعه ItemSelected می توانید تعیین کنید که کدام ردیف یا ردیف ها در لیست باکس آن انتخاب شده
باید پراپرتی MultiSelect لیست یاکس به Simple یا Extended تنظیم شود تا کاربر قادر به انتخاب بیشتر از یک ردیف باشد.
از پراپرتی Column هم می توانید استفاده کنید که داده کدام ستون و ردیف برگردانده شود.
ListBox.ItemsSelected property (Access) :
مجموعه ItemSelected دو پراپرتی Count و Item دارد بدون داشتن هیچ متدی البته
Dim frm As Form, ctl As Control
Dim varItm As Variant
Set frm = Forms!Contacts
Set ctl = frm!Names
For Each varItm In ctl.ItemsSelected
Debug.Print ctl.ItemData(varItm)
Next varItm
مثال بالا مقدار باند کالمن هر ردیف انتخاب شده را چاپ میکند در پنجره immidiate window
مثال زیر باز شدن گزارش با شرط خاصی مشخص شده، یک لیست MultiSelection است و چنانچه کاربر یک یا چند داده را انتخاب کند و باتن cmdOpenReport را بفشارد گزارش حاوی داده ها ی گرفته شده باز میشود.
Private Sub cmdOpenReport_Click()
Dim varItem As Variant
Dim strEmployeeIDList As String
Dim strCriteria As String
Dim ctrl As Control
Set ctrl = Me.lstEmployees
با پراپرتی کانت چک میکند که حداقل یک گزینه از لیست باکس انتخاب شده باشد.
If ctrl.ItemsSelected.Count > 0 Then
در کد For Each....Next داده آیتم یا آیتم های انتخاب شده را با پراپرتی ItemData ی کنترل میگیرد ، بین آنها کاما گذاشته و به متغیر strEmployerIDList میدهد
For Each varItem In ctrl.ItemsSelected
strEmployeeIDList = strEmployeeIDList & "," & ctrl.ItemData(varItem)
Next varItem
چون یک کاما قبل از اولین آیدی گرفته شده ( متغیر) قرار می گیرد با تابع Mid گفته که عبارت بعد از کاما در متغیر قرار گیرد در نتیجه آن کاما حذف میشود.
' remove leading comma
strEmployeeIDList = Mid(strEmployeeIDList, 2)
حال نوبت به نوشتن شرط یا Criteria است که در آرگومان WhereCondition قرار داده شده in هم کلمه ای است رزرو شده که در عبارات sql استفاده میشود و بیان نموده که strEmployeeIDList هایی که در فیلد EmployeeID ( دیتا تایپ نامبر است ) موجود است فهرست شوند .... چون ID نامبراست احتیاجی نیست که بین هر داده گرفته شده کوتیشن قرار گیرد ولی اگر دیتا تایپ فیلد تکست بود می بایست بین هر داده ای که از لیست باکس گرفته میشود غیر از همرا بودن با کاما ، تک کوتیشن نیز در ابتدا و انتهای آن قرار گیرد.
strCriteria = "EmployeeID In(" & strEmployeeIDList & ")"
در کد زیر دستور باز شدن گزارش rptEmployees با چشم انداز Preview و شرط strCriteria داده شدس.
DoCmd.OpenReport "rptEmployees", _
View:=acViewPreview, _
WhereCondition:=strCriteria
Else
اگر هیچ آیتمی در لیست باکس انتخاب نشده باشد پیغامی را با Msgbox رایز میکند با پرامپت هیچ کارمندی انتخاب نشده.
MsgBox "No employees selected", vbInformation, "Warning"
End If
End Sub
expression.Column (Index, Row)
پراپرتی کالمن در آبجکت کمبو و لیست باکس که index اشاره به ستون مورد نظر دارد و Row هم اشاره به ردیف و از صفر شروع میشوند. فرضا شما میخواهید داده ستون دو و ردیف سوم را بگیرید.
.Column(1,2)
زمانیکه پراپرتی MultiSelect کنترل لیست باکس به None تنظیم شود فقط یک آیتم می تواند انتخاب شود و پراپرتی Selected می تواند به True تنظیم شود.وقتی پراپرتی MultiSelect کنترل لیست باکسی به Simple یا Extended تنظیم شود هر کدام یا تمام آیتم های انتخاب شده می تواند پراپرتی Selected برابر True خودش را داشته باشد. پس مشخص شد با Selected می توانید مشخص کنید کدام آیتم یا آیتم ها Select شده اگر True باشد انتخاب میشود و اگر به False تنظیم شود از حالت انتخاب در می آید.
لیست باکس چند انتخابی یا Multi-Selection باند شده به فیلدی همیشه دارای پراپرتی Value مساوی با Null است . می توان از پراپرتی Selected یا مجموعه ItemSelected برای بازیابی اطلاعات آیتم هایی که انتخاب شده اند ، استفاده نمود.
عبارت زیر پنجمین آیتم در لیست را انتخاب ( Select ) می نماید
نام کنترل لیست باکس در اینجا ListBox1 است
Me!Listbox1.Selected(4)=True
ComboBox.LimitToList property (Access) :
از پراپرتی LimitToList برای محدود کردن مقادیر کمبو باکس به آیتم های لیست شده استفاده میشود یعنی اگر به True تنظیم شود اگر مقداری در تکست باکس کمبو تایپ شود و در لیست نباشد زمان Enter و از دست دادن فوکس خطایی را نمایش میدهد که آیتم در لیست نیست.
Forms("Order Entry").Controls("States").LimitToList = True
اگر بخواهید پیغام خودتان را نشان دهد در رویداد NotInList می توانید Response را مساوی صفر و پیام مورد نظرتان را در Msgbox قرار دهید
ComboBox.ListCount property (Access) :
تعیین تعداد ردیف های لیست باکس قسمتی از کمبو باکس ( کمبو باکس همانطور که در یادداشت های دیگر گفته شده یک قسمت تکست باکس و یک قسمت DropDown دارد.
اگر پراپرتی ColumnHeads به True تنظیم شود این ردیف هم اضافه میشود یعنی ایندکس آن صفر است
ComboBox.ListRows property (Access) :
برای تنظیم حداکثر تعداد ردیف هایی که در لیست باکس قسمت کمبو باکس نمایش داده شود کاربرد دارد.
ComboBox.Locked property (Access) :
پراپرتی Locked مشخص میکند که می توان داده را در کنترلی در فرم ویرایش کرد.دیفالت True است
و این تنظیم اجازه ویرایش ، حذف و اضافه کردن داده را می دهد.
ComboBox.ListIndex property (Access) :
از این پراپرتی برای تعیین اینکه کدام آیتم در کمبو انتخاب شده کاربرد دارد و بین صفر تا تعداد آیتم هادر لیست باکس یا کمبو باکس منهای یک است
مقدار پراپرتی ListIndex با تنظیم پراپرتی BoundColumn به صفر در دسترس است. اگر پراپرتی BoundColumn مقدار صفر بگیرد فیلدی که به کمبو یا لیست باکس باند شده حاوی همان مقداری خواهد شد که پراپزتی ListIndex تنظیم شده.
Here is the code to take data from a list box to a table...
Code:
کد زیر برای بردن داده از یک لیست باکس به یک جدول و از کوئری Append استفاده شده البته Sql آن .
Private Sub Command14_Click()
Dim varName As Variant
Dim varItem As Variant
Dim strSQL As String
Dim undSQL As String
Dim CmbValue As String
CmbValue = Me.Combo0.Value
With Me.List9
For Each varItem In .ItemsSelected
در عبارت Sql زیر در Insert into نام جدول و بعد داخل پرانتز نام فیلدهایی که باید داده به آن اضافه شوند و بعد Values و داخل پرانتز داده ها برای داده های فیلد از نوع دیتا تایپ تکست از تک کوتیشن در ابتدا و انتهای متغیر استفاده می شود . به پرانتزها و فواصل توجه کنید وگرنه خطای Syntax یا نوشتاری خواهید گرفت.
strSQL = "INSERT INTO tlbTempRecordset (UnderwriterName, ST_CODE) VALUES ('" & .Column(0) & "','" & .ItemData(varItem) & "');"
DoCmd.RunSQL (strSQL)
عبارت زیر حتما باید اعمال گردد وگرنه مقادیر تکرار و تکرار میشوند چون در لوپ هستیم
و اتومات Reset نمی شود عزیزان
strSQL = ""
Next varItem
End With
Me.List9.Value = Null
End Sub
در فرم امکان ساخت کنترل کمبو باکسی که MultiSelection باشد ، نیست و فقط در جدول این پراپرتی برای فیلد از نوع کمبو باکس وجود دارد.