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

نام تاپیک: transaction در vb.net کمک کنید

  1. #1

    transaction در vb.net کمک کنید

    سلام
    من یک application کوچولو نوشتم که با transaction هاش مشکل دارم. برنامه باید تحت شبکه کار کنه. 2 تا جدول درنظر بگیرید که یکی header است و دیگری detail. برای همین من باید عملیات Insert و Update و ... را باید تحت یک transaction انجام بدم و در ضمن تعداد ردیف هایی که به جدول detail اضافه می شود می تواند نامحدود باشد مثل یک سند حسابداری که header و detail دارد. در ضمن من transaction را درکدvb نوشتم نه در database . حالا مشکل من اینکه وقتی در شبکه یک client می خواهد transaction را شروع کند database قفل می شود و دیگه هیچ client دیگه ای نمی تونه هیچ کاری بکنه حتی select.
    مشکل من خیلی طولانی شد ببخشید ولی خواهش می کنم بهم کمک کنید

  2. #2
    کاربر دائمی آواتار meh_secure
    تاریخ عضویت
    دی 1383
    محل زندگی
    California
    پست
    964
    شما باید از اتصالات disconnected استفاده کنی.
    برای این منظور دنبال dataset و datarelation بگرد.

  3. #3
    dcNorthwind.Open()

    Dim transaction1 As SqlClient.SqlTransaction
    transaction1 = dcNorthwind.BeginTransaction()

    daCustomers.UpdateCommand.Transaction = transaction1
    daOrders.UpdateCommand.Transaction = transaction1

    Try
    daCustomers.Update(dsNorthwind1)
    daOrders.Update(dsNorthwind1)
    transaction1.Commit()

    Catch dbcex As DBConcurrencyException
    MessageBox.Show("Update Failed, Concurrency Exception")
    transaction1.Rollback()

    Catch ex As Exception
    MessageBox.Show("Update Failed")
    transaction1.Rollback()

    Finally
    dcNorthwind.Close()
    End Try

    البته می خواستم یه قسمت از برنامه ام را کپی کنم اینجا و لی تعداد زیاد و با #C بود
    امیدوارم مشکلت حل بشه
    به هرحال روش همینه

  4. #4
    از بابت راهنمایی ممنون ولی اینکار ها را قبلا انجام دادم مشکل من این است که من دو تا جدول دارم که یکی header و دیگری detail است trans action در آغاز insert به جدول header شروع می شود و بعد کاربر می تواند به تعداد نامحدود و در محدوده زمانی detail را هم اضافه کند یعنی در طول زمانی که transaction هنوز بسته نیست کارهای دیگری هم انجام می گیرد منظورم این است که دستورات insert من یکجا و بلافاصله بعد از هم انجام نمیگیرد. حالا این transaction در حالت single مشکلی ندارد ولی در شبکه هر کاربری که زودتر شروع کند database برای آن کاربر قفل می شود.
    از اینکه مشکلم را خواندید ممنون خواهش می کنم کمکم کنید

  5. #5
    آهای کسی نمی خواد کمکم کنه

  6. #6
    کاربر دائمی
    تاریخ عضویت
    آذر 1383
    محل زندگی
    تهران
    پست
    1,021

    Lightbulb

    نقل قول نوشته شده توسط nazi_shaker
    از بابت راهنمایی ممنون ولی اینکار ها را قبلا انجام دادم مشکل من این است که من دو تا جدول دارم که یکی header و دیگری detail است trans action در آغاز insert به جدول header شروع می شود و بعد کاربر می تواند به تعداد نامحدود و در محدوده زمانی detail را هم اضافه کند یعنی در طول زمانی که transaction هنوز بسته نیست کارهای دیگری هم انجام می گیرد منظورم این است که دستورات insert من یکجا و بلافاصله بعد از هم انجام نمیگیرد.
    سلام

    بنظرم ساختار برنامتون غلطه.

    چون معنی نداره دستوراتی که باید در Tran باشد بلافاصله اجرا نشه.

    در پناه حق موفق باشید و پرتوان

  7. #7
    من فکر می کنم که درست نتونستم منظورم را برسونم.
    بهتره که اینطوری بگم ، فکر کنید یک transaction باید برای مدتی باز بمونه و چون در این حالت database قفل می شود هیچ کاربر دیگه ای هیچ کاره دیگه ای نمی تونه انجام بده در حالی که برنامه تحت شبکه کار می کنه خواهش می کنم بهم بگید چکار کنم فقط بهم نگید transaction را زود ببندم که نمی شود

  8. #8
    سلام
    خوب این جناب Transaction برای چی مدی باز می مونه. هر چیزی فقط به اندازه ضرورت باز می مونه. مثلا یه update میخواد تحت یه transacion انجام بشه. خوب مگه این update قراره چند ساعت طول بکشه؟

  9. #9
    سلام
    از همگی ممنونم که بهم کمک کردید من بلاخره تونستم مشکلم رو حل کنم. یک datatableدر کد برنامه ام درست کردم و اطلاعاتم را در آن نگهداشتم بعد از ثبت نهایی از datatable می خوانم و در database وارد میکنم اینطوری دیگه لازم نیست transaction را برای مدت زیادی باز نگه دارم
    ممنون

  10. #10
    کاربر دائمی آواتار habedijoo
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    538
    سلام دوست عزیز
    درسته که کارتو یه جوری راه انداختی ولی به نظر من استاندارد نیست . من یه چند نکته به نظرم رسیده که براتون مینویسم .
    اولا اگر یه موقع میخواهید از دادهای موقتی استفاده کنید نیازی به ساختن Database جدید ندارید . شما میتوانید از جداول موقتی Sql Server استفاده کنید .
    ثانیا برای قفل نشدن کامل اطلاعات باید سطوح ایزولاسیون تراکنش را مشخص کنید . احتمالا شما روی اطلاعاتتان قفل سنگین مگذاشتید . ( یعنی قفل در برابر Select - Insert - Update - Delete ) شما کافی ست قفلی برای ( Insert - Upadate ) بگذارید . و اجازه select را آزاد بگذارید .

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

  1. پیغام Transaction Cannot ......
    نوشته شده توسط nashkani در بخش SQL Server
    پاسخ: 2
    آخرین پست: سه شنبه 06 بهمن 1388, 12:00 عصر
  2. خطا در ثبت اطلاعات توسط transaction
    نوشته شده توسط hasti.lm در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: سه شنبه 18 دی 1386, 19:58 عصر
  3. سوال در مورد transaction
    نوشته شده توسط miladr در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: سه شنبه 18 دی 1386, 10:26 صبح
  4. اشکال در Transaction
    نوشته شده توسط dontcare در بخش VB.NET
    پاسخ: 6
    آخرین پست: چهارشنبه 28 آذر 1386, 15:16 عصر
  5. سیستم سه لایه - استفاده از Transaction
    نوشته شده توسط Mrs.Net در بخش C#‎‎
    پاسخ: 1
    آخرین پست: دوشنبه 05 آذر 1386, 09:43 صبح

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

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