نمایش نتایج 1 تا 16 از 16

نام تاپیک: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

  1. #1
    کاربر تازه وارد آواتار Hermidas
    تاریخ عضویت
    مهر 1387
    محل زندگی
    استان سمنان شهرستان گرمسار
    سن
    47
    پست
    31

    Question ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

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

  2. #2
    کاربر دائمی آواتار Mehr@ban
    تاریخ عضویت
    آبان 1389
    محل زندگی
    بچه محله امام رضا
    پست
    562

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    سلام

    استفاده از حلقه هم روشی هست
    ولی استفاده از دستور dlookup هم میتونه در موضوع شما بکارگیری بشه

  3. #3
    کاربر تازه وارد آواتار Hermidas
    تاریخ عضویت
    مهر 1387
    محل زندگی
    استان سمنان شهرستان گرمسار
    سن
    47
    پست
    31

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    ببخشید میشه بگید چطوری از dlookup استفاده کنم اگر ممکنه برام می نویسید

  4. #4
    کاربر دائمی آواتار Mehr@ban
    تاریخ عضویت
    آبان 1389
    محل زندگی
    بچه محله امام رضا
    پست
    562

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    If Not Me.mali_id_man = "0" Then
    Dim var
    var = DLookup("mali_id_man", "tbl_mali", "mali_id_man = '" & [mali_id_man] & "'")
    If Not IsNull(var) Or var <> "" Then
    MsgBox "Tekrari"
    Cancel = True
    End If
    Exit Sub
    End If


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

  5. #5
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    شما در طراحی جدول تقریبا درست عمل کردین، یعنی Primary key رو هر سه فیلد مورد نظر تعریف کردین.
    اینکه میگم تقریبا بخاطر این هست که فراموش کردین جلوی وارد شدن مقدار null برای این فیلدها رو بگیرین - یعنی باید allow zero length هر سه فیلد رو no بگذارین.

    خب شما که این نکته رو میدونستین پس باید این رو هم به یاد میداشتین که اکسس در کلیه عملیات insert و update خودش یکتا بودن PK رو بررسی میکنه و در صورت تکراری بودن (و موارد دیگه) خطا صادر میکنه. اینکه عملیات insert/update از طریق فرم bound یا unbound یا query یا هر روش دیگه انجام بشه تفاوتی نمیکنه.

    کافی هست یک روتین بررسی خطا به کدتون اضافه کنین - همین!

  6. #6
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    Private Sub Command15_Click()
    On Error GoTo ERROR_HANDLER
    Dim V As Variant
    ...
    ...
    str_location_flt.Value = Empty
    str_code_process_source_flt.SetFocus
    Exit Sub
    ERROR_HANDLER:
    Select Case Err.Number
    Case 3022
    Err.Clear
    source_docs_query_subform.Form.Undo
    str_code_process_source_flt.SetFocus
    V = MsgBox("DUPLICATE RECORD")
    Case Else
    source_docs_query_subform.Form.Undo
    str_code_process_source_flt.SetFocus
    V = MsgBox(Err.Description, , Err.Number)
    Err.Clear
    End Select
    End Sub

  7. #7
    کاربر تازه وارد آواتار Hermidas
    تاریخ عضویت
    مهر 1387
    محل زندگی
    استان سمنان شهرستان گرمسار
    سن
    47
    پست
    31

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    جناب آقای Mehr@ban

    خیلی واضح و خوبه ولی cancel = true نفهمیدم برای چی بکار بردین شاید توی برنامه ی خودتون کاربرد داره ولی ممنونم از شما دوست عزیز. بکارش می گیرم اگه به مشکل برخوردم دوباره مزاحمتون می شم
    آخرین ویرایش به وسیله Hermidas : شنبه 12 خرداد 1397 در 00:08 صبح دلیل: اضافه کردن اسم شخصی که پاسخ داده بودند

  8. #8
    کاربر تازه وارد آواتار Hermidas
    تاریخ عضویت
    مهر 1387
    محل زندگی
    استان سمنان شهرستان گرمسار
    سن
    47
    پست
    31

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    شما در طراحی جدول تقریبا درست عمل کردین، یعنی Primary key رو هر سه فیلد مورد نظر تعریف کردین.
    اینکه میگم تقریبا بخاطر این هست که فراموش کردین جلوی وارد شدن مقدار null برای این فیلدها رو بگیرین - یعنی باید allow zero length هر سه فیلد رو no بگذارین.

    خب شما که این نکته رو میدونستین پس باید این رو هم به یاد میداشتین که اکسس در کلیه عملیات insert و update خودش یکتا بودن PK رو بررسی میکنه و در صورت تکراری بودن (و موارد دیگه) خطا صادر میکنه. اینکه عملیات insert/update از طریق فرم bound یا unbound یا query یا هر روش دیگه انجام بشه تفاوتی نمیکنه.

    کافی هست یک روتین بررسی خطا به کدتون اضافه کنین - همین!
    حقیقت امر اینکه من برنامه رو کامل نذاشتم و فقط بخشی رو که مشکل داشتم دوباره ساختم و گذاشتم خوب توی طراحی جدول من اگه خصوصیت allow zero length رو no نذاشتم بخاطر اینکه کاربر فقط میتونه از طریق فرم اطلاعات رو وارد کنه و اونجا اگر مقدار این فیلد هار رو null بذاره برنامه کار ذخیره کردن رو انجام نمیده با توجه به کدی که توی رویداد ذخیره نوشتم .
    خوب من به اون نکته که اشاره کردین اکسس پریمری کی (pk) رو برسی می کنه واقفم فقط موضوع اینه که وقتی با کد کار ذخیره فیلد ها رو می کنم می خوام از پیغام خطای pk جلوگیری کنم و به کاربر تکراری بودن رو اعلام کنم و exit sub رو اجرا کنم و خطای مورد نظر از دید کاربر دیده نشه

  9. #9
    کاربر تازه وارد آواتار Hermidas
    تاریخ عضویت
    مهر 1387
    محل زندگی
    استان سمنان شهرستان گرمسار
    سن
    47
    پست
    31

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    Private Sub Command15_Click()
    On Error GoTo ERROR_HANDLER
    Dim V As Variant
    ...
    ...
    str_location_flt.Value = Empty
    str_code_process_source_flt.SetFocus
    Exit Sub
    ERROR_HANDLER:
    Select Case Err.Number
    Case 3022
    Err.Clear
    source_docs_query_subform.Form.Undo
    str_code_process_source_flt.SetFocus
    V = MsgBox("DUPLICATE RECORD")
    Case Else
    source_docs_query_subform.Form.Undo
    str_code_process_source_flt.SetFocus
    V = MsgBox(Err.Description, , Err.Number)
    Err.Clear
    End Select
    End Sub
    کدی که برام گذاشتین خیلی تحلییلش برام سخته چون من زیاد حرفه ای نیستم و نمیدونم چکار میکنه اون چند تا نقطه منظورتون اینه که کدهای خودم باید اونجا باشن !!! ولی خیلی برام جالبه :
    روی هر اروری(on error) میره به خطی که نامش error_HANDLER اونجا از حلقه ی case استفاده کردین و ارور 3022 رو که مربوط به pk هست اگر باشه از subform اندو می کنه و متغییر رشته ای رو با مسیج خطا در تکراری بودن پر میکنه و در غیر اینصورت چرا در case else دوباره کار اندو کردن در سابفرم رو انجام میده و متغییر رشته ای v رو با چه مسیجی پر میکنه مابقیش رو نفهمیدم
    در ضمن من مشکلات دیگه ای هم با err.description توی برنامم دارم اگر برنامه رو آپلود کنم کمکم می کنید بهبوش بدم .
    خیلی ممنونم که وقت میذارید

  10. #10
    کاربر تازه وارد آواتار Hermidas
    تاریخ عضویت
    مهر 1387
    محل زندگی
    استان سمنان شهرستان گرمسار
    سن
    47
    پست
    31

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    Private Sub Command15_Click()
    On Error GoTo ERROR_HANDLER
    Dim V As Variant
    ...
    ...
    str_location_flt.Value = Empty
    str_code_process_source_flt.SetFocus
    Exit Sub
    ERROR_HANDLER:
    Select Case Err.Number
    Case 3022
    Err.Clear
    source_docs_query_subform.Form.Undo
    str_code_process_source_flt.SetFocus
    V = MsgBox("DUPLICATE RECORD")
    Case Else
    source_docs_query_subform.Form.Undo
    str_code_process_source_flt.SetFocus
    V = MsgBox(Err.Description, , Err.Number)
    Err.Clear
    End Select
    End Sub
    از این کد بخاطرcase else کامپایلر خطا میده عکس ضمیمه رو لطفا نگاه کنید
    compile error.jpg

  11. #11
    کاربر دائمی آواتار AbbasSediqi
    تاریخ عضویت
    مهر 1392
    محل زندگی
    تهران
    پست
    409

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    با سلام خدمت همه دوستان

    دوست گرامی بهترین روش استفاده از DataMacro هستش

    آموزشش رو قبلا قراردادم

    البته با توضیحات دوست گرامی جناب mazoolagh تکمیل تر شد

    از این لینک میتونید آموزش رو مطالعه کنید

    https://barnamenevis.org/showthread.p...8%B4-DataMacro



    یا حق

  12. #12
    کاربر تازه وارد آواتار Hermidas
    تاریخ عضویت
    مهر 1387
    محل زندگی
    استان سمنان شهرستان گرمسار
    سن
    47
    پست
    31

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    نقل قول نوشته شده توسط AbbasSediqi مشاهده تاپیک
    با سلام خدمت همه دوستان

    دوست گرامی بهترین روش استفاده از DataMacro هستش

    آموزشش رو قبلا قراردادم

    البته با توضیحات دوست گرامی جناب mazoolagh تکمیل تر شد

    از این لینک میتونید آموزش رو مطالعه کنید

    https://barnamenevis.org/showthread.p...8%B4-DataMacro



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

  13. #13
    کاربر دائمی آواتار Mehr@ban
    تاریخ عضویت
    آبان 1389
    محل زندگی
    بچه محله امام رضا
    پست
    562

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    نقل قول نوشته شده توسط Hermidas مشاهده تاپیک
    جناب آقای Mehr@ban

    خیلی واضح و خوبه ولی cancel = true نفهمیدم برای چی بکار بردین شاید توی برنامه ی خودتون کاربرد داره ولی ممنونم از شما دوست عزیز. بکارش می گیرم اگه به مشکل برخوردم دوباره مزاحمتون می شم

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

  14. #14
    کاربر تازه وارد آواتار Hermidas
    تاریخ عضویت
    مهر 1387
    محل زندگی
    استان سمنان شهرستان گرمسار
    سن
    47
    پست
    31

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

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

  15. #15
    کاربر دائمی آواتار Mehr@ban
    تاریخ عضویت
    آبان 1389
    محل زندگی
    بچه محله امام رضا
    پست
    562

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    نقل قول نوشته شده توسط Hermidas مشاهده تاپیک
    آقا واقعا دمت گرم بالاخره جواب گرفتم از کد شما که ساده ترین شکل ممکن بود. با تشکر فراوان از شما و تمامی دوستانی که راهنمایی کردن .
    خواهش میکنم دوست عزیز
    ولی به شخصه راهکار دوست عزیز جناب آقای mazoolagh رو میپسندم هرچند که راهکار جناب آقای صدیقی هم اساسی هست و در صورت پیاده سازی هرچندتا فرمی هم که ایجاد بکنید، چون نهایتا باید اطلاعات در جدول بشینه، نیازی به کدنویسی مجدد نیست!
    و اما پیشنهاد mazoolagh عزیز هم اصولی هست.
    شما یک فیلد از جدول رو به حالت کلید قرار دادین ولی الزامی نکردین!
    اگر الزامی بشه و کاربر از اون چشم پوشی کنه و اطلاعاتی رو واردش نکنه، قطعا با نمایش خطایی، روند تکمیل فرم و اطلاعات انجام نمیشه و در نهایتا طبق طراحیی که شما در فرمتون انجام دادین هیچ رکوردی ثبت نمیشه.
    حالا نوبت به مدیریت اون خطا بود که برای کاربر بهینه سازی بشه که کد ارائه شده توسط mazoolagh دقیقا همین کار رو میکرد.

    بازم خوشحالم که به نتیجه رسیدین

  16. #16
    کاربر تازه وارد آواتار Hermidas
    تاریخ عضویت
    مهر 1387
    محل زندگی
    استان سمنان شهرستان گرمسار
    سن
    47
    پست
    31

    نقل قول: ایجاد حلقه تکرار جهت چک کردن کلید اصلی قبل از ذخیره شدن

    نقل قول نوشته شده توسط Mehr@ban مشاهده تاپیک
    خواهش میکنم دوست عزیز
    ولی به شخصه راهکار دوست عزیز جناب آقای mazoolagh رو میپسندم هرچند که راهکار جناب آقای صدیقی هم اساسی هست و در صورت پیاده سازی هرچندتا فرمی هم که ایجاد بکنید، چون نهایتا باید اطلاعات در جدول بشینه، نیازی به کدنویسی مجدد نیست!
    و اما پیشنهاد mazoolagh عزیز هم اصولی هست.
    شما یک فیلد از جدول رو به حالت کلید قرار دادین ولی الزامی نکردین!
    اگر الزامی بشه و کاربر از اون چشم پوشی کنه و اطلاعاتی رو واردش نکنه، قطعا با نمایش خطایی، روند تکمیل فرم و اطلاعات انجام نمیشه و در نهایتا طبق طراحیی که شما در فرمتون انجام دادین هیچ رکوردی ثبت نمیشه.
    حالا نوبت به مدیریت اون خطا بود که برای کاربر بهینه سازی بشه که کد ارائه شده توسط mazoolagh دقیقا همین کار رو میکرد.

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

    در هر صورت خیلی چیز ها یاد گرفتم ممنوم از هر سه بزرگوار

تاپیک های مشابه

  1. چک کردن کلید اصلی تکراری در entity framework
    نوشته شده توسط negar.rafie در بخش C#‎‎
    پاسخ: 10
    آخرین پست: جمعه 28 خرداد 1395, 11:35 صبح
  2. سوال: کار نکردن اسکریپت چک کردن سایز فایل قبل از اپلود
    نوشته شده توسط moferferi در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: پنج شنبه 10 اسفند 1391, 00:52 صبح
  3. چک کردن یک شرط قبل از INSERT
    نوشته شده توسط federrer در بخش T-SQL
    پاسخ: 2
    آخرین پست: دوشنبه 21 آذر 1390, 09:18 صبح
  4. سوال: چک کردن سایز عکس قبل از upload ؟
    نوشته شده توسط Modifier در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: یک شنبه 27 تیر 1389, 14:55 عصر
  5. چک کردن فونت کامپیوتر قبل از لود شدن
    نوشته شده توسط samansad در بخش طراحی وب (Web Design)
    پاسخ: 30
    آخرین پست: پنج شنبه 13 دی 1386, 17:23 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •