View Full Version : آموزش: جلوگیری از ورود داده تکراری در اکسس + نمایش پیغام خطا
hashemi.hanieh
جمعه 18 مرداد 1392, 14:30 عصر
فرض کنید یک تیبل با نام StudentTbl دارید
این تیبل شامل یک فیلد با نام Name است
از این تیبل یک فرم با نام StudentFrm ایجاد می کنیم
حال می خواهیم چنانچه کاربر در فیلد Name از فرم StudentFrm داده ای تکراری وارد کرد با پیغام زیر مواجه شویم
"نام این دانش آموز قبلا ثبت شده است"
برای این کار مراحل زیر را مطابق شکل انجام دهید:
1- ایجاد تیبل با نام StudentTbl و اعمال تغییرات در قسمت Indexed، مطابق شکل زیر
http://www.uploadax.com/images/04967302789389024791_thumb.png (http://www.uploadax.com/viewer.php?file=04967302789389024791.png)
2- ایجاد فرم از تیبل StudentTbl با نام StudentFrm
3- نوشتن کد زیر در قسمت onError فرم مطابق کد و شکل زیر
http://www.uploadax.com/images/80024558733341633226_thumb.png (http://www.uploadax.com/viewer.php?file=80024558733341633226.png)
If DataErr = 3022 Then
MsgBox "نام این دانش آموز قبلا ثبت شده است"
Response = acDataErrContinue
End If
4- بستن محیط برنامه نویسی
5- ذخیره کردن تغییرات در فرم
6- بهره برداری!
برای استفاده راحت تر فایل نهایی رو هم ضمیمه کردم
saeed1234n
جمعه 18 مرداد 1392, 22:51 عصر
با سلام
ضمن تشکر از سرکار به خاطر ارائه مطلب فوق
روش ارائه شما هنگام خروج از فرم کاربر را از ورود مقدار تکراری آگاه می کند
روش ساده تر و به نظر بنده کاراتر دیگری نیز وجود دارد که به محض ورود مقدار تکراری کاربر را مطلع می نماید و تا تصیحیح مقدار وارده مانع ار رفتن به فیلد یا رکورد بعدی می شود.
و اما طریقه بکارگیری این روش :
استفاده از تابع dlookup در رویداد after update فیلد مورد نظر میباشد که تا زمان تصحیح مقدار مانع از عملیات دیگری توسط کاربر میشود .:لبخندساده::لبخندساده::لبخن دساده:
behzad5952
جمعه 18 مرداد 1392, 23:34 عصر
دوست عزیز لطفا یه نمونه ساده بگذارید .
با تشکر
hashemi.hanieh
شنبه 19 مرداد 1392, 21:24 عصر
با سلام
ضمن تشکر از سرکار به خاطر ارائه مطلب فوق
روش ارائه شما هنگام خروج از فرم کاربر را از ورود مقدار تکراری آگاه می کند
روش ساده تر و به نظر بنده کاراتر دیگری نیز وجود دارد که به محض ورود مقدار تکراری کاربر را مطلع می نماید و تا تصیحیح مقدار وارده مانع ار رفتن به فیلد یا رکورد بعدی می شود.
و اما طریقه بکارگیری این روش :
استفاده از تابع dlookup در رویداد after update فیلد مورد نظر میباشد که تا زمان تصحیح مقدار مانع از عملیات دیگری توسط کاربر میشود .:لبخندساده::لبخندساده::لبخن دساده:
ممنونم از حسن توجه شما
من مجددا فایل خودم را امتحان کردم، این طور نیست به محض رفتن به رکورد بعدی (رکورد بعد از داده تکرای) این پیغام داده می شود یعنی تا زمانی که شما داده تکراری داشته باشید نمی توانید رکورد بعدی را ثبت کنید ( به تبع اگر آن داده تکراری آخرین داده شما باشد در هنگام خروج از فرم این پیغام داده میشه)
من یه تازه کارم و دنبال حل مسئله های جدیدم و سعی میکنم هرچی یاد میگیرم رو به اشتراک بذارم تا همه استفاده کنن... قطعا ایده شما هم برای من و سایرین خیلی مفید خواهد بود... اگر یه نمونه ایجاد کنید همگی به راحتی ازش استفاده میکنن
مجددا از حسن توجه شما سپاسگزاری میکنم
G.hemati
شنبه 19 مرداد 1392, 23:07 عصر
با سلام
از لینک زیر کمک بگیرین
http://barnamenevis.org/showthread.php?376554-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1-%D8%B3%D9%87-%D9%81%DB%8C%D9%84%D8%AF!
ARData
چهارشنبه 23 مرداد 1392, 12:56 عصر
قبل از آپديت فيلد مورد نظر :
Private Sub FieldX_BeforeUpdate(Cancel As Integer)
On Error Resume Next
Dim RRecord As Variant
'RRecord کد کليدي جدولي است که مقدار وارده قبلا در آن ثبت شده است
RRecord = Nz(DLookup("[XID]", "TBLX", "[FieldX]=" & "'" & Me.FieldX & "'"), 0)
If RRecord <> XID And RRecord <> 0 Then
Cancel = True
MsgBoxFa "رشته يا مقدار تعريف شده حاضر ، طي کد رديف شماره " & RRecord & " تکرار شده است . ", vbCritical, "نام رشته يا مقدار تکراري"
End If
End Sub
salambeshoma
چهارشنبه 23 مرداد 1392, 20:18 عصر
ممنون دوست خوبمون ARData (http://barnamenevis.org/member.php?135500-ARData) اگر امکان داره تو یه فایل خیلی ساده نمایش بدین ممنونم
New Account
چهارشنبه 23 مرداد 1392, 23:50 عصر
سلام hashemi.hanieh
فرمودید تازه کارید ولیکن روشتون الگوی دیگران میتونه قرار بگیره
راه حل ساده و منطقی رو در پیش گرفتید که متکی بر امکانات درون ساختی خود اکسس هستش ولیکن با یک تغییر کوچیک توی اون ، ایرادهای سطحی که به روش درست شما گرفتند رو حل کنید ، توسل به یکی از کندترین توابع داخلی اکسس ( DlookUp ) نه الزامی برای شما داره و نه منطق مشخصی در پشتش قرار داره و تنها پیچیدگی غیر موجهی رو به دنبال میاره
Private Sub SampleField_Exit(Cancel As Integer)
On Error GoTo Err_SampleField_Exit
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Err_SampleField_Exit:
If Err.Number = 3022 Then MsgBox "Duplicate Entery !": Cancel = True
End Sub
کلیت دستور فوق همون دستور خود شماست ، منتها با کمی تغییرات در نحوه به کارگیری
.........................
میگن توی یک کارخانه ژاپنی تولید کننده صابون ، شکایت مشتریهایی در خصوص خالی بودن برخی جعبه های صابون وصول شد
مساله در تیم مهندسی مورد بررسی قرار گرفت و هر یک نظری دادند
یکی گفت از یک ترازوی ریلی استفاده کنیم تا در هنگام عبور جعبه از روی اون ، در صورت خالی بودن تشخیص داده بشه و یک جک بادی اون رو بیرون بندازه
دیگری گفت از پرتو اشعه X استفاده کنیم تا در صورت عدم مشاهده صابون توسط دوربین ، صابون از داخل یک ریل انحرافی به بیرون هدایت بشه
در این بین یک کارگر یک ایده ساده داد :
یک پنکه کوچیک در کنار خط قرار داد ، جعبه های خالی به دلیل سبکی وزنشون در هنگام عبور از مقابل پنکه به داخل سبدی می افتادند که در کنار ریل بود و ....
موفق باشید
saeed1234n
پنج شنبه 24 مرداد 1392, 16:10 عصر
با سلام
دوستان عزیز
من راه حل شما را تست کردم روشهای فوق (پست 1 و پست 8 )زمانی که فیلد ما primary key یا ایندکس آن از نوع No Duplicates باشد موثر است
و در مواقعی که نخواهیم ( به هر دلیلی ) در فیلدمان از این دو پارامتر استفاده کنیم جوابگو نخواهند بود .
New Account
پنج شنبه 24 مرداد 1392, 17:34 عصر
سلام saeed1234n
دوست خوبم یک مقدار دارید خلط مطلب میکنید
دوستی اومده با نام hashemi.hanieh مطلبی درج کرده با عنوان :
آموزش: جلوگیری از ورود داده تکراری در اکسس + نمایش پیغام خطا
به صراحت داره صحبت از یک روش و آموزش اون روش خاص میکنه و در هیچ جایی هم عنوان نکرده که روشش تنها روش موجوده و هیچ روش دیگه ای هم وجود نداره
در ادامه شما ایرادی غیر مستدل به روش ایشون وارد کردید و عنوان فرمودید :
روش ارائه شما هنگام خروج از فرم کاربر را از ورود مقدار تکراری آگاه می کند
ایرادی که قطعا باید تایید کنید که به درستی درج نشده و ناشی از عدم دقت شما در بررسی نمونه بوده و در ادامه به یک روش پیشنهادی اشاره ای مختصر داشتید ( DlookUp )
بنده نیز به جهت تایید نظر hashemi.hanieh و در راستای رفع یک نقص جزئی روش ایشون و در واقع تکمیل اون ، پاسخی رو درج کردم
پاسخ بنده در راستا و منطبق با هدف اولیه آموزش هستش
علی الظاهر شما و یا دیگر دوستان روشهای دیگه ای هم مدنظرتون هست که بررسی و یا بسط اونها قاعدتا میبایست در داخل یک تاپیک مجزا و با از سرگیری بحث توسط خود شما و یا دیگر افراد صاحب ایده به عمل بیاد ، در واقع شما مثال رو با مفروضات ذهنی خودتون در حال حل کردن هستید فرضا اینکه فیلدها رو دارید از حالت ایندکس شده در میارید و ...
آموزش بر مبنای ایندکس گذاری هستش و در جایی نمیبینیم که نگارنده به غیر از این اشاره ای داشته باشه ، پس از این لحاظ هم نقصی به آموزش ایشون وارد نیست
مثال شرکت تولید صابون رو بی دلیل عنوان نکردم ، روش دوستمون hashemi.hanieh و بنده که اون رو بسط دادم یک روش کارگری هستش و مرتبط با روشهای مهندسی شده نیست ، بر همین اساس ممکنه مقبول طیف مهندسین قرار نگیره چرا که روشی منطبق بر کلیه امکانات موجود و درون ساختی هستش که سعی در ساده سازی تا حد ممکن داره
خوب شاید مهندسی دوست داشته باشه مسائل رو خیلی پیچیده فکر کنه و به همون نسبت مسائل رو پیچیده تر هم حل کنه ، این برمیگرده به میزان تجربه افراد و تخصص اونها که قطعا همونطوری که در همینجا هم مشخص هستش ، طیفی مساله رو سطحی دیدند و طیفی هم مساله رو عمقی
به هر تقدیر شما اشاره به استفاده از تابع DlookUp فرمودید و بنده هم درج کردم این تابع ، جزو کندترین توابع اکسس هستش و در ادامه هم عنوان کردم که الزامی به پیچیده فرض نمودن مفروضات نیست مگر اینکه بخوایم خودمون رو بی دلیل در یک تنگنا قرار بدیم ( به طور مثال بر خلاف نظر آموزش دهنده اومدید و فیلد رو از حالت Index شده درآورید )
روشهای جایگزین و سریعتر از DlookUp هم وجود داره ولی سنخیتی با موضوع این تاپیک که در واقع مبنای آموزشی مشخصی در رابطه با یک روش هست ؛ نداره ( روشی که در پست یک آموزش داده شده ) ، فرضا میتونید از روشهای غیر الزام آور DAO و یا ADO استفاده کنید که به مراتب از DlookUp سریعتر هستند
در نقد روش مطرح شده فرمودید :
در مواقعی که نخواهیم ( به هر دلیلی ) در فیلدمان از این دو پارامتر استفاده کنیم جوابگو نخواهند بود
اینجا یک تالار آموزشی هستش ، ممنون میشم مثالی بزنید که در پشت اون یک منطق صحیح وجود داشته باشه مبنی بر اینکه فیلدی تکراری نباید باشد ولیکن اون رو ایندکس گذاری هم نمیکنیم و یا نمیتوانیم بکنیم ( اگر در خصوص ایندکس و مفهوم اون نیاز به کمک دارید قبلا مقاله ای در این خصوص نوشتم ، اون رو مطالعه بفرمایید و یا به دیگر مقالات موجود مراجعه بفرمایید )
اگر مبنا بر حسب سلیقه هستش ، تصور نمیکنم نه کسی با تفکرات مهندسی شده و نه کسی با تفکرات کارگری ، خودش رو درگیر مفروضات غلط و یا روشهای نادرست در اجرا و پیاده سازی یک دیتابیس کنه
بنده فراموش نمیکنم که در داخل تالار اکسس هستم و در خصوص یک محصول RDBMS صحبت میکنیم ، RDBMS مبانی مشخصی در طراحی رو مفروض میکنه
ایرادهایی متناسب و به جا به موضوعات بگیریم
در مجموع اگر مطلبی آموزشی دارید که بشه در راستای اون نقصی به روش اول و یا دفاعی مشخص از روش فرضی خودتون داشته باشید ممنون میشم یاد بگیرم
فقط خواهشا اگر قصد داشتید جوابیه ای ارسال کنید ( در جواب این پست ) جهت جلوگیری از طولانی شدن بحث ، بدیهیات رو توضیح نفرمایید و یک مقدار سطح بحث رو بیارید بالا ، تا در یک پست بتونید بحث آموزش رو به سر و سامانی برسونید
ماحصل کلام و خلاصه صحبت بنده : روش دوستمون کاملا درست و قابل دفاع هستش ( بر خلاف ایراداتی که گرفته شده ) و صد البته تنها راه حل یک مساله هم نیست همونطوری که خودشون هم در این خصوص بحثی نداشتند
همگی موفق باشید
saeed1234n
پنج شنبه 24 مرداد 1392, 18:14 عصر
با سلام
دوست عزیز پیرو فرامایشات جنابعالی در موارد زیر :
اینجا یک تالار آموزشی هستش
روشهای جایگزین و سریعتر از DlookUp هم وجود داره ولی سنخیتی با موضوع این تاپیک که در واقع مبنای آموزشی مشخصی در رابطه با یک روش هست ؛ نداره ( روشی که در پست یک آموزش داده شده ) ، فرضا میتونید از روشهای غیر الزام آور DAO و یا ADO استفاده کنید که به مراتب از DlookUp سریعتر هستند
بنده و دیگر دوستان خیلی خوشحال می شویم و سپاسگذار خواهیم بود تاپیکی در این زمینه (ADO) ایجاد نمایید .:تشویق:
New Account
پنج شنبه 24 مرداد 1392, 20:09 عصر
سلام saeed1234n
دوست خوبم ، وقتی در پست قبلی درج کردم :
ممنون میشم مثالی بزنید که در پشت اون یک منطق صحیح وجود داشته باشه مبنی بر اینکه فیلدی تکراری نباید باشد ولیکن اون رو ایندکس گذاری هم نمیکنیم و یا نمیتوانیم بکنیم
یعنی منطقش ناصحیح هستش
تصور نمیکنم نه کسی با تفکرات مهندسی شده و نه کسی با تفکرات کارگری ، خودش رو درگیر مفروضات غلط و یا روشهای نادرست در اجرا و پیاده سازی یک دیتابیس کنه
یعنی مفروضات غلط و دستکاری شده هستش و پیاده سازی هم به درستی انجام نشده
دوست من تمامی اون قسمتهایی که به صورت Bold شده در اومدن به صورت آموزش هستند و نکته ای در خودشون دارند که به صورت متمایز از بقیه متن دراومدند
پس با توجه به مطالب پست قبلیم وقتی فرمودید :
بنده و دیگر دوستان خیلی خوشحال می شویم و سپاسگذار خواهیم بود تاپیکی در این زمینه (ADO) ایجاد نمایید
این کار رو برای شما انجام نمیدم ! چرا ؟!
چون ، بنده فقط کلیت رو گفتم و اینکه اگر به موارد موجود در پست قبلیم اعتقادی ندارید لااقل به جای Dlookup به دنبال DAO و یا ADO باشید ، در واقع انتخاب بین بد و بدتر بود وگرنه درستش همین مطلبی هست که دوستمون آموزش دادند
البته میتونید با دوستانتون در تالار وارد مباحثه بشید ، مطمئناً کمکتون میکنند
امیدوارم موفق باشید
پی نوشت :
saeed1234n آقا
ضمنا دوست من چرا سانسوز میکنی ، بنده نوشتم :
اینجا یک تالار آموزشی هستش ، ممنون میشم مثالی بزنید که در پشت اون یک منطق صحیح وجود داشته باشه مبنی بر اینکه فیلدی تکراری نباید باشد ولیکن اون رو ایندکس گذاری هم نمیکنیم و یا نمیتوانیم بکنیم
جواب سئوال بنده رو که ندادید ! انگار نه انگار :متفکر:
تهش رو زدید و جوابم رو با یک سئوال دادید :چشمک:
خدا بگم چه کار نکنه :تشویق:
RESMAILY
یک شنبه 27 مرداد 1392, 10:32 صبح
به نام خدا
با سلام. یک نکته ای وجود دارد اینکه داده تکراری گاهی و بلکه اغلب منحصر به یک فیلد نیست. گاهی یک رکورد کامل نباید تکراری باشد و گاهی بیش از دو سه فیلد در یک رکورد نباید تکراری باشند. من به تجربه دیده ام که در اکسس جداولی که دارای ایندکس متعدد هستند (مخصوصا ایندکس های غیر تکراری) گاه غفلتا جدول به طرز فجیعی به هم می ریزد و بعضی وقت ها قابل بازیابی هم نیست. یعنی اول یک پیغامی می دهد مبنی بر منطبق نبودن داده و سپس جدول را از حیز انتفاع می اندازد. لذا خود من برای برخی جدول ها که داده تکراری اش برایم مهم باشد و برای اینکه گیر روش های دل پیچه آور حذف رکورد های تکراری نیفتم. یک تابع نوشته ام و دور از چشم اقانبیل، با یک حلقه رکورد را بررسی می کنم خلاص. البته ااین روش از dlookup هم کند تر است. ولی گناهش گردن امثال آقای امیری و پیروزمهر و دکتر می باشد که یک روش درست و درمانی یا در زمینه حذف رکورد تکراری و یا در زمینه جلوگیری از درج رکورد تکراری به فقرا (یعنی بنده و غیره) نمی آموزانند!
hashemi.hanieh
دوشنبه 04 شهریور 1392, 16:38 عصر
اصلا فک نمی کردم این مبحث انقدر به چالش کشیده بشه... ممنون از NEW ACCOUNT
همون طور که روست خوبمون گفتن... من هیچ ادعایی ندارم... خیلی کوچیکتر از این حرفام... فقط خواستم دانسته هام رو با بقیه به اشتراک بذارم
البته من به یه نکته ای پی بردم که حرف دوست خوبمون saeed1234n در مورد فرم های شامل ساب فرم ها صحیحه... یعنی در هنگام بسته شدن فرم خطا صادر میشه... البته یه پیغامی نمایش داده میشه... که اون پیغام با پیغام خطا متفاوته... میخوام روش DLOOKUP رو امتحان کنم ببینم چی میشه.... مجددا فایل رو در اختیارتون قرار میدم... اگر دوستان نظری در مورد این خطا در فرم های شامل ساب فرم ها دارن بگن....
gitec1
یک شنبه 02 دی 1397, 21:01 عصر
سلام
من یک فرم ثبت نام دارم
می خواهم تو این فرم دانش آموزی با یک نام و یک نام خانوادگی تکراری نتونه ثبت نام کنه.
تمام موارد که دیدم مربوط به تکراری بودن یک فیلد بود.
ولی من می خواهم یک دانش آموز با یک نام نام خانوادگی نتونه ثبت نام کنه
ولی نام تکراری و نام خانوادگی تکراری مشکل نداشته باشه
mosaArabi
دوشنبه 03 دی 1397, 22:28 عصر
سلام . قاعدتا شما باید یه فرم مشخصات درست کنید و مثلا کد ملی را پرمری کی کنید (ساده ترین حالت) . بعد در فرم دیگرتان از نامها و فامیلی های به تکرار میتونید استفاده کنید
mazoolagh
چهارشنبه 05 دی 1397, 13:08 عصر
سلام
من یک فرم ثبت نام دارم
می خواهم تو این فرم دانش آموزی با یک نام و یک نام خانوادگی تکراری نتونه ثبت نام کنه.
تمام موارد که دیدم مربوط به تکراری بودن یک فیلد بود.
ولی من می خواهم یک دانش آموز با یک نام نام خانوادگی نتونه ثبت نام کنه
ولی نام تکراری و نام خانوادگی تکراری مشکل نداشته باشه
1- راه ساده این هست که کلید اصلی رو روی هر دو فیلد نام و نام خانوادگی تعریف کنین. کافی هست در محیط طراحی جدول هر دو فیلد رو select کنین و روی دکمه کلید بزنین. همین.
یا از کد زیر استفاده کنین:
alter table table1
add primary key (fname,lname)
یا اینکه فقط یک constraint از نوع unique براشون بسازین بدون اینکه تبدیل به کلید اصلی بشن:
alter table table1
add constraint unique_fullname unique (fname,lname)
2- راه بهتر این هست که یک فیلد عددی (یا از نوع autonumber یا مثل کد ملی که آقای عربی اشاره کردن) رو بعنوان کلید اصلی داشته باشین بجاش روی فیلدهای نام و نام خانوادگی یک constraint از نوع unique تعریف کنین.
create table table1 (
id counter,
fname text(50) not null,
lname text(50) not null,
constraint unique_fullname unique (fname,lname)
)
اینکارها رو میتونین در محیط طراحی در بخش index هم انجام بدین.
mazoolagh
چهارشنبه 05 دی 1397, 13:12 عصر
ضمنا پست شماره 8 آقای new account رو هم با دقت بخونین.
بعد در رخداد onerror فرم میتونین از کدی شبیه زیر استفاده کنین:
if dataerr=3022 then
response=acdataerrcontinue
msgbox("duplicate record")
end if
mazoolagh
چهارشنبه 05 دی 1397, 13:18 عصر
البته اینها بخش ساده کار بود و بدبختی اصلی تازه شروع میشه!
باید بتونین یکسان بودن "علیرضا" و "علی رضا" و "علیرضا" رو تشخیص بدین
یا
"عبدالهی" و "عبداللهی"
"آذر" و "اذر"
"مؤمنی" و "مومنی"
"رضایی" و "رضائی"
"اسدالله" و "اسداله"
و از این دست
gitec1
چهارشنبه 12 دی 1397, 22:26 عصر
با تشکر از شما
آیا راه کاری برای این امر هست
mazoolagh
یک شنبه 16 دی 1397, 11:08 صبح
با تشکر از شما
آیا راه کاری برای این امر هست
1- باید فیلدهای جدیدی به جدول اضافه کنین که مقادیر تبدیل شده رو در اون نگهداری کنین. فرضا برای نام خانوادگی اگر فیلد اصلی lname هست، این فیلد رو lnamex بگذارین.
2- یک تابع پابلیک مینویسین که کار تبدیل رو انجام میده
3- هنگام تراکنش insert/update با استفاده از این تابع اول مقدار تبدیل شده فیلد fname+lname رو با مقادیر قبلی fnamex+lnamex مقایسه میکنین، تکراری بود عملیات رو کنسل میکنین در غیر اینصورت میذارین کامل شه
gitec1
پنج شنبه 27 دی 1397, 14:17 عصر
1- باید فیلدهای جدیدی به جدول اضافه کنین که مقادیر تبدیل شده رو در اون نگهداری کنین. فرضا برای نام خانوادگی اگر فیلد اصلی lname هست، این فیلد رو lnamex بگذارین.
2- یک تابع پابلیک مینویسین که کار تبدیل رو انجام میده
3- هنگام تراکنش insert/update با استفاده از این تابع اول مقدار تبدیل شده فیلد fname+lname رو با مقادیر قبلی fnamex+lnamex مقایسه میکنین، تکراری بود عملیات رو کنسل میکنین در غیر اینصورت میذارین کامل شه
امکانش هست یک نمونه اگر موجود دارید آپلود کنید
با تشکر
kavehm13
شنبه 16 آذر 1398, 21:46 عصر
تشکر دوست خوب
Milad_ATM
یک شنبه 17 آذر 1398, 06:58 صبح
با سلام
من این کد رو برای ثبت اطلاعات فرمم توی Table نوشتم
Private Sub Add_Click()Dim RD As Recordset
Set RD = CurrentDb.OpenRecordset("Daily_Register")
RD.AddNew
RD!FINNo = Me.FINNo
RD!Discipline = Me.Discipline
RD!SubCon = Me.SubCon
RD!Activity = Me.Activity
RD!EquipmentName = Me.EquipmentName
RD!MeasurementUnit = Me.MeasurementUnit
RD!AcceptVolume = Me.Acceptvloume
RD!Result = Me.Result
RD!InspectionDate = Me.InspectionDate
RD!Inspector = Me.Inspector
RD!TPAInspector = Me.TPAInspector
RD!POGCInspector = Me.POGCInspector
RD!Remark = Me.Remark
RD!Unit = Me.Unit
RD!RejectVolume = Me.RejectVolume
RD!SubConInspector = Me.SubConInspector
RD.Update
Me.Daily_Register_subform.Requery
FINNo.Requery
End Sub
در On error همین فرمی که کد بالا قرار دادم کد خانم هاشمی رو قرار دادم.
منتها همچنان وقتی مقدار تکراری وارد میکنم با Error 3022 مواجه میشم.
مشکل کجاست؟
mazoolagh
یک شنبه 17 آذر 1398, 12:01 عصر
این کد که نوشتین برای فرم unbound هست!
یک پرسش مشابه در تاپیک زیر هست (البته عنوان تاپیک نامناسب هست) و نمونه هم برای validation گذاشته شده
همونجا روش کار با form error هم توضیح داده شده
https://barnamenevis.org/showthread.php?558147-راهنمایی-در-نوشتن-مسیج-باکس
Milad_ATM
دوشنبه 18 آذر 1398, 10:52 صبح
من جواب سوالمو تو این تاپیک پیدا نکردم
mazoolagh
دوشنبه 18 آذر 1398, 12:14 عصر
دو مورد هست که گفته شد ولی دقت نکردین:
1- کدی که گذاشتین برای unbound form هست ، اگر در Bound form استفاده میکنین کار نادرستی هست.
2- کدها و توضیحات نمونه ای رو که در تاپیک معرفی شده باید با دقت بخونین تا روش trap کردن error 3022 دستتون بیاد و در برنامه خودتون استفاده کنین.
mazoolagh
چهارشنبه 18 مهر 1403, 18:29 عصر
آموزش: تشخیص و جلوگیری از ورود رکورد تکراری (با استفاده از data-macro در جدول) (barnamenevis.org) (https://barnamenevis.org/showthread.php?589743-%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%D9%88-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%D9%88%D8%B1%D9%88%D8%AF-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C-(%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-data-macro-%D8%AF%D8%B1-%D8%AC%D8%AF%D9%88%D9%84))
آموزش: تشخیص و جلوگیری از ورود رکورد تکراری (با استفاده از تعریف unique constraint در جدول) (barnamenevis.org) (https://barnamenevis.org/showthread.php?589739-%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%D9%88-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%D9%88%D8%B1%D9%88%D8%AF-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C-(%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D8%B9%D8%B1%DB%8C%D9%81-unique-constraint-%D8%AF%D8%B1-%D8%AC%D8%AF%D9%88%D9%84))
آموزش: تشخیص و جلوگیری از ورود رکورد تکراری در فرم bound (با استفاده از رخداد before update) (barnamenevis.org) (https://barnamenevis.org/showthread.php?589738-%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%D9%88-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%D9%88%D8%B1%D9%88%D8%AF-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C-%D8%AF%D8%B1-%D9%81%D8%B1%D9%85-bound-(%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%B1%D8%AE%D8%AF%D8%A7%D8%AF-before-update))
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.