ممانعت از ورود داده تکراری در اکسس در دو فیلد بطور همزمان

داده تکراری در اکسس و ممانعت از ورود آن در دو فیلد مختلف بطور همزمان

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

برای اینکه مطمئن شویم که در ساختار بانک اطلاعاتی ما هیچ داده تکراری وارد نخواهد شد روش های مختلفی وجود دارد . 

از جمله این موارد می توان به موارد زیر اشاره نمود : 

  1. استفاده به جا و مناسب از کلیدهای اولیه در ساختار یک جدول 
  2. استفاده از قواعد و قوانین اعتبار سنجی (validation Rule ) در ایجاد جداول 
  3. استفاده از کد نویسی VBA برای کنترل دیتاهای ورودی . 

استفاده از هر کدام از این موارد به جای خود می تواند بسیار کارآمد باشد .

اما امروز می خواهیم با استفاده کدهای VBA در محیط اکسس قابلیتی را ایجاد کنیم که از ورود دیتای تکراری در یک جدول اکسس ممانعت بعمل آوریم .

اگر از خوانندگان مطالب سایت Softpluse  باشید حتما می دانید که قبلا در مطلب جداگانه ای به این موضوع پرداختیم .

برای دسترسی به مطلب مورد نظر می توانید از طریق لینک زیر اقدام نمایید :

مطلب مرتبط : جلوگیری از ورود داده تکراری در فرم .

 

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

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

ممانعت از ورود داده تکراری در اکسس

امروز می خواهیم ببینیم که چگونه می توانیم مانع  از ورود داده تکراری در دوفیلد بطور همزمان شویم .

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

ابتدا به جدول زیر نگاهی بیاندازیم .

داده تکراری در اکسسما در اینجا جدولی داریم شامل لیت چهار کتاب که هر کدام مربوط به یک نویسنده است .

حال فرض کنید که این لیست ما به جای ۴ ردیف دارای بیش از ۴۰۰ ردیف باشد .

تصور نمایید که کتابی با عنوان کویر را مجددا بخواهیم در این لیست وارد نماییم .

در این صورت احتمالات زیر را باید در نظر بگیریم :

  1. از آنجا که در جدول فوق شماره کتاب بصورت کلید اولیه عریف شده است به راحتی می توان یک شماره غیر تکراری ایجاد نموده و کتاب مزبور را در جدول ثبت نماییم غافل از اینکه هر دو کتاب وارد شده یکی بوده و این کتاب می تواند حالت تکراری داشته باشد .
  2. اگر بخواهیم مانع از وارد نمودن اسامی کتاب ها بطور تکراری شویم می توانیم خاصیت Index  فیلد مربوط به نام کتاب را بر روی (Yes (No Duplicates تنظیم نماییم در این حالت هیچ کتابی با یک عنوان مشابه در این لیست وارد نخواهد شد .
  3. تصور نمایید که با استفاده از خاصیت (Yes (No Duplicates مانع از این شدیم که لیست کتابهای ما بطور تکراری ثبت شوند اما اگر واقعا کتاب دیگری تحت عنوان “کویر” وجود داشته باشد اما نویسنده آن متفاوت باشد از آنجا که هم نام با عنوان کتابی است که قبلا ثبت شده بنابراین اجازه ثبت مجدد را به ما نخواهد داد . 

برای اینکه این مشکل را حل نماییم راه حل های متعددی را می توان در نظر گرفت .

اما امروز می خواهم روشی را به شما آموزش دهم که با استفاده از آن بتوانید : 

  1. مانع از وارد شدن نام و مشخصات دو کتاب با یک نویسنده واحد شوید . 
  2. پیغام مناسبی را ایجاد کنید که به زبان فارسی تکراری بودن کتاب مربوطه را به کاربر گوشزد نماید . 

برای این کار مراحل زیر را دنبال نمایید : 

  1. جهت ورود اطلاعات خود به جدول مربوطه یک فرم ایجاد نمایید . 

تصویر زیر فرم مورد نظر را در محیط  اجرا نمایش می دهد . 

 

داده تکراری در اکسس

نکاتی که در خصوص این فرم باید مد نظر قرار دهید : 

  1. نام تکس باکس مربوط به کد کتاب را bookcode  در نظر بگیرید . 
  2. نام تکس باکس مربوط به نام کتاب را bookname  در نظر بگیرید . 
  3. نام تکس باکس مربط به نام نویسنده را author  در نظر بگیرید . 
  4. نام جدول مربوطه را نیز tablebooks  در نظر بگیرید . 

اکنون با در نظر گرفتن شرایط و موارد فوق می تواینم به سراغ محیط کد نویسی رفته و کدهای مربوطه را وارد نماییم .

اما کدهای مزبور چه هستند و در کجا باید از انها استفاده نمود .

درج کدهای VBA و ایجاد روال مرتبط

ما می خواهیم فرآیندی را ایجاد نماییم که به واسطه آن کاربر بتواند نام کتاب و نام نویسنده مربوطه را وارد کند .

بعد از وارد کردن نویسنده به محض اینکه تکس باکس مربوطه را ترک کند فرآیند اجرای کدهای ما آغاز می شود

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

برای ایتفاده از این کدها باید ابتدا در نمای طراحی فرم خود قرار بگیرید .

تکس باکس موسوم به author  را انتخاب نمایید .

از کادر property sheet  گزینه After Update  را انتخاب نمایید .

در روال ایجاد شده کدهای زیر را  در روال ایجاد شده قرار دهید .

داده تکراری در اکسس

بررسی کدها برای ممانعت از ورود داده تکراری در اکسس

 بیایید با هم نگاهی دقیقتر به این کدها بیاندازیم تا با عملکرد آنها بطور مفهومی تر آشنا شویم . 

داده تکراری در اکسس

در قدم اول ما می خواهیم نام کتاب به همراه نویسنده مربوطه را که توسط کاربر و در فرم مربوطه وارد می شود را در حافظه رایانه خود ذخیره کنیم .

برای این کار ما نیاز به تعریف دو متغیـــــــر داریم . 

این کار را در اولین خط از این کد انجام می دهیم . متغیر Newbook  را برای ذخیره نام کتاب و متغیر Newauthor  را برای ذخیره کردن  نام نویسنده و به قرار زیر تعریف می نماییم . 

تعریف متغیر در اکسس

 

بعد از اینکه مشخصات کتاب و نویسنده را دریافت نمودیم باید کنترل کنیم که آیا قبلا کتابی با این مشخصات و نویسنده یکسان در جدول ما درج شده است یا خیر . از آنجا که هم نام کتاب و هم نام نویسنده برای ما مطرح است که تکراری نباشد بنابراین هردوی این مشخصات را در یم متغیر ذخیره می نماییم .

این کار را با استفاده از کد زیر انجام می دهیم .

متن تکراری در اکسس

 در خط بعدی از این کد با استفاده از تابع DLookup  بررسی می کنیم که آیا کنابی با این مشخصات در جدول وجود دارد که اگر وجود داشته باشد پیغام مناسب را برای کاربر نمایش می دهیم . 

در نهایت کافی است ماژول خود را ذخیره نمایید . 

اکنون که به محیط فرم خود برگردید ملاحظه خواهید نمود که به هیچ عنوان قادر به وارد نمودن مشخصات یک کتاب بصورت تکراری نخواهید بود . 

نمونه فایل این آموزش را نیز می توانید از این قسمت دانلود نمایید . 

آموزش اکسس2016 بازدید : 259 views ۷ اردیبهشت, ۱۳۹۸ ۰