تشخیص و جلوگیری از ورود رکورد تکراری (با استفاده از data-macro در جدول)
1 ضمیمه
نقل قول: تشخیص و جلوگیری از ورود رکورد تکراری (با استفاده از data-macro در جدول)
یک data-macro برای رخداد before change جدول میسازیم:
If [IsInsert]
LookUpRecord
Personnel Alias="PX"
Where [PX].[FirstName]=[Personnel].[FirstName] And
[PX].[LastName]=[Personnel].[LastName] And
[PX].[DepartmentID]=[Personnel].[DepartmentID]
RaiseError 5001,"Duplicate Record"
END LookUpRecord
Else
LookUpRecord
Personnel Alias="PX"
Where [PX].[ID]<>[Personnel].[ID] And
[PX].[FirstName]=[Personnel].[FirstName] And
[PX].[LastName]=[Personnel].[LastName] And
[PX].[DepartmentID]=[Personnel].[DepartmentID]
RaiseError 5001,"Duplicate Record"
END LookUpRecord
END If
ضمیمه 156178
2 ضمیمه
نقل قول: تشخیص و جلوگیری از ورود رکورد تکراری (با استفاده از data-macro در جدول)
در جدول:
ضمیمه 156179
از طریق UPDATE/INSERT کوئری:
UPDATE Personnel
SET FirstName = "gina", LastName = "grimes", DepartmentID = 2
WHERE ID=5
INSERT INTO Personnel(FirstName, LastName, DepartmentID, JobID, BirthDate)
VALUES ("gina", "grimes", 2, 5, #2024-10-09#)
ضمیمه 156180
1 ضمیمه
نقل قول: تشخیص و جلوگیری از ورود رکورد تکراری (با استفاده از data-macro در جدول)
1- در اینجا برای سادگی فقط کدهای مورد نیاز همین بحث آمده،
در یک برنامه عملی باید form validation رو دقیق پیاده کنین - یک آموزش همراه با کد نمونه رو در تاپیک زیر میتونین ببینین (پست شماره 14 و به بعد):
مبتدی: راهنمایی در نوشتن مسیج باکس (barnamenevis.org)
2- این روش جلوی ورود تکراری در هر موقعیتی رو میگیره (فرم، اجرای کوئری یا مستقیم از طریق جدول).
هر چند که به طور منطقی در یک برنامه درست کاربر مطلقا هیچ دسترسی مستقیم به جدول ها نداره.
3- اگر برنامه آپگرید به sql رو دارین از data-macro استفاده نکنین!
این روش اگر صرفا برای همین هدف باشه مزیت خاصی نسبت به استفاده از constraint نداره!
4- برای آموزش data-macro تاپیک زیر رو ببینین،
و پرسشها رو هم همونجا مطرح کنین:
آموزش: کلک های Acess (barnamenevis.org)
برنامه پیوست: