PDA

View Full Version : مشکل در پشتیبان گیری



na3er-faraji
دوشنبه 04 تیر 1386, 08:47 صبح
با سلام . یک برنامه بانک اطلاعاتی نوشتم که توش یک backup گیری ساده هم داره . به این صورت که آدرس فایل دیتابیس رو می گیره و یک جایی ذخیره می کنه . و برای restore هم آدرس را مجددا گرفته و روی فایل قبلی ذخیره می کنه . اما مشکل اینه وقتی که یک بار back up گیری می کنم آدرس های برنامه با مشکل مواجه میشه . البته من بانک رو بغل exe گذاشتم و فقط اسم دیتابیس رو دادم و آدرس ندادم . رشته اتصال به بانک من رو در زیر می بینید.


Public Function ConnectString() As String
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;" + _
"Data Source=db.mdb;"
End Function

کد پشتیبان گیری اینه


Private Sub mnuSaveDb_Click()
On Error GoTo err
cdOpen.Filter = "Bakup file(*.bak)|*.bak"
cdOpen.ShowSave
Source = App.Path & "\db.mdb"
Target = cdOpen.FileName
FileCopy Source, Target
MsgBox "ÇØáÇÚÇÊ ÈÇ ãæÝÞíÊ ÔÊíÈÇä íÑí ÔÏ", vbOKOnly + vbInformation, "Çå ÓÇÒí"
Exit Sub
err:
MsgBox err.Number & " - " & err.Description, vbOKOnly + vbInformation, "Info"
End Sub

کد restore هم اینه


Private Sub mnuRestoreDb_Click()
On Error GoTo err
cdOpen.Filter = "Bakup file(*.bak)|*.bak"
cdOpen.ShowOpen
Source = cdOpen.FileName
Target = App.Path & "\db.mdb"
FileCopy Source, Target
MsgBox "ÇØáÇÚÇÊ ÈÇ ãæÝÞíÊ ÈÇÒ ÑÏÇäÏå ÔÏ", vbOKOnly + vbInformation, "Çå ÓÇÒí"
Exit Sub
err:
MsgBox err.Number & " - " & err.Description, vbOKOnly + vbInformation, "Info"
End Sub

اما تو عکس زیر ببینید . بعد از اینکه یک backup در درایو e گرفتم برنامه رو بستم و دویاره باز کزدم خطای زیر اتفاق افتاد . ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

Evil 69
دوشنبه 04 تیر 1386, 14:14 عصر
اسم فایل back up رو چی گذاشتی ؟
اگر میخای من سورس کاملشو دارم برای upload کنم تو همین سایت

amirhosein
دوشنبه 04 تیر 1386, 19:29 عصر
منم همین مشکل رو داشتم.وقتی از دیالوگ ها استفاده می کنی (مخصوصا متد showopenوshowsave) میاد و مسیر جاری برنامه رو تغییر میده بهمین خاطر باید قبل از استفاده از این متد مسیر جاری رو توی یه متغیر ذخیره کنی و بعد با یه API مسیر جاری برنامه رو تنظیم کنی. اینم API مربوطه :

Public Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
برای استفاده هم به این صورت عمل کن :

current_path = App.Path
CommonDialog1.ShowSave
SetCurrentDirectory current_path