چطور مانع از ورود اطلاعات تکراری در اکسس شویم
سلام به همراهان سافت پلاس . خوشحالم که با یکی دیگر از سری آموزش های مربوط به آموزش اکسس همراه شما هستم.
موضوعی که امروز می خواهیم به سراغ آن برویم مربوط به داده تکراری در اکسس است .
یکی از چیزهایی که در کار با جداول در اکسس خیلی اهمیت دارد و باید دغدغه اصلی شما باشد این است که تا جایی که می شود از ورود داده تکراری در داخل جدول ها جلوگیری کنید .
اکسس برای ممانعت از ورود داده های تکراری در داخل جداول یک سری امکانات و قابلیت هایی را در اختیار تان قرار می دهد. در کنار آن روش های دیگری هم وجود دارد که با استفاده از انها می شود کاری کرد که کاربر قادر به وارد کردن داده تکراری در داخل جدول های ما نباشد .
امروز می خواهیم این روش ها را با هم بررسی کنیم و با کمک آنها یاد بگیریم که چطور می شود خیلی راحت و البته سریع کاری کنیم که کاربر قادر به وارد کردن داده تکراری در اکسس نباشد .
البته نیاز نیست نگران چیزی باشید چون همه مراحل کار را در نهایت سادگی یاد خواهید گرفت و در نهایت قادر خواهید بود که در داخل هر پروژه دیگری با استفاده از همین روش مانع ورود داده تکراری در اکسس شوید .
پس از شما می خواهم که تا انتهای این آموزش من را همراهی کنید .
فهرست محتوا
ممانعت از ورود داده تکراری به کمک کلید اولیه
اول برویم به سراغ خود اکسس و ببینیم که چه امکاناتی را در اختیار ما قرار می دهد که با استفاده از آنها می شود مانع از ورود داده تکراری در اکسس شد .
یکی از این قابلیت ها مربوط به مبحث کلید اولیه یا همان Primary Key می شود .
کلید اولیه در واقع یک یا چند تا فیلد در داخل جدول شماست که حالت یکتا دارد .
خاصیت کلید اولیه در غیر تکراری بودن اطلاعات آن است .
این یعنی اینکه اگر یک فیلد را به عنوان کلید اولیه به اکسس معرفی کنید اکسس دیگر این اجازه را به شما نمی دهد که بخواهید در داخل آن از داده های تکراری استفاده کنید .
پس این اولین روشی است که به کمک آن می توانید کاری کنید که کاربر قادر به وارد کردن اطلاعات تکراری در داخل یک یا چند تا از فیلدهای جدول یا جداول شما نباشد .
ایندکس ها و داده های تکراری
توی اکسس یک قابلیتی وجود دارد به اسم ایندکس .
ایندکس گذاری در داخل جدول ها یکی از کارهای مهمی است که حتما باید یک طراح بانک اطلاعاتی راجع به نحوه انجام این کار اطلاعات خوبی داشته باشد .
من در مطلب ایندکس گذاری و نقش آنها در جداول اکسس مفصل راجع به مفهوم ایندکس و ایندکس گذاری صحبت کرده ام پس اینجا قرار نیست راجع به نحوه ایندکس گذاری اطلاعات در داخل جداول صحبتی بکنم .
اما توصیه می کنم که حتما مطلب بالا را مطالعه کنید .
اما چیزی که اینجا می خواهم به آن اشاره کنم کمکی است که ایندکس ها برای جلوگیری از ورود داده تکراری در اکسس می توانند به شما بکنند .
وقتی که شما یک یا چند تا فیلد را ایندکس گذاری می کنید اکسس دو تا گزینه در اختیار شما قرار می دهد .
این گزینه ها را می توانید در تصویر زیر مشاهده کنید .
گزینه اول گزینه Yes(Duplicate Ok ) است .با این گزینه اینجا کار نداریم .
گزینه دوم گزینه Yes(NO Duplicate ) است . اگر این گزینه را برای حالت ایندکس گذاری خودتان انتخاب کنید از این به بعد کاربرتان هر وقت که بخواهد در داخل این فیلد اطلاعاتی را به صورت تکراری وارد کند بلافاصله اکسس پیغام زیر را برایش نمایش می دهد .
این پیغام به کاربرتان می گوید که اطلاعاتی که وارد کرده است باعث ایجاد داده تکراری در این فیلد شده و قانون مربوط به ایندکس گذاری را نقض کرده است .
پس این هم دومین قابلیتی است که اکسس برای جلوگیری از داده تکراری در اختیار شما قرار می دهد .
ایراد دو تا روش اول
تا به اینجا دو تا روش را یاد گزفتید که به کمک هر کدام از آنها می توانید به نحوی مانع از ورود داده تکراری در داخل نرم جداول اکسس شوید .
این روش ها روش های خوب و کار راه اندازی هستند .
اما در عین ساده بودن یک ایراد هم می توان برای آنها در نظر گرفت .
آن ایراد این است که این روش ها فقط می توانند مانع از ورود داده تکراری در فیلدهایی شوند که شما آن فیلدها را یا به عنوان کلید اولیه تعریف کرده اید یا به عنوان ایندکس آنها را در نظر گرفته اید .
حالا فرض کنید که شما می خواهید که به غیر از این فیلدهای کلید اولیه یا ایندکس گذاری شده کاربرتان امکان وارد کردن اطلاعات تکراری در یک یا چند تا فیلد دیگر که خاصیت کلید اولیه یا ایندکس ندارند را نداشته باشد .
تازه در هر دو تای این روش ها وقتی که اکسس با داده تکراری روبرو می شود یک پیغامی را به کاربر نمایش می دهد که اولا این پیغام به زبان انگلیسی است و در ثانی آنقدر اصطلاحات قلمبه و سلمبه دارد که کمتر کاربر عادی در داخل اکسس از آنها سر در می آورد .
اینجا باید چه کار کنید ؟
در ادامه با هم روشی را یاد خواهیم گرفت که می شود کاری کرد که کاربر قادر به وارد کردن داده تکراری در داخل فیلدهای مورد نظر ما نباشد حتی اگر ان فیلد یا فیلدها به عنوان کلید اولیه یا ایندکس تعریف نشده باشند .
در ثانی توی این روش می شود پیغام هایی را تنظیم کرد که وقتی کاربر داده تکراری وارد کرد اولا به زبان فارسی باشند و در ثانی خیلی ساده کاربر را متوجه اشتباهی که انجام داده است بکینم .
یک پروژه ساده برای داده تکراری در اکسس
بیایید از همین ابتدا همه چیز را با یک مثال و در قالب یک پروژه عملی پیش ببریم .
فرض کنید که در داخل اکسس یک جدولی طراحی کرده اید .
این جدول شامل فیلدهای مختلفی است که در داخل آن می خواهید اطلاعات مربوط به چندین و چند کتاب را درج کنید .
اما به هیچ وجه نمی خواهید که در داخل این جدول اسامی کتابها به صورت تکراری وارد شوند .
اول بیایید یک نگاهی به این جدول بیندازیم تا بعد به سراغ مراحل اصلی کار برویم .
حالا فرض کنید یک فرم طراحی کرده ایم تا کاربر اطلاعات مورد نظر ما از طریق این فرم وارد جدول مورد نظر ما کند .
اما می خواهیم کاری کنیم کاربر به هیچ عنوان نتواند در داخل ستون مربوط به نام کتاب اسامی کتابها را بصورت تکراری وارد کند .
به خاطر داشته باشید وارد کردن اطلاعات تکراری باعث افزونگی اطلاعات در اکسس می شود .
فرمی که من طراحی کرده ام به شکل زیر است .
اینجا می خواهیم کاری کنیم که کاربر قادر به وارد کردن نام کتابها به صورت تکراری نباشد .
پس در داخل فرم به سراغ تکس باکس مربوط به نام کتاب رفته و کدهای زیر را در داخل رویداد مربوط به Befor_Update آن درج می کنیم .
Private Sub book_name_BeforeUpdate(Cancel As Integer)
Dim Duplicate As Variant
Duplicate = DLookup("book_name", "tblBooks", "book_name='" & Me.book_name & "'")
If IsNull(Duplicate) Then
Else
MsgBox "نام اين کتاب قبلا وارد شده است ."
Cancel = True
End If
End Sub
چند تا نکته در مورد کدهای بالا را با هم مرور می کنیم .
نکته اول :
توی فرم مورد نظر ما اسم فیلدی که اسامی کتاب ها را دریافت می کند book_name است .
اسم جدولی که نمی خواهیم در داخل فیلد آن داده تکراری وارد شود tblBooks است .
اسم فیلد مورد نظری که نمی خواهیم در داخلش اسامی کتابها به صورت تکراری وارد شود book_name است .
در دخل کدهای بالا کار اصلی را تابعی به اسم Dlookup برای ما انجام می دهد .
اگر می خواهید راجع به این تابع بیشتر بدانید به شما مطلب آشنایی با تابع Dlookup در اکسس را توصیه می کنم .
در مورد نحوه کاربرد و نوشتن این کدها هم در ویدئوی ابتدای همین مطلب توضیحات لازم را داده ام که توصیه می کنم حتما این ویدئو را هم مشاهده کنید .
اما باز هم بیایید کمی دقت کارمان را بیشتر کنیم .
ما در کدهای بالا از اکسس خواستیم که به هیچ وجه در فیلد مربوط به نام کتابها اسم کتابها را به صورت تکراری قبول نکند . اما فرض کنید که ما دو تا کتاب داشته باشیم که با هم هم نام باشند اما نویسنده های آنها مختلف باشند .
در اینصورت درست است که اسم این دو تا کتاب با هم یکی است اما مطمئنا این دو تا کتاب حالت تکراری ندارند .
پس باید کاری کنیم که اکسس متوجه این قضیه بشود که اگر دو تا کتاب هم نام از دو تا نویسنده متفاوت وجود داشت آن کتابها را به عنوان کتاب تکراری در نظر نگیرد .
این بار به جای کدهای قبلی از کدهای زیر استفاده می کنیم .
Private Sub f_name_AfterUpdate()
Dim Newbook, Newf_name As String
Dim myCriteria As String
Newbook = Me.book_name.Value
Newf_name = Me.f_name.Value
myCriteria = "[book_name] = " & "'" & Newbook & "' and [f_name] = " & "'" & Newf_name & "'"
If Me.book_name = DLookup("[book_name]", "tblbooks", myCriteria) Then
MsgBox "اين کتاب با عنوان " & " " & Newbook & " " & "به نويسندگي " & Newf_name _
& vbCr & "در حال حاضر در پايگاه داده ثبت شده است " & vbCr & "لطفا دوباره بررسي نماييد .", vbInformation, "اطلاعات تکراري"
Me.Undo
End If
End Sub
با استفاده از این کدها اگر دو تا کتاب هم نام داشته باشیم اما اسامی نویسنده های انها با هم متفاوت باشد دیگر اکسس آنها را به عنوان کتاب تکراری در نظر نمی گیرد .
توضیحات مربوط به این کدها هم در داخل ویدئوی ابتدایی همین مطلب قرار دارد .
مطلب پیشنهادی : کلید اصلی یا پرایمری کی در اکسس +نکات کاربردی
جمع بندی و نتیجه گیری این آموزش
توی این آموزش یاد گرفتید که چطور می شود کاری کرد که کاربر قادر به وارد کردن اطلاعات تکراری در داخل دیتابیس شما نباشد .
برای این کار هم روش های مختلفی را بررسی کردیم که با استفاده از هر کدام از آنها می توانید برای این کار اقدام کنید .
در پایان از اینکه تا به اینجای اموزش با من همراه بودید از شما سپاسگزارم .
ممنون خواهم شد اگر نظر خودتان را در مورد این آموزش با من در میان بگذارید تا کیفیت این آموزش و بقیه اموزش های این سایت بر اساس نظرات شما عزیزان بهتر و بهتر شود .
در پایان اگر سوالی در مورد این اموزش داشتید می توانید در بخش نظرات و دیدگاههای همین مطلب مطرح کنید تا با هم پاسخ آن را بررسی کنیم .
در ضمن نمونه فایل آموزش مربوط به این مطلب را می توانید از انتهای همین مطلب به صورت رایگان دانلود کنید .
به امید دیدار مجدد شما در سافت پلاس .
برای مشاهده لینک دانلود لطفا وارد حساب کاربری خود شوید!
وارد شویدپسورد فایل : گزارش خرابی لینک
مطالب زیر را حتما مطالعه کنید
ساخت برچسب در اکسس💥چطور آنها را ایجاد و مدیریت کنیم ؟
ریبون ها در اکسس💥از مخفی کردن تا مدیریت کردن آنها
چطوری متن ها و تصاویر را بصورت متحرک در اکسس نمایش بدهیم ؟
فرمت دهی نوشته ها در اکسس | کاربرد + مثالها
۵ ویژگی در فرم های اکسس که کمتر از آنها خبر داشتید .
باز کردن گزارش اکسس برای یک رکورد مشخص + نمونه فایل
6 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام برای دریافت فایل کادری در بالا نبود تا تکمیل شود لطفا فایل راارسال فرمائید با تشکر
سلام در اولین فرصت ممکن نمونه فایل در همن مطلب قرار داده می شود .
سلام
بسیار روان و قابل درک مطالب آموزش را نوشتید، به امید خواندن مطالب آموزشی جدید تر شما
و همچنین سپاس از زحمات شما
سلام
استاد برای من داخل mod نمیدونم چرا از dlookup خطا میگیرد
استاد این مینویسم اما ازام غلط میگیره
Private Sub otan_name_BeforeUpdate(Cancel As Integer)
Dim Duplicate As Variant
Duplicate = dlookup(“otan_name”, “tbl_ostan”, “[otan_name]='” & [ Me.otan_name] & “‘”)
If IsNull(Duplicate) Then
Else
MsgBox “Çíä ÇÓã ʘÑÇÑí ÇÓÊ ”
Cancel = True
End If
End Sub
سلام
ساختار کدهاتون ظاهرامشکلی نداره اما باید توی تایپ اونها توی محیط کد نویسی خیلی دقت کنید چون یک اسپیس اضافه یا کوتیشن یا هر کاراکتر دیگه ای که حتی به چشم هم نمیاد میتونه باعث خطا بشه
اگر می تونید متن خطا رو اینجا بنویسید تا با هم بیشتر بررسی کنیم