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

نام تاپیک: عدم ثبت رکورد تکراري

  1. #1

    عدم ثبت رکورد تکراري

    با سلام
    چگونه در ويژوال بيسيک از ثبت رکورد تکراري در بانک اطلاعاتي که در اکسس ايجاد شده است جلوگيري کنيم.

  2. #2

    Lightbulb نقل قول: عدم ثبت رکورد تکراري

    دو راه وجود داره:
    • استفاده از كليد
    • جستجو
    كليد رو كه در بانكتون مشخص كردين، در برنامه خودتون يكبار ركورد تكراري وارد كنيد تا برنامه پيغام خطا صادر بكنه و با دستور On Error كد خطا رو نگه داريد و دوباره دفعه بعد با دستور On Error تعيين كنيد كه اگر خطاي برنامه برابر كد خطايي بود كه قبلاً نگه داشتين بود پيغام عدم ورود ركورد تكراري صادر بكنه.
    جستجو هم اين هستش كه 1 بار از ابتدا تا انتها جدول رو برنامه جستجو بكنه اگر چيزي شبيه اون پيدا نكرد ركورد جديد رو ثبت بكنه.

  3. #3

    نقل قول: عدم ثبت رکورد تکراري

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

  4. #4

    نقل قول: عدم ثبت رکورد تکراري

    جستجو هم اين هستش كه 1 بار از ابتدا تا انتها جدول رو برنامه جستجو بكنه اگر چيزي شبيه اون پيدا نكرد ركورد جديد رو ثبت بكنه.
    من هم از همین روش در برنامم استفاده می کنم .
    حالا یه سوال داشتم و اون اینکه آیا سرعت برنامه در این روش پایین نمیاد ؟
    این هم روش جستجو :
    Adodc1.Recordset.Filter = "darscd = '" & txtcode.Text & "'"
    If Adodc1.Recordset.RecordCount > 0 Then
    MsgBox " این رکورد قبلا وارد شده است.", vbExclamation
    txtcode.Text = ""
    txtname.Text = ""
    txtquantity.Text = ""
    txtcode.SetFocus
    GoTo m
    End If
    '********

  5. #5
    کاربر تازه وارد آواتار Mohya_z332
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    My Document
    پست
    51

    نقل قول: عدم ثبت رکورد تکراري

    با این کد بنویس اگه نوع داده اون integer هست
    text3 عددی هست که میخوایم ببینیم تکرارش هست یا نه
    Data1.Recordset.FindFirst "eshteraknum like""" & (Text4.Text) & """"
    Do While Data1.Recordset.NoMatch = False
    Data1.Recordset.FindNext "eshteraknum Like""" & (Text4.Text) & """"
    Loop
    If Text4.Text = Text3.Text Then
    intmsg = MsgBox("عدد تکراری است", vbOKOnly + vbExclamation, "ÔãÇÑå ÇÔÊÑǘ")

  6. #6
    کاربر تازه وارد آواتار Mohya_z332
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    My Document
    پست
    51

    نقل قول: عدم ثبت رکورد تکراري

    البته کد بالا شاید روی داده های غیر integer هم کار کنه

  7. #7
    کاربر تازه وارد آواتار Mohya_z332
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    My Document
    پست
    51

    نقل قول: عدم ثبت رکورد تکراري

    این هم واسه داده ها یا فیلدهایی که integer تعریف نشدند
    Data1.Recordset.FindFirst "eshteraknum = '" & (Text4.Text) & "'"
    Do While Data1.Recordset.NoMatch = False
    Data1.Recordset.FindNext "eshteraknum = '" & (Text4.Text) & "'"
    Loop
    If Text4.Text = Text3.Text Then
    intmsg = MsgBox("ÔãÇÑå ÇÔÊÑǘ ʘÑÇÑí ÇÓÊ", vbOKOnly + vbExclamation, "ÔãÇÑå ÇÔÊÑǘ")

  8. #8

    نقل قول: عدم ثبت رکورد تکراري

    نقل قول نوشته شده توسط alavi1451 مشاهده تاپیک
    با تشکر اگر ممکن است روش جستجو را کامل توضيح دهيد
    سلام.
    این روش رو نادیده بگیرید، چون هیچ تضمینی در این روش وجود نداره که شما رکورد تکراری در بانک نداشته باشید. مگر اینه برنامه Single User باشه که خوب، میتونید این راه رو پی بگیرید و ... (که من در کل توصیه نمیکنم).

    اما اگر برنامه ممکنه توسط بیش از یک کاربر بطور همزمان استفاده بشه، دیگه تضمینی در کار نیست. فرض کنید که

    1. کاربر اول رکورد XX رو میخواد وارد کنه.
    2. پس کاربر اول میره میبینه XX در بانک نیست و تصمیم میگیره که به بانک اضافه کنتش.
    3. در همین فاصله، کاربر دوم هم رکورد XX رو میخواد اضافه کنه.
    4. کاربر دوم هم وقتی میبینه رکورد در بانک نیست، تصمیم میگیره اونو Insert کنه.
    5. رکورد XX توسط کاربر دوم به بانک اضافه میشه.
    6. کاربر اول هم میره که رکورد رو اضافه کنه، چون چک کرده بود، دید نیست. اما قبلا اضافه کردن، کاربر دوم پیش دستی کرده و رکورد رو اضافه کرده.

    نتیجه: شما در بانک دو رکورد XX خواهید داشت.

    راه صحیح استفاده از Index ها و Constraint ها در بانک بمنظور کنترل این مساله در سطح بانک هستش. البته روش پیشنهاد شده در صورتیکه Pessimistic کار کنید، جواب میده، اما اینم بدیهایی داره که از حئصله این متن خارجه.

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

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