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

نام تاپیک: نحوه پاک کردن یک رکورد از gridview در حالی که آن جدول به چند جدول دیگر متصل است

  1. #1
    کاربر دائمی
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    زیر سایه شما :دی
    پست
    381

    نحوه پاک کردن یک رکورد از gridview در حالی که آن جدول به چند جدول دیگر متصل است

    سلام. من می خوام یکی از رکوردهای گرید ویو رو حذف کنم. منتها اون رکورد توی جدولیه که با چند تا جدول دیگه رابطه داره. enable deleting رو انتخاب کردم ولی موقع delete کردن ارور میده. اینم ارورشه
    The DELETE statement conflicted with the REFERENCE constraint "FK_ThankTable_PostTable". The conflict occurred in database "allTest", table "dbo.ThankTable", column 'fkPostId'.
    The statement has been terminated.


    فکر میکنم باید پروسیجر بنویسم ولی نمیدونم چه کدی بنویسم. سرچم کردم ولی چیزی دستگیرم نشد

  2. #2

    نقل قول: نحوه پاک کردن یک رکورد از gridview در حالی که آن جدول به چند جدول دیگر متصل است

    سلام.
    شما باید اول تمام اطلاعات متصل به این رکورد رو در جداول دیگه پیدا کرده و پاک کنید.
    این کار هم باید با Transaction صورت بگیره.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  3. #3
    کاربر دائمی
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    زیر سایه شما :دی
    پست
    381

    نقل قول: نحوه پاک کردن یک رکورد از gridview در حالی که آن جدول به چند جدول دیگر متصل است

    از جوابتون ممنون سرچ کردم و یه سری مطلب گیر آوردم ولی چون اصلا از Transaction استفاده نکردم نمی دونم دقیقا باید چکار کنم مثلا اینجا گفت از این کد استفاده کن
    begin transaction;

    declare @deletedIds table ( id int );

    delete t1
    output deleted.id into @deletedIds;
    from table1 t1
    join table2 t2
    on t2.id = t1.id
    join table3 t3
    on t3.id = t2.id;

    delete t2
    from table2 t2
    join @deletedIds d
    on d.id = t2.id;

    delete t3
    from table3 t3 ...

    commit transaction;

    ولی اصلا نمی دونم کجا باید ازش استفاده کنم یا اینکه بعدش چکار کنم میشه یکم در مورد نحوه استفاده از Transaction توضیح بدید؟ الان میدونم که Transaction برای اینه که یه سری دستور رو اجرا کنی و اگه به درستی پیش رفت اون تغییرات اعمال بشه و اگه نه به حالت اول برگرده.

  4. #4

    نقل قول: نحوه پاک کردن یک رکورد از gridview در حالی که آن جدول به چند جدول دیگر متصل است

    transaction واسه مواقعی هست که چند تا کار یا همش باهم باید انجام شه یا هیچ کدوم.
    در این مورد اگه یکی از جداولت وقت پاک شدن ارور داد اونایی که پاک شده رو برمیگردونه.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  5. #5
    کاربر دائمی
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    زیر سایه شما :دی
    پست
    381

    نقل قول: نحوه پاک کردن یک رکورد از gridview در حالی که آن جدول به چند جدول دیگر متصل است

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

  6. #6

    نقل قول: نحوه پاک کردن یک رکورد از gridview در حالی که آن جدول به چند جدول دیگر متصل است

    begintransaction
    کارهای شما
    if@@ERROR<> 0
    rollback
    commit
    end transaction
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  7. #7
    کاربر دائمی
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    زیر سایه شما :دی
    پست
    381

    نقل قول: نحوه پاک کردن یک رکورد از gridview در حالی که آن جدول به چند جدول دیگر متصل است

    خوب این کدو کجا باید بنویسم؟ توی code-behind? توی پروسیجر یا جای دیگه؟ میشه یه نمونه کد هم بزارید؟
    ببینید مثلا اونجایی که نوشتید کارهای شما مثلا من باید بنویسم
    delet*from table1
    delete from table2
    درسته دیگه؟

  8. #8
    کاربر دائمی
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    زیر سایه شما :دی
    پست
    381

    نقل قول: نحوه پاک کردن یک رکورد از gridview در حالی که آن جدول به چند جدول دیگر متصل است

    اینم یه نمونه کد
    protected void Button1_Click(object sender,  EventArgs e)
    { SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;uid=sa;pwd=sa;");
    myConnection.Open();

    // Start a local transaction
    SqlTransaction myTrans = myConnection.BeginTransaction();

    SqlCommand myCommand = new SqlCommand();
    myCommand.Connection = myConnection;
    myCommand.Transaction = myTrans;
    try
    { myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
    myCommand.ExecuteNonQuery();
    myCommand.CommandText = "delete * from Region where RegionID=101";

    // Attempt to commit the transaction.
    myCommand.ExecuteNonQuery();
    myTrans.Commit();
    Response.Write("Both records are written to database.");
    }
    catch (Exception ep)
    { // Attempt to roll back the transaction.
    myTrans.Rollback();
    Response.Write(ep.ToString());
    Response.Write("Neither record was written to database.");
    }
    finally
    { myConnection.Close();
    }
    }

    خوب حالا من اینجا باید دستورات delete خودمو بنویسم درسته؟ الان باید یه sqlcomment بنویسم واسه پاک کردن از جدول 1 و یکی دیگه هم بنویسم واسه پاک کردن از جدول دو؟ یه چیزایی شبیه کد زیر؟
        protected void Button1_Click(object sender, EventArgs e)
    {
    SqlConnection myConnection = new SqlConnection(@"Data Source=.\sqlexpress;initial catalog = allTest;integrated Security=true");
    myConnection.Open();

    SqlTransaction myTrans = myConnection.BeginTransaction();
    SqlCommand myCommand = new SqlCommand();
    myCommand.Connection = myConnection;
    myCommand.Transaction = myTrans;
    try
    {

    myCommand.CommandText = "delete * from table1 where id=4";
    myCommand.ExecuteNonQuery();
    myCommand.CommandText = "delete * from table2 where id=4";
    myCommand.ExecuteNonQuery();
    myTrans.Commit();
    Response.Write("Both records are written to database.");
    }
    catch (Exception ep)
    {
    myTrans.Rollback();
    Response.Write(ep.ToString());
    Response.Write("Neither record was written to database.");
    }
    finally
    {
    myConnection.Close();
    }
    }

  9. #9

    نقل قول: نحوه پاک کردن یک رکورد از gridview در حالی که آن جدول به چند جدول دیگر متصل است

    کدهارو تو storded proc بذار.
    delete هارو هم جای کارهای شما.
    بعد از هر delete اون if رو بذار.
    آخرش هم commit.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

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

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