چطور مانع از ورود داده تکراری در اکسس شویم ؟
سلام به آموزش دیگری از سری آموزش های Access در سافت پلاس خوش آمدید . در این اموزش می خواهیم راجع به این قضیه با هم صحبت کنیم که چه طوری مانع از داده تکراری در اکسس شویم .
برای اینکه یک پایگاه داده اصولی داشته باشیم باید شرایطی را رعایت نماییم . یکی از این شرایط که در نوع خود بسیار مهم هم می باشد این است که تا حد امکان و یا حتی می توان گفت به هیچ وجه نباید در ساختار یک بانک اطلاعاتی از داده تکراری استفاده کنیم .
خود نرم افزار اکسس هم روی این قضیه خیلی حساس است . برای همین ابزارهای مختلفی را در اختیار ما قرار داده که به کمک آنها می توانیم کنترل کنیم که کاربر به هیچ وجه نتواند داده یا داده های تکراری را در برنامه ما وارد کند .
برای اینکه مطمئن شویم که در ساختار بانک اطلاعاتی ما هیچ داده تکراری وارد نخواهد شد روش های مختلفی وجود دارد .
از جمله این موارد می توان به گزینه های زیر اشاره کرد :
۱- استفاده به جا و مناسب از کلیدهای اولیه در ساختار یک جدول
۲- استفاده از قواعد و قوانین اعتبار سنجی (validation Rule ) در ایجاد جداول
۳- استفاده از کد نویسی VBA برای کنترل دیتاهای ورودی .
استفاده از هر کدام از این موارد به جای خود می تواند بسیار کارآمد باشد .در این سایت هم راجع به خیلی از انها صحبت کرده ایم که می توانید به لینک های هر مطلب مراجعه کنید .
اما امروز می خواهیم با استفاده کدهای VBA در محیط اکسس قابلیتی را ایجاد کنیم که از ورود دیتای تکراری در یک جدول اکسس ممانعت بعمل آوریم .
اگر از خوانندگان مطالب سایت Softpluse باشید حتما می دانید که قبلا در مطلب جداگانه ای به این موضوع پرداختیم .
آنچه که در مطلب فوق به آن پرداختیم این بود که چگونه می توانیم از ورود داده تکراری توسط کاربر در یک فیلد جلوگیری نماییم .
اما مطلب امروز ما در راستای مطلب فوق و به نحوی تکمیل کننده آن است.
من عایرضا شهرآئینی هستم و در این مطلب به شما آموزش می دهم که چطور می توانید با استفاده از دو فیلد کنترل کنید که کاربر اطلاعات خود را بصورت تکراری وارد نکند .
در انتهای این اموزش علاوه بر یادگیری این روش می توانید نمونه فایل دانلودی این آموزش را در قالب یک فایل اکسس ۲۰۱۹ دریافت کنید . اگر آماده اید پس با من همراه شوید .
با این مراحل مانع از ورود داده تکراری در اکسس شوید
امروز می خواهیم ببینیم که چگونه می توانیم مانع از ورود داده تکراری در دو فیلد بطور همزمان شویم .
خوب در نگاه اول بیایید ببینیم که اصلا اینکه مانع از ورود داده تکراری در دو فیلد شویم در کجا به کار می آید .
ابتدا به جدول زیر نگاهی بکنید .
ما در اینجا جدولی داریم شامل لیست چهار کتاب که هر کدام مربوط به یک نویسنده است .
حال فرض کنید که این لیست ما به جای ۴ ردیف دارای بیش از ۴۰۰ ردیف باشد .
تصور کنید که کتابی با عنوان کویر را مجددا می خواهیم در این لیست وارد نماییم .یعنی با همین نام کتاب و با همان نویسنده .
در این صورت احتمالات زیر را باید در نظر بگیریم :
۱- از آنجا که در جدول فوق شماره کتاب بصورت کلید اولیه تعریف شده است به راحتی می توان یک شماره غیر تکراری ایجاد کرد و کتاب مزبور را در جدول ثبت نماییم غافل از اینکه هر دو کتاب وارد شده یکی بوده و این کتاب می تواند حالت تکراری داشته باشد .
۲-اگر بخواهیم مانع از وارد کردن اسامی کتاب ها بطور تکراری شویم می توانیم خاصیت Index فیلد مربوط به نام کتاب را بر روی (Yes (No Duplicates تنظیم نماییم در این حالت هیچ کتابی با یک عنوان مشابه در این لیست وارد نخواهد شد
راجع به ایندکس و ایندکس گذاری هم در مطلب با عنوان مفصل صحبت کرده ام .
۳- تصور نمایید که با استفاده از خاصیت (Yes (No Duplicates مانع از این شدیم که لیست کتابهای ما بطور تکراری ثبت شوند اما اگر واقعا کتاب دیگری تحت عنوان “کویر” وجود داشته باشد اما نویسنده آن متفاوت باشد از آنجا که هم نام با عنوان کتابی است که قبلا ثبت شده بنابراین اجازه ثبت مجدد را به ما نخواهد داد .
برای اینکه این مشکل را حل نماییم راه حل های متعددی را می توان در نظر گرفت .
اما امروز می خواهم روشی را به شما آموزش دهم که با استفاده از آن بتوانید :
۱-مانع از وارد شدن نام و مشخصات دو کتاب با یک نویسنده واحد شوید .
۲-پیغام مناسبی را ایجاد کنید که به زبان فارسی تکراری بودن کتاب مربوطه را به کاربر گوشزد نماید .
برای این کار مراحل زیر را دنبال نمایید :
۱-جهت ورود اطلاعات خود به جدول مربوطه یک فرم ایجاد نمایید .
تصویر زیر فرم مورد نظر را در محیط اجرا نمایش می دهد .
نکاتی که در خصوص این فرم باید مد نظر قرار دهید :
– نام تکس باکس مربوط به کد کتاب را bookcode در نظر بگیرید .
– نام تکس باکس مربوط به نام کتاب را bookname در نظر بگیرید .
– نام تکس باکس مربط به نام نویسنده را author در نظر بگیرید .
– نام جدول مربوطه را نیز tablebooks در نظر بگیرید .
اکنون با در نظر گرفتن شرایط و موارد فوق می تواینم به سراغ محیط کد نویسی رفته و کدهای مربوطه را وارد نماییم .
اما کدهای مزبور چه هستند و در کجا باید از آنها استفاده نمود .
درج کدهای VBA و ایجاد روال مرتبط
ما می خواهیم فرآیندی را ایجاد نماییم که به واسطه آن کاربر بتواند نام کتاب و نام نویسنده مربوطه را وارد کند .
بعد از وارد کردن نویسنده به محض اینکه تکس باکس مربوطه را ترک کند فرآیند اجرای کدهای ما آغاز می شود
عملکرد این کدها به گونه ای است که به سرعت اطلاعات درج شده جدید را با اطلاعات قبلی مقایسه می کند و اگر این اطلاعات قبلا درج شده باشد با استفاده از یک پیغام مناسب کاربر را از این امر مطلع می کند .
برای استفاده از این کدها باید ابتدا در نمای طراحی فرم خود قرار بگیرید .
تکس باکس موسوم به author را انتخاب نمایید .
از کادر property sheet گزینه After Update را انتخاب نمایید .
در روال ایجاد شده کدهای زیر را در روال ایجاد شده قرار دهید .
Option Compare Database Private Sub author_AfterUpdate() Dim Newbook, Newauthor As String Dim myCriteria As String Dim bookNo As Integer Newbook = Me.bookname.Value Newauthor = Me.author.Value myCriteria = "[bookname] = " & "'" & Newbook & "' and [author] = " & "'" & Newauthor & "'" If Me.bookname = DLookup("[bookname]", "tblbooks", myCriteria) Then MsgBox "این کتاب با عنوان " & " " & Newbook & " " & "به نویسندگی " & Newauthor _ & vbCr & "در حال حاضر در پایگاه داده ثبت شده است " & vbCr & "لطفا دوباره بررسی نمایید .", vbInformation, "اطلاعات تکراری" Me.Undo bookNo = DLookup("[bookcode]", "tblbooks", myCriteria) Me.DataEntry = False DoCmd.FindRecord bookNo, , , , , acCurrent End If End Sub
کدهای بالا را تفسیر کنید
بیایید با هم نگاهی دقیقتر به این کدها بیاندازیم تا با عملکرد آنها بطور مفهومی تر آشنا شویم .
در قدم اول ما می خواهیم نام کتاب به همراه نویسنده مربوطه را که توسط کاربر و در فرم مربوطه وارد می شود را در حافظه رایانه خود ذخیره کنیم .
برای این کار ما نیاز به تعریف دو متغیـــــــر داریم .
این کار را در اولین خط از این کد انجام می دهیم . متغیر Newbook را برای ذخیره نام کتاب و متغیر Newauthor را برای ذخیره کردن نام نویسنده و به قرار زیر تعریف می نماییم .
بعد از اینکه مشخصات کتاب و نویسنده را دریافت نمودیم باید کنترل کنیم که آیا قبلا کتابی با این مشخصات و نویسنده یکسان در جدول ما درج شده است یا خیر . از آنجا که هم نام کتاب و هم نام نویسنده برای ما مطرح است که تکراری نباشد بنابراین هر دوی این مشخصات را در یک متغیر ذخیره می نماییم .
این کار را با استفاده از کد زیر انجام می دهیم .
در خط بعدی از این کد با استفاده از تابع DLookup بررسی می کنیم که آیا کنابی با این مشخصات در جدول وجود دارد که اگر وجود داشته باشد پیغام مناسب را برای کاربر نمایش می دهیم .
در نهایت کافی است ماژول خود را ذخیره نمایید .
اکنون که به محیط فرم خود برگردید ملاحظه خواهید نمود که به هیچ عنوان قادر به وارد نمودن مشخصات یک کتاب بصورت تکراری نخواهید بود. البته به شرطی که هم نام کتاب و هم نام نویسنده کتاب یکی باشد این مورد بعنوان تکرار از سوی برنامه شناخته می شود
در اینجا آموزش دیگری از سری آموزش های سافت پلاس در زمینه اکسس به پایان رسید امیدوارم که برای شما مفید بوده باشد .
مطالب زیر را حتما مطالعه کنید
ساخت برچسب در اکسس💥چطور آنها را ایجاد و مدیریت کنیم ؟
ریبون ها در اکسس💥از مخفی کردن تا مدیریت کردن آنها
چطوری متن ها و تصاویر را بصورت متحرک در اکسس نمایش بدهیم ؟
فرمت دهی نوشته ها در اکسس | کاربرد + مثالها
۵ ویژگی در فرم های اکسس که کمتر از آنها خبر داشتید .
باز کردن گزارش اکسس برای یک رکورد مشخص + نمونه فایل
1 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام استاد برای فیلد بالا فیلمی موجود نیست