صدور پیغام مناسب قبل از ذخیره اطلاعات در فرم اکسس
یکی از مهمترین کارهایی که با استفاده از فرم ها انجام می دهیم این است که از فرم ها جهت ورود اطلاعات در جداول خود استفاده کنیم .
اما خیلی از مواقع پیش می آید که ما اطلاعاتی را در فرم خود وارد کرده ایم .
فرض کنید که ما تغییراتی را در این اطلاعات اعمال می کنیم .
امروز می خواهیم کاری کنیم که وقتی این تغییرات را اعمال کردیم قبل از اینکه این تغییرات در جدول ذخیره شوند یک کادر پیغام به کاربر نمایش بدهیم.
در این کادر به کاربر پیغام می دهیم که آیا می خواهد این تغییرات را ذخیره کند یا خیر ؟ .
وقتی که این پیغام به کاربر نمایش داده شد دو انتخاب پیش روی کاربر است :
اگر کاربر دکمه تائید را بزند این تغییرات در جدول ذخیره می شود .
اما اگر کاربر دکمه لغو را بزند تغییرات جدید حذف و اطلاعات قبلی در فرم نمایش داده خواهد شد .
برای دریافت بهتر موضوع به تصویر زیر توجه کنید .
مطلب مرتبط: تابع () DMAX در اکسس و نحوه کار با آن
خوب برای انجام تنظیمات و ایجاد این امکان در فرم خود با هم مراحل زیر را با هم دنبال می کنیم .
مراحل ایجاد پیغام مناسب قبل از ذخیره اطلاعات
اول از همه به یک جدول حای اطلاعات نیاز داریم .
این جدول و اطلاعات هر چیزی می تواند باشد .
در قدم بعدی باید برای ورود اطلاعات مورد نظر خود در این جدول یک فرم داشته باشیم .
بعنوان مثال من از فرم زیر برای ورود اطلاعات مورد نظر خودم استفاده می کنم .
یک مطلب خواندنی دیگر : فارسی کردن پیغام های خطا در اکسس
حالا می خواهم کاری کنم که اگر کاربر اطلاعات مربوط به نام یک کتاب را تغییر داد بلافاصله به کاربر پیغامی نمایش داده شود .
متن این پیغام شامل پرسشی خواهد بود که از کاربر تائیدیه برای ذخیره این تغییرات را سوال می کند .
پس هدف اول من نمایش این پیغام به کاربر در صورت تغییر در اطلاعات مربوط به تکس باکس نام کتاب خواهد بود .
در این فرم نام تکس باکسی که اطلاعات مربوط به نام کتاب ها را دریافت می کند bookname است .
من می خواهم هر گونه تغییراتی در اطلاعات این تکس باکس برای من رصد و پیگیری شود و قبل از اینکه این تغییرات اعمال شود و در جدول ذخیره شوند از کاربر تائیدیه دریافت شود .
بنابراین به سراغ رویداد Before Update می روم .
در رویداد Before Update مربوط به این تکس باکس قطعه کد زیر را وارد می کنم .
)Private Sub bookname_BeforeUpdate(Cancel As Integer If Me.Dirty Then vbNo Then="اعمال تغییرات",vbYesNo + vbInformation, "مشخصات مربوط به نام کتاب تغییر یافت "If MsgBox Me.Undo Else "تغییرات ذخیره شد "MsgBox End If End If End Sub
بررسی کدها
بیایید کمی وقت بگذاریم و با هم این کدها را بررسی کنیم .
در خط اول از متد Dirty استفاده کرده ایم .
با استفاده از این متد کنترل می کنیم که آیا تغییراتی در اطلاعات این فیلد رخ داده یا نه .
اگر این تغییرات اتفاق افتاده باشد یک کادر پیغام به کاربر نمایش داده می شود .
این کادر در درجه نخست به کاربر می گوید که تغییراتی در نام کتاب ایجاده شده و در مرحله بعد از او می پرسد که آیا می خواهد این تغییرات را ذخیره کند یا خیر .
برای این کار هم دو دکمه Yes و No در اختیار وی قرار داده می شود .
حالا دو گزینه پیش روی کاربر است .
اگر گزینه No را انتخاب کند که به این معنی است که کاربر از ذخیره این تغییرات منصرف شده است
پس با استفاده از متد Undo همه چیز را به سر جای اولش بر می گردانیم و همان اطلاعات اصلی ر ا به کاربر نمایش می دهیم .
اما در حالت دوم اگر کاربر دکمه Yes را انتخاب کند یعنی می خواهد که این تغییرات در جدول ذخیره شود .
در اینجا طبق روال معمول اطلاعات را ذخیره کرده و برای اطمینان بیشتر هم یک پیغام را به کاربر نمایش می دهیم .
تا به اینجای کار به هدف نهایی که مورد نظرمان بود رسیدیم .
اما اگر دوست دارید که کمی در این موضوع جلوتر برویم و قابلیت جدیدی را به کادر پیغام خود اضافه کنیم پس با من همراه شوید .
بررسی و اضافه کردن قابلیت جدید
اما این قابلیت جدید چیست ؟
قابلیتی که از آن صحبت می کنیم این است که می خواهیم کاری کنیم که در مرحله نمایش پیغام به کاربر برای اخذ تائیدیه جهت ذخیره کردن تغییرات هم مشخصات قبلی کتاب و هم مشخصات جدید کتاب را که در قالب تغییرات از سوی کاربر اعمال شده است را به کاربر نمایش دهیم .
برای رسیدن به این هدف چه باید کرد .
اول اجازه بدهید کدهایی را که برای این منظور نیاز داریم را درج کنم و بعد با هم به بررسی این کدها بپردازیم .
مطلب مرتبط : مفهوم رکوردست در برنامه نویسی VBA
حالا بیایید با هم بررسی کوتاهی روی این کدها داشته باشیم .
خوب من برای ذخیره نام اولیه کتاب نیاز به یک کتغیر دارم .
این متغیر را به نام Fval و از نوع متن و بصورت عمومی تعریف کرده ام تا در کل این ماژول قابل دسترسی باشد .
در اولین روال تعیین کرده ام که به محض اینکه کاربر در داخل تکس باکس مربوط به نام کتاب کلیک کرد مقدار آن را در متغیر Fval ذخیره شود .
حالا می رسیم به بخش اصلی کد که در رویداد Befor-Update تکس باکس مربوط به نام کتاب درج شده است .
در ابتدای کار هم یک متغیر تعریف کرده ام از نوع متن و به نام Fval حالا این متغیر قرار است چکار کند .
خوب من با استفاده از دستور IF گفته ام که به محض اینکه کاربر تغییری را در نام کتاب ایجاد کرد این تغییرات در این متغیر ذخیره شود .
حالا ما هم نام اولیه کتاب را داریم و هم نامی را که بواسطه تغییرات کاربر در نام کتاب ایجاد شده است ذخیره کرده ایم .
در قسمت بعد هم که از یک کادر پیغام استفاده می کنیم که هم نام قبلی کتاب و هم نام جدید را به کاربر نمایش بدهیم .
بنابراین در اینجا می توانیم حالت پیشرفته تری را به کادر پیغام خود بدهیم تا کاربر بهتر بتواند تصمیم بگیرد که آیا این تغییرات را ذخیره کند یا خیر .
آموزش امروز ما هم در اینجا به پایان رسید .
مطالب زیر را حتما مطالعه کنید
ریبون ها در اکسس💥از مخفی کردن تا مدیریت کردن آنها
چطوری متن ها و تصاویر را بصورت متحرک در اکسس نمایش بدهیم ؟
فرمت دهی نوشته ها در اکسس | کاربرد + مثالها
۵ ویژگی در فرم های اکسس که کمتر از آنها خبر داشتید .
باز کردن گزارش اکسس برای یک رکورد مشخص + نمونه فایل
Sub Report در اکسس و کاربردهای آن +[ ویدئو ]
5 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام مطالبتون خوب و آموزنده است.
سلام
با تشکر از مطالب ارزنده در رابطه با اکسس
برای دانلود فایل نمونه خطاهای اکسس در وب سایت هیچ لینکی نیست
با سلام
فایل نمونه اضافه شد می توانید دانلود نمایید
سلام با تشکر از مطالب ارزشمند در سایتتان – فایل نمونه صدور پیغام قبل از ذخیره اطلاعات متاسفانه چندین بار سفارش فقط یک عکس به امیل مان لود می شود و اصل فایل نمی اید .باز هم متشکرم از مطالب مفید تان
سلام با تشکر از مطالب ارزشمند در سایتتان – فایل نمونه صدور پیغام قبل از ذخیره اطلاعات متاسفانه چندین بار سفارش فقط یک عکس به امیل مان لود می شود و اصل فایل نمی اید