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

نام تاپیک: عدم ورود داده تکراری بعد از آپدیت

  1. #1

    عدم ورود داده تکراری بعد از آپدیت

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

  2. #2

    نقل قول: عدم ورود داده تکراری بعد از آپدیت

    میتونید ستون کدملی را یونیک کنید تا در صورت تکراری بودن استثناء رخ بده
    https://www.w3schools.com/sql/sql_unique.asp

  3. #3

    نقل قول: عدم ورود داده تکراری بعد از آپدیت

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    میتونید ستون کدملی را یونیک کنید تا در صورت تکراری بودن استثناء رخ بده
    https://www.w3schools.com/sql/sql_unique.asp

    از استثنا نمیخوام استفاده کنم . داده رو هم نمیخوام یونیک کنم . تویه برنامه چطور میتونم چک کنم ؟

  4. #4

    نقل قول: عدم ورود داده تکراری بعد از آپدیت

    نقل قول نوشته شده توسط jafarpalideh مشاهده تاپیک
    از استثنا نمیخوام استفاده کنم . داده رو هم نمیخوام یونیک کنم . تویه برنامه چطور میتونم چک کنم ؟
    https://stackoverflow.com/a/6909482

  5. #5

    نقل قول: عدم ورود داده تکراری بعد از آپدیت

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک

    این کوئری رو چطور تغییر بدم که کد ملی تکراری نباشه ؟





    string Pid = txtPersonID.Text;
    string Update = "Update TblPerson set PersonCodeMelli = '{0}',PersonName = '{1}',PersonFamily = '{2}',PersonAddress = '{3}',PersonTell = '{4}',PersonFatherName = '{5}' where PersonID = '{6}'";
    Update = string.Format(Update, txtPersonCodeMelli.Text.Trim(), txtPersonName.Text.Trim(), txtPersonFamily.Text.Trim(), txtPersonAddress.Text.Trim(), txtPersonTell.Text.Trim(), txtPersonFatherName.Text.Trim(), Pid);
    Function.DoDml(Update);


    MessageBox.Show("ویرایش شد");




  6. #6

    نقل قول: عدم ورود داده تکراری بعد از آپدیت

    نقل قول نوشته شده توسط jafarpalideh مشاهده تاپیک
    از استثنا نمیخوام استفاده کنم . داده رو هم نمیخوام یونیک کنم . تویه برنامه چطور میتونم چک کنم ؟
    چرا نمیتونید؟ این یکی از بهترین راه هاست.

    نقل قول نوشته شده توسط jafarpalideh مشاهده تاپیک
    این کوئری رو چطور تغییر بدم که کد ملی تکراری نباشه ؟


    string Pid = txtPersonID.Text;
    string Update = "Update TblPerson set PersonCodeMelli = '{0}',PersonName = '{1}',PersonFamily = '{2}',PersonAddress = '{3}',PersonTell = '{4}',PersonFatherName = '{5}' where PersonID = '{6}'";
    Update = string.Format(Update, txtPersonCodeMelli.Text.Trim(), txtPersonName.Text.Trim(), txtPersonFamily.Text.Trim(), txtPersonAddress.Text.Trim(), txtPersonTell.Text.Trim(), txtPersonFatherName.Text.Trim(), Pid);
    Function.DoDml(Update);


    MessageBox.Show("ویرایش شد");
    نمیدونم کلاسfunction و متد DoDml را به چه صورتی پیاده کردید ، اما اگر ستون را یونیک کنید ، سمت برنامه با یک try ... catch میتونید تکراری بودن رو متوجه بشید.

  7. #7

    نقل قول: عدم ورود داده تکراری بعد از آپدیت

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    چرا نمیتونید؟ این یکی از بهترین راه هاست.


    نمیدونم کلاسfunction و متد DoDml را به چه صورتی پیاده کردید ، اما اگر ستون را یونیک کنید ، سمت برنامه با یک try ... catch میتونید تکراری بودن رو متوجه بشید.

    به دلایلی نمیتونم از یونیک استفاده کنم .




    public static void DoDml(string Query)
    {
    SqlConnection con = new SqlConnection();
    con.ConnectionString =PM.Properties.Settings.Default.ConPM;
    SqlCommand cmd = new SqlCommand(Query, con);
    if (con.State == ConnectionState.Closed)
    {
    con.Open();
    }
    cmd.ExecuteNonQuery();
    con.Close();


    }




  8. #8

    نقل قول: عدم ورود داده تکراری بعد از آپدیت

    متدی که کوئری را اجرا میکند باید مقدار ExecuteNonQuery را برگشت دهد(تعداد سطر تحت تاثیر قرار گرفته
            public int DoDml(string query)
    {
    SqlConnection con = new SqlConnection();
    con.ConnectionString = PM.Properties.Settings.Default.ConPM;
    SqlCommand cmd = new SqlCommand(query, con);
    if (con.State == ConnectionState.Closed)
    {
    con.Open();
    }
    int rowsAffected = cmd.ExecuteNonQuery();
    con.Close();
    return rowsAffected;
    }


    به صورت زیر عمل کنید(مثال)
                string update =
    @"
    IF EXISTS(SELECT * FROM TblPerson WHERE PersonCodeMelli = '{0}' AND PersonID <> '{1}')
    BEGIN
    SELECT -1;
    END
    ELSE
    BEGIN
    Update TblPerson SET PersonCodeMelli = '{0}'
    WHERE PersonID = '{1}'
    END";
    update = string.Format(update, txtPersonCodeMelli.Text.Trim(), Pid);
    int result = DoDml(update);
    if (result == -1)
    {
    MessageBox.Show(@"کد ملی تکراری");
    }
    else if (result > 0)
    {
    MessageBox.Show(@"ویرایش شد");
    }

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

  1. سوال: مشکل از دست رفتن داده ها بعد از آپدیت (بروز رسانی) نرم افزار
    نوشته شده توسط 09178525592 در بخش C#‎‎
    پاسخ: 4
    آخرین پست: سه شنبه 29 مرداد 1392, 16:10 عصر
  2. جلوگیری از ورود داده تکراری
    نوشته شده توسط MBTJKQC در بخش Access
    پاسخ: 17
    آخرین پست: چهارشنبه 10 شهریور 1389, 16:03 عصر
  3. سوال: امنیت در ورود اطلاعاتی که بعد از آن در سایت نشان داده می شود
    نوشته شده توسط PrinceDotNet در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: جمعه 15 شهریور 1387, 18:18 عصر
  4. سوال: عدم ورود داده به گزارس قبل از ارسال پارامتر
    نوشته شده توسط h_floppy در بخش گزارش سازی با Crystal Report
    پاسخ: 0
    آخرین پست: سه شنبه 12 شهریور 1387, 11:56 صبح
  5. سوال: جلوگيري از ورود داده تكراري
    نوشته شده توسط soheil3242 در بخش SQL Server
    پاسخ: 4
    آخرین پست: جمعه 11 مرداد 1387, 04:46 صبح

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

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