کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی
کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

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

رفتن به Tab مورد نظر با استفاده از باتن



انتقال فوکس به تب مورد نظر : 



فرض کنید در پراپرتی شیت تب کنترل خاصیت Style را به None تغییر داده (  که کلا تب ها مشخص نشود ) و کامند باتنی خارج از تب کنترل ایجاد کرده اید ، زمان کلیک کردن روی باتن CmdOrder فوکس به اولین پیج کنترل TabCtl0 میرود. ( تنظیم Style تب براب عدم ظاهر شدن تب ها و ایجاد باتن بخاطر این است که چپ چین است و خاصیت راست چین نداد )


Private Sub cmdOrder_Click()
Me.TabCtl0.Pages(0).SetFocus
End Sub


Me.tabMyTabControl.Pages(0).Visible = False
پنهان کردن اولین تب پیج  
hides the first tab page.


Tabcontrol.Style Properties :

ظاهر شدن باتن بجای تب با تنظیم کردن خاصیت Style به یک  ، البته در برگه پرارتی تب کنترل ( Property Sheet آن ) می توان خاصیت را انتخاب و تنظیم نمود احتیاجی به کد نویسی نیست

Forms("Mailing List").Controls("TabCtl1").Style = 1










در تصویر زیر :

باتن Main نامش butMain است 

 تب کنترل نامش tabMenu است

Style مربوط به خاصیت تب کنترل است که Property Sheet آن در نمای دیزاین قابل دسترسی است 





هرکدام از تب ها نامگذاری شده و هر کدام از پیج ها PageIndex دارد . Page1 در اینجا pageMain نامگذاری شده در رویه زیر که مربوط به باتن Main در تصویر است گفته شده به تب pageMain برود (Value=0 , PageIndex=0 ) طبق شکل تب pageMain که قبلا page1 نامیده شده در تب کنترل ولیوی صفر دارد و پیج ایندکس تب هم صفر است در نتیجه به تب صفر میرود که همان ابتدا است.



Private Sub ButMain_Click()

tabMenu.Value=pageMain.PageIndex

End Sub


پراپرتی Value یک TabControl حاوی شماره ایندکسی از آبجکت Page جاری است.یک آبجکت Page برای هر Tab در TabControl وجود دارد . اولین آبجکت Page همیشه ایندکس 0 دارد و دومی 1 و ادامه دارد ( عدد صحیح و ترتیبی ) 


پراپرتی PageIndex بین اعداد صحیح 0 و  پراپرتی Count کالکشن Pages منهای یک تنظیم میشود.این پراپرتی در هر View می تواند تنظیم شود.تغییرمقدارپراپرتی PageIndex موقعیت آبجکت Page در کالکشن یا مجموعه Pages را تغییر و باعث تغییر آشکارا و قابل دید ترتیب پیج ها روی تب کنترل می شود.( منظور زمانیکه ست کنید از یک پیج به پیج دیگری منتقل یا Move می شوید !!!)


For i=0 To Tabctl0.Pages.Count-1

Msgbox Tabctl0.Pages(i).Name & Chr(34) _

Tabctl0.Pages(i).PageIndex

Next


مثال زیر پیج با نام Notes روی تب کنترل Information در فرم Order Entry را به اولین پیج انتقال میدهد 

Forms("Order Entry").Controls("Information").Pages("Notes").PageIndex = 0


CommandButton.TabIndex Property : 


تعیین موقعیت کنترل در Tab Order فرم ( محل چیدمان کنترل ها )  . عدد صحیحی است بین صفر تا تعداد کل کنترل ها منهای یک ! بطور مثال اگر فرمی سه کنترل  که هر کدام دارای پراپرتی TabIndex است ، باشد مقادیر معتبر برای این پراپرتی 0 1 و 2 

تنظیم پراپرتی TabIndex به عدد صحیحی کمتر از صفر خطایی را تولید می کند.

اگر اعداد پراپرتی  TabIndex کنترل ها ( هر کنترلی که این خاصیت را دارد ) تغییر دهید ترتیب انتقال روی آنها وقتی کلید Tab را می فشرید تغییر میکند. امتحان بنمائید!!! و در نظرات بنویسید استفاده خواهند برد.



Control.Properties Property : 


شئ مجموعه پراپرتی ها مجموعه ای از تمام پراپرتی های مرتبط به یک کنترل است که میتوان به اعضاء تکی مجموعه با استفاده از ایندکس  شئ یا عبارت رشته ای که نام شئ عضو است ارجاع داد.


اولین شئ عضو در مجموعه مقدار ایندکس صفر و تعداد کل آن در مجموعه مقداری است از پراپرتی Count مجموعه پراپرتی ها منهای یک.


For i=0 To Controls("Button1").Properties.Count-1

Debug.Print Controls("Button1").Properties(i).Name

Next


اگر کد بالا اشتباه بود فرم و کنترل را تنظیم کنید به متغیری و 


For Each Prp In Ctl.Properties

Debug.Print Prp.Name

Next


نمایش کنترل ها در فرم :

Function ShowControls()
Dim frmCust as Form
Set frmCust = Forms("Customer")
Dim i as Integer
For i = 0 To frmCust.Count - 1
Debug.Print frmCust(i).ControlName
Next
End Function

البته پراپرتی Count در فرم برای شمارش فرم های باز است .


صرفا جهت مطالعه : 


intForms = Forms.Count ' Number of open forms. 

If intForms > 0 Then 

For intI = 0 To intForms - 1

Set frm = Forms(intI) 

 Debug.Print frm.Name 

 intControls = frm.Count

If intControls > 0 Then 

For intJ = 0 To intControls - 1 

 Debug.Print vbTab; frm(intJ).Name 

Next intJ


و بقیه را خودتان حدس بزنید !!!


CurrentProject.allforms.count


تماما از سایت های خارجی استخراج و کپی شده امتحان کنید  چنانچه  اشتباه بود اصلاح شده در نظرات قید گردد



refer-to-tab-control-objects-in-vba


انتخاب Tab موردنظر Tabctl.Value=1 


در رویداد Onchange که زمان تغییر تب پیج ها اتفاق می افتد در کد زیر کپشن فرم به کپشن پیج تغییر می یابد و با Select Case و پراپرتی Name پیج چنانچه نام داخل Case بود کاری را انجام دهد .


Private Sub tabMain_Change()
On Error GoTo ErrHandler   
'get a reference to the active page
Dim pg As Page
Set pg = tabMain.Pages(tabMain.Value)
'update the form's caption
Me.Caption = "Customer Orders - " & pg.Caption
'take action for specific pages
With pg
Select Case .Name
Case "Page1"
'do stuff
Case "Page2"
'do stuff
Case "Page3"
'do stuff
Case "Page4"
'do stuff
End Select
End With
ExitHere:
On Error Resume Next
Set pg = Nothing
Exit SubErrHandler:
Debug.Print Err, Err.Description
Resume ExitHere
End Sub


The Change event occurs when the contents of a text box or the text portion of a combo box changes. It also occurs when you move from one page to another page in a tab control.



With Your_Form
   If !tabControl.Pages(!tabControl.Value).Tag = "Your tag" then
       'Do Something
   End if
End With



The .Value property of a TabControl returns the index (zero-based) of the current page. So, if I have a TabControl named TabCtl14 that contains two pages, FirstPage and SecondPage, then the code...

Private Sub TabCtl14_Click()
If Me.TabCtl14.Value = 1 Then
    MsgBox "SecondPage was clicked."
End If
End Sub

...displays the MsgBox whenever I click the "SecondPage" tab in the TabControl.