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

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

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

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

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

آبجکت فرم



Form object is a member of the Forms collection, which is a collection of all currently open forms. Within the Forms collection, individual forms are indexed beginning with zero. You can refer to an individual Form object in the Forms collection either by referring to the form by name, or by referring to its index within the collection.

شی form عضوی از کالکشن یا مجموعه forms است که محل جمع آوری تمام فرم هایی است که بازشده اند ، داخل این مجموعه forms فرم های تکی وجود دارند که ایندکس گذاری شده اند و با صفر شروع می شوند.شی فرم تکی در مجموعه forms یا با ارجاع به فرم از طریق اسم یا ایندکسشون انجام می پذیرد.

If you want to refer to a specific form in the Forms collection, it's better to refer to the form by name because a form's collection index may change. If the form name includes a space, the name must be surrounded by brackets ([ ]).

نکته خیلی مهم :

اگر می خواهید به فرم خاصی در مجموعه forms ارجاع بدهید بهتر است توسط نامش باشد چرا که ایندکس آن می تواند تغییر پیدا کند.اگر اسم فرم شامل Space باشد ( فضای خالی بین اسم باشد ) اسم فرم می بایست توسط براکت احاطه شده باشد.

Each Form object has a Controls collection, which contains all controls on the form. You can refer to a control on a form either by implicitly or explicitly referring to the Controls collection. Your code will be faster if you refer to the Controls collection implicitly.

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


Forms!OrderForm.ctlSubForm.Form!Controls.NewData

فرم Order که سابفرم ctlSubform دارد و کنترل NewData در آن است که به این کنترل ارجاع داده شده.


AllForms!formnameAllForms!OrderForm
AllForms![form name]AllForms![Order Form]
AllForms("formname")AllForms("OrderForm")
AllForms(index)AllForms(0)


تشریح یکی از خاصیت های مربوطه ( RecordSoutce ) : 


The next example changes a form's record source to a single record in the Customers table, depending on the company name selected in the cmboCompanyName combo box control. The combo box is filled by an SQL statement that returns the customer ID (in the bound column) and the company name. The CustomerID has a Text data type.

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


Sub cmboCompanyName_AfterUpdate()

Dim strNewRecord As String 

strNewRecord = "SELECT * FROM Customer  Where   CustomerID='" & Me!cmboCompanyName.Value & "'" 

 Me.RecordSource = strNewRecord 

End Sub







Side Bar ( سابفرم بازشو بصورت عرضی !!!... منبع جستجو در وب سایت خارجی سال 2004 animated popup )



TOGGLE BUTTON :  TRUE/FALSE


X تعداد تکرار است که حتما باید باشد فرضا  عرض سابفرم 2.4583 اینچ باشد که در ویوی فرم  اگر پراپرتی عرض سابفرم را بگیریم میشود 3540 به  واحد twips ( یعنی عدد پراپرتی عرض در  حالت دیزاین سابفرم که به اینچ داده را در 1440 ضرب کردیم  ،  گردش کنیم یا عدد صحیح آنرا در نظر بگیریم میشود 3540 به واحد twips ) حال باید بگوئیم چند واحد چند واحد به عرض سابفرم اضافه شود یا کسر شود ( تا زمانیکه کامل به عرض خود برسد یا صفر شود ) فرضا میخواهید زمانیکه که Toggle فشرده میشود 295 واحد ( twips ) به عرض قبلی اضافه شود و همینطور ادامه پیدا کند 295 واحد 295 واحد تا بعرض 3540 برسد لازمست که لوپی ایجاد شود و بگوئیم این لوپ چند بار انجام شود عدد 3540 تقسیم بر 295 میشود عدد 12 پس لوپ ما باید 12 بار تکرار شود از این رو در زیر متغیر X تعریف شده شما میتوانید نام متغیر را تغییر دهید. Timer اینجا نقشش مکث یا Pause است وگرنه در حالت لوپ X شما تغییرات را سریع می بینید و به یکباره ، ولی زمان استفاده از Timer با توجه به مکث در هر پارت شما تغییرات اضافه شدن عرض تا کامل شدن یا کسر شدن از عرض تا زمان به صفر رسیدن را با چشمان تیزبین خود خواهید دید مثل عکس پایین تر از عکس بیان خارجی عملکرد.


در رویداد کلیک Toggleباتن طبق تصویر  زیرین توسط دوستان خارجی چرا از پراپرتی Left سابفرم استفاده شده؟ چون  عرض گرفتن سابفرم به سمت راست آن است نه چپ یعنی زمانیکه شما به سابفرم عرض میدهید Left آن تغییر نمیکند از این رو زمانیکه شما میخواهید به عرضی که صفر است عدد بدهید باید بگوئید پراپرتی Left هم تغییر کند ... فرضا عرض سابفرم را صفر کرده اید و به  منتهی علیه سمت راست فرم اصلی برده اید اگر Left را منفی نکنید ( واحد به واحد )  چنانچه امتحان بنمائید به سمت راست عرض می گیرد در صورتیکه شما میخواهید سابفرم به سمت چپ بازشود لذا در حالیکه سابفرم طبق لوپ X عرض می گیرد آنهم واحد به واحد باید کاری کنید که Left آن هم به سمپ چپ فرم اصلی متمایل شود .... یعنی اگر Toggle فشرده شد مثبت 295 واحد به عرض سابفرم اضافه شود و از آنطرف منفی 295 واحد از عدد پراپرتی Left آن کسر گردد تا به سمت چپ کشیده شود و اگر Toggle به حالت اول برگردد عرض آن منفی 295 واحد شود و در اینجا به عدد پراپرتی Left آن مثبت 295 واحد اضافه شود.


حال که به نحوه ی عملکرد آن دست یافتید می توانید سابفرم بازشو ( با همراهی تابع Timer )  را برای خود یا دوستانتان تهیه کرده و یک مهارت به مهارت های دیگرتان اضافه کنید. کار سختی نبود یکم فکر کردن لازمه البته تسلط به عملکرد پراپرتیها در رسیدن به هدف Major Priority است. گذاشتن توضیحات کامل و تصاویر و منابع کار درستی نیست چون اینها کاری تجاری هستند و افراد می توانند از طریق همین دانسته ها کسب درآمد کنند ولی چون منابع خارجی هستند و از خودمان نیست  و آنها هم به اشتراک گذاشته اند لذا از نظر شرعی کاملا حلال است.



(Sub timeout(duration_ms As Double
Start_Time = Timer
Do
DoEvents
Loop Until (Timer - Start_Time) >= duration_ms
End Sub


()Private Sub Toggle4_Click




 Inside OnLoad Event Set The Width Of Subform to Zero  And the Left  Property Of Subform To the Left  
.Property Of Toggle Button Plus Its Width 

If Use ToggleButton would be better otherwise in case of using Command Button You Shall Declare A Variable As Boolean So That Manage Whether Button  
 Pressed

 You Can Use MouseDown  Event Of the MainForm to return back the subform if the toggle button was true, if  you did it you must define a boolean variable and set to true also in Toggle Click Event Write if the specified variable was true then toggle set to False And the end of the  code set it ( Variable ) to false


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






 : Form 

Forms!Form1!Text1

("Forms("Form1").Controls("Text1

: SubForm


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


If You Have Created Event In Subform Just Needs Write: Form_SubForm1.Form!Text1

If Not 

Forms!Form1!SubForm1!Text1


سابفرم پراپرتیهای مخصوص به خودش را داراست مثل Link Master و Link Child که ارتباط بین سابفرم و فرم اصلی را برقرار می کند فرضا با فیلتر کردن کمبو در فرم اصلی که حاوی آیدی های سابفرم است  سابفرم فیلتر میشود یا Border Style و غیره جز دسترسی به کنترل های فرمش.