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

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

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

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

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

پدیده BeforeUpdate و DlookUp در فرم



رویداد BeforeUpdate چه زمانی رخ خواهد داد؟ :

-فشردن دکمه Enter

-فشردن دکمه SaveRecord

-فشردن دکمه Tap

نکته : در اکسس، ویژگی TabStop تعیین می‌کند که آیا یک کنترل می‌تواند هنگام فشردن کلید Tab، فوکوس را دریافت کند یا خیر. تنظیم آن روی True (پیش‌فرض) اجازه می‌دهد تا کنترل با Tab به آن متصل شود، در حالی که False از این امر جلوگیری می‌کند.

-بردن فوکس به فیلد یا رکورد دیگر

-فشردن کلیدهای میانبر


و نهایتا اطلاعات آن فیلد یا رکورد به روزرسانی یا Update خواهد شد البته چنانچه Cancel = True نباشد مثال ذکر شده خود گویاست 




The BeforeUpdate event occurs before changed data in a control or record is updated.

Syntax

expression.BeforeUpdate (Cancel)

expression A variable that represents a Form object.


تابع DlookUp : 

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


DLookup( expr, domain [, criteria)

expr : can include the name of a field in a table, a control on a form , a constant , or a function

Domain : an expression,table or a query



مثال : 


فرمی با نام Products  حاوی کنترل تکست باکسی است که ProductName نامیده می شود.

شرح رویداد :

در داخل آن از دو تابع IsNull و DlookUp استفاده شده اولی در صورت Null بودن با نبودن True یا False را برمی گرداند و دومی کار جستجو در فیلد [ ها ی ]  یک جدول یا کوئری  را انجام می‌دهد و به اولین مورد که برخورد آنرا بازیابی می‌کند.  تابع Dlookup با توجه به شرط داده شده یعنی برابری متن داخل تکست باکس و فیلد ProductName از جدول Products جوابی را بر می‌گرداند.  و تابع Not IsNull هم چک می‌کند اگر جواب Null نبود پیام  این محصول از قبل وجود داشته را نمایش میدهد و شما تا زمانیکه محصولی که در فیلد مربوطه جدول نیست را نزنید اجازه Update را نمی‌دهد حتی اگر خروج کنید .




Private Sub ProductName_BeforeUpdate(Cancel As Integer) 

    If(Not IsNull(DLookup("[ProductName]", _ 

        "Products", "[ProductName] ='" _ 

        & Me!ProductName & "'"))) Then 

        MsgBox "Product has already been entered in the database." 

        Cancel = True 

        Me!ProductName.Undo 

    End If 

End Sub