View Full Version : لزوم بستن adodc بعد از انجام عملیات
ali190
دوشنبه 06 دی 1389, 22:16 عصر
باسلام و عرض خسته نباشید خدمت دوستان گرامی
از یه دوست شنیدم که میگفت همیشه هنگام کار با adodc اون رو close کنید
میخواستم بدونم اآیا اینکار واقع واجبه؟
این کار به چه منظوری انجام میشه؟
اصولاً بعد از چه کارهایی باید این متد رو اجرا کرد؟(افزودن رکورد ، ویرایش رکورد ، یا فیلتر نمودن؟)
آیا نوشتن کد adodc.close کافیه؟
آیا باز بودن ارتباط این کنترل با بنک میتونه به رکوردها آسیب برسونه؟
ممنون یمشم یه مقدار با جزئیات بیشتر این مسئله رو توضیح بدید
یاعلی
mbf5923
دوشنبه 06 دی 1389, 23:20 عصر
اين كه اين كار لازم هست يا نه بستگي به نظر خودتون داره
اين كار براي اين انجام ميشه كه اگه وسط كار برنامه مشكلي پيش اومد(برق رفت،سيستم ريست شد و ...)اطلاعات شما در بانك تثبيت شده باشه و از بين نره
بعد از هر كاري كه تغييري در اطلاعات ميده بهتره بانكتون روببنديد يا بهتر بگم بعد از باز كردن و انجام كارهاتون بهتره بانكتون بسته بشه
آسيبي هم كه ميتونه بزنه رو عرض كردم.
بستن بانك معمولا در adodc با همين دستور انجام ميشه
butterfly8528
سه شنبه 07 دی 1389, 00:02 صبح
سلام .
علاوه بر نکاتی که دوستمون بهش اشاره کرد،اگر ارتباط با بانک رو قطع نکرده باشید، در مواردی که باید دیتابیس رو کپی یا منتقل کنید ( مانند BackUp گرفتن ) ، با پیغام خطای فایل درحال استفاده است... مواجه خواهید شد .
موفق باشید .
ali190
سه شنبه 07 دی 1389, 00:25 صبح
سلام
ممنونم از توضیحاتتون
سئوالم رو یه مقدار با جزئیات بیشتر مطرح میکنم:
من دقیقاً متوجه نشدم کی باید این ارتباط رو قطع کنم؟
دقیقاً چه وقت باید این ارتباط قطع بشه؟
مثلاً فرض کنید من برای ثبت یک رکورد در دیتابیس کد زیر رو نوشتم:
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("xfile") = "ax"
Adodc1.Recordset.Fields("description") = Trim(description)
Adodc1.Recordset.Update
Adodc1.Refresh
زمانیکی که رکوردم به دیتابیس اضافه شد ، حالا باید اون ور ببندم :
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("xfile") = "ax"
Adodc1.Recordset.Fields("description") = Trim(description)
Adodc1.Recordset.Update
Adodc1.Recordset.Close
Adodc1.Refresh
یعنی من الان با کد قرمز رنگ رکوردستم رو بستم
الان مشکل حله؟
باز هم خواهش میکنم به من بگید این عملیات بسته شدن رو باید بعد از چه عملیاتهایی انجام بدم؟
مگر زمانیکه من یک فرم رو میبندم ارتباط بین adodc های اون فرم با دیتابیس خودبه خود بابسته شدن فرم بسته نمیشه؟
ممنون میشم جواب سئوالاتم رو بدید
یاعلی
butterfly8528
سه شنبه 07 دی 1389, 02:41 صبح
سلام .
یعنی من الان با کد قرمز رنگ رکوردستم رو بستم
الان مشکل حله؟
بله . RecordSet بسته میشه .
باز هم خواهش میکنم به من بگید این عملیات بسته شدن رو باید بعد از چه عملیاتهایی انجام بدم؟
بعد از انجام هر عملیاتی (حذف،اضافه،ویرایش و...) بهتره RecordSet رو ببندید .
مگر زمانیکه من یک فرم رو میبندم ارتباط بین adodc های اون فرم با دیتابیس خودبه خود بابسته شدن فرم بسته نمیشه؟
چرا قطع میشه،اما زمانی که بخواید در همان فرم از DataBase پشتیبان بگیرید و RecordSet بسته نشده باشه، با پیغام خطای... مواجه میشید .
موفق باشید .
ali190
جمعه 10 دی 1389, 14:26 عصر
سلام
آیا در دستور زیر که برای حذف رکوردهام نوشتمش هم بعد از انجام عملیات رکوردستم بسته شده؟
If Adodc1.Recordset.State = 1 Then Adodc1.Recordset.Close
Adodc1.Recordset.Open "Delete * From table1 WHERE c > " & Trim(Text4.Text) & ""
Adodc1.Refresh
Adodc1.Recordset.Close
Adodc1.Refresh
بعد از بستن رکوردستم از adodc.refresh استفاده کردم ، آیا این امر منجر به گشوده شدن مجدد رکورد ست نمیشه؟
ممنون میشم راهنماییم کنید
یاعلی
butterfly8528
شنبه 11 دی 1389, 02:47 صبح
بعد از بستن رکوردستم از adodc.refresh استفاده کردم ، آیا این امر منجر به گشوده شدن مجدد رکورد ست نمیشه؟
ممنون میشم راهنماییم کنید
یاعلی
کافیه قبل و بعد از بستن RecordSet و Refresh کردن Adodc وضعیت RecordSet رو بررسی کنید تا جواب سوالتون رو ببینید .
MsgBox Adodc1.Recordset.State
ali190
یک شنبه 12 دی 1389, 20:06 عصر
سلام
بله ، با رفرش نمودن adodc حالت open این کنترل فعال میشه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.