View Full Version : سوال: بک آپ گرفتن از پایگاه داده اکسس در حالی که چندین adodc در فرمهای مختلف با آن در ارتباط هستند
zahedi121
جمعه 27 خرداد 1390, 23:15 عصر
با سلام
برنامه ای نوشتم که در چند فرم جداگانه با adodc های مختلف اطلاعات را با تیبیل ها مختلف یک فایل mdb اکسس تبادل می کنند. حالا میخوام یک کلید گرفتن بک آپ طراحی کنم ، در اصل بک آپ گرفتن مشکلی ندارم با فرمان copyfile فایل را در یک پوشه ذخیره میکنم ولی مشکل اینجاست که نمی دونم کاربر با کدام adodc ها الان فایل را باز کرده برای همین برنامه خطا میده که نمیتونه فایل باز را کپی بگیره. در واقع دنبال دستوری میگردم که تمام ارتباطات را قطع کنه تا
بشه کپی را انجام داد بعد دوباره اتصال انجام بشه.لطفا راهنمایی کنید.
متشکرم
Mr.Unknown
شنبه 28 خرداد 1390, 01:35 صبح
بهترین راه اینه که از Encode و Decode بانک استفاده کنید.کلاس ای که براتون ضمیمه کردم داخل پروژه قرار بدید و کد زیر رو توی یک کامند قرار بدید.موفق باشید
جنرال Private WithEvents Huffman As clsHuffman
بک آپ Call Huffman.EncodeFile(App.Path & ("\Db.mdb"), App.Path & "\Dat.Bak")
ریستور Call Huffman.DecodeFile(App.Path & "\Dat.Bak", App.Path & ("\Db.mdb"))
از این کد هم میتونید استفاده کنید
adodc1.Recordset.ActiveConnection = Nothing
نظر بنده اینه که از adodb استفاده کنید.موفق باشید
zahedi121
شنبه 28 خرداد 1390, 07:26 صبح
سلام و تشکر
اگر بشه بدون کلاس این کار را کرد خیلی بهتره، راستی تفاوت adodb با adodc چیه ؟ adodb هم جزء کامپونت هاست ؟ اگر از اون استفاده کنم میشه بدون کلاس بک آپ گرفت؟
سپاسگزارم
Mr.Unknown
شنبه 28 خرداد 1390, 10:31 صبح
روش اضافه کردن این فایل کتابخانه ای به پروژه به صورت زیر میباشد
http://barnamenevis.org/attachment.php?attachmentid=71312&stc=1&d=1308378629
http://barnamenevis.org/attachment.php?attachmentid=71313&stc=1&d=1308378666
برای تعریف بانک به پروژه کد های زیر را در یک ماژول در پروژه ذخیره کنید.
Public Cn As New ADODB.Connection
Public Rs As New Recordset
Public Sub AdoDat()
With Cn
.CursorLocation = adUseClient
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Jet OLEDB:Database Password") = "*********"
.Mode = adModeReadWrite
.Open App.Path & "\Db.mdb"
End With
End Sub
داخل فرم لود کد زیر
AdoDat
برای تعریف تیبل به رکورد ست از کد زیر استفاده کنید
if Rs.State=1 then Rs.Close
Rs.CursorLocation = adUseClient
Rs.Open "SELECT * FROM TBL_GENERATOR", CN, adOpenStatic, adLockOptimistic
برای بستن بانک اطلاعات از کد زیر
cn.close
set cn=nothing
vbhamed
شنبه 28 خرداد 1390, 10:50 صبح
سلام
شما براي اطمينان مي تونيد تمام فرمها رو Unload كنيد و بعد هم دستوري مشابه Set Form1 = Nothing رو بديد تا از بسته شدن و قطع ارتباط فرمها اطمينان حاصل كنيد اما البته اين كار رو براي همه فرمها غير از فرم بكاپ بايد انجام بديد كه مي تونيد از دستوراتي مشابه زير استفاده كنيد (اين دستورات رو تو فرم بكاپ بنويسيد)
Dim frm As Form
For Each frm In Forms
If frm.Name <> Me.Name Then
Unload frm
Set frm = Nothing
End If
Next
بعد از اين كار از بانكتون پشتيبان بگيريد و سپس دوباره مي تونيد فرم اوليه برنامتون رو باز كنيد
فقط دقت كنيد تو Form_Unload ساير فرمها دستور END استفاده نكرده باشيد كه با Unload اونها برنامتون كلا بسته بشه
Sahand87
یک شنبه 07 اسفند 1390, 17:54 عصر
سلام
اگربخواهیم از این روش برای اتصال به بانک استفاده کنیم بعداز اجرای تمام مراحل چجوری فیلد ها را به تکس باکس متصل کنیم که بشود رکوردهار ا پیمایش و ویرایش کرد .
متشکر منتظر پاسخ شما دوستان
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.