PDA

View Full Version : سوال: transaction بدون ارسال خطا



M.Fekri
شنبه 10 مهر 1389, 12:17 عصر
سلام
در چه صورت در یک transaction یک دستور(store proceduer)(یک دستور delete)اجرا نمی شه و بدون دادن پیغام بقیه دستورات اجرا نمیشه
البته این اتفاق بعضی مواقع می افتد

Rezahak
شنبه 10 مهر 1389, 13:22 عصر
لطفا واضح تر بيان كنيد
به طور كلي اگر در يك transaction خطا رخ دهد كل transaction ، Rollback شده و هيچ يك از دستورات داخل آن اجرا نمي شوند
ولي خطا برمي گردد مگر اينكه از exception استفاده كنيد

M.Fekri
شنبه 10 مهر 1389, 13:57 عصر
try
A
.
.
B
.
C
..
trn.commit
catch ex as exeption
trn.rollback

A,B,C:
with cmd
.transaction=trn
.connection=con
.
.
.executenonquery()
end with

دستورات A,B,C,D
همگی دستورات Delete از چندین جدول می باشند
حال از هر 100 بار فراخوانی این تابع 1 یا 2 بار دستور B اجرا نمی شود یعنی یکی از دستورات حذف انجام نی شود و پیغام خطا نمی دهد rollback هم نمی شه ؟؟؟؟؟؟؟؟

Rezahak
شنبه 10 مهر 1389, 15:49 عصر
شما كجاي catch پيغام خطا رو نشون ميدهيد من كه چيزي نمي بينم !!!!
چون rollback وجود داره هيچ delete هم انجام نمي شه
توي catch يك دستور messagebox.show(ex.message هم اضافه كنيد)

M.Fekri
شنبه 10 مهر 1389, 16:08 عصر
در catch دستور ex.message را گذاشتم
اصلا خطایی بر نمی گردانه فقط یه دستور را اجرا نمی کنه

Rezahak
یک شنبه 11 مهر 1389, 09:25 صبح
داخل DELETE شرط داريد؟؟
اگر جواب بلي است دستور DELETE را با SELECT * جايگزين كنيد و ببينيد اصلا ركوردي برمي گردد يا خير؟
شايد شرط شما اصلا ركوردي را برنمي گرداند!!!!

M.Fekri
یک شنبه 11 مهر 1389, 14:51 عصر
اما پیدا میکنه و حذف نمی کنه
با این از اینکه وقت گذاشتید بینهایت سپاسگذارم

Rezahak
یک شنبه 11 مهر 1389, 16:30 عصر
كاش يك جوري مي تونستم data ها و كدتون رو ببينم تا بهتون كمك كنم!!!!:ناراحت::ناراحت: