PDA

View Full Version : سوال: بک آپ شمسی فقط جداول



laia56
دوشنبه 04 اردیبهشت 1391, 13:50 عصر
با سلام خدمت اساتید و دوستان محترم
در ذیل فایلی هست که یکی از اساتید در همین تایپیک در دیتابیس ها و برنامه های کاربردی برای بک آپ گیری به تاریخ شمسی طراحی کردند که خیلی برای من مفید بوده ولی در حال حاضر با توجه به زیاد شدن حجم پروژه هایم خیلی نیاز نیست که کل فایل بک آپ گیری شود فقط بخش جداول آن به تاریخ شمسی باشد کافیست در واقع سئوال بنده اینست که چکار کنم که این بک آپ به تاریخ شمسی فقط شامل جداول باشد
با تشکر از حوصله و حسن توجه شما

Abbas Amiri
دوشنبه 04 اردیبهشت 1391, 19:30 عصر
در روال کلیک باتن بک آپ کد زیر را جایگزین کنید فرض می کنیم نام فایل Backend شما FileName_be ودر پوشه جاری فایل Frontend باشد


source = Application.CurrentProject.Path & "\FileName_be.mdb"

laia56
سه شنبه 05 اردیبهشت 1391, 14:03 عصر
باتشکر از توجه جنابعالی
اما کد فوق را اعمال کردم در فایل زیر ولی نشد

Abbas Amiri
سه شنبه 05 اردیبهشت 1391, 18:56 عصر
درپوشه جاری فایل اصلی ، فایل مربوط به جداول را ایجادکردید؟ دراین مثال فرض شده است فایلی به نام FileName_be.mdb که مربوط به جداول میباشد موجود است.

laia56
چهارشنبه 06 اردیبهشت 1391, 00:18 صبح
بله دوست عزیز اما بکآپی رویت نمیشود

Abbas Amiri
چهارشنبه 06 اردیبهشت 1391, 10:29 صبح
نمونه زیر را ببینید

laia56
چهارشنبه 06 اردیبهشت 1391, 18:44 عصر
دوست عزیز با تشکر از حوصله شما
ولی فایل شما یک مشکلی دارد که بک آپ را از فایل FileName_be.mdb میگیرد و تغییرات فایل اصلی را ملاک قرار نمیدهد

Abbas Amiri
چهارشنبه 06 اردیبهشت 1391, 19:42 عصر
اگر با ورژن 2003 کارمیکنید در Tools » Database Utilities » Database Splitter بروید ودیتابیس خودرا به دوقسمت جداول و مابقی اشیا تقسیم کنید(توسط ویزارد)
نرم افزار بطور اتوماتیک یک فایل بهمان نام فایل شما وپسوند be_ خواهد ساخت وجداول را به آن انتقال و لینک های جداول را درفایل اصلی میگذارد . حسن اینکار اینست که درصورت تخریب فایل اصلی اطلاعات شما دست نخورده باقی خواهد ماند.

laia56
چهارشنبه 06 اردیبهشت 1391, 19:57 عصر
با تشکر
اما بنده با ورژن 2010 کار میکنم حتی با تغییرات در پسوند ها از mdb به accdb و تغییردادن محل بکآپ از فایل اصلی به قایل دوم بازهم صرفا جداول ذخیره نمیشوند
بنده میخواهم فقط از یک فایل موجود عمل بکآب انجام شود آنهم از جداول فقط با روشی که شما زحمت کشیدید باید دو فایل باشد ضمن اینکه بکآپ از فایل دوم گرفته میشود نه از فایل اصلی بعد هم از تمام اطلاعات فایل دوم این ذخیره انجام میشود منظورم در صورتیست که فایل دوم را فایل اصلی فرض بگیریم

Abbas Amiri
چهارشنبه 06 اردیبهشت 1391, 21:28 عصر
کد زیر را جایگزین کنید .


Private Sub Command0_Click()
On Error GoTo err
Dim x As Integer
desti = Make_Date(SHAMSI(Date)) & ".mdb"
With CommonDialog2
.DialogTitle = "Backup"
.Filter = "mdbfles (*.mdb)|*.mdb"
.FileName = desti
.ShowSave
SaveAsText 6, "", desti
MsgBox "Databas has been backup", vbInformation
End With
Exit Sub
err:
Beep
End Sub

laia56
چهارشنبه 06 اردیبهشت 1391, 22:08 عصر
بسیار عالی بود با سپاس فروان از لطف و حسن توجه شما

laia56
چهارشنبه 13 اردیبهشت 1391, 14:13 عصر
با سلام مجدد و سئوال در رابطه
در همین مورد حالا میخواهم مسیر بکاپ پرسیده نشود و به صورت اتومات فایل ذخیره شود البته خودم تغییراتی را در کد دوست عزیز بصورت زیر انجام دادم ولی مشکلم اینجاست که برنامه در DOCUMENTذخیره میشود در حالیکه من میخواهم در مسیری که برایش در کد تعیین میکنم ذخیره شود با تشکراز حوصله دوستان و اساتید

Private Sub Command0_Click()
On Error GoTo err

Dim X As Integer

desti = Make_Date(SHAMSI(Date)) & ".mdb"

With CommonDialog2

SaveAsText 6, "", desti

MsgBox "Databas has been backup", vbInformation

End With

Exit Sub

err:

Beep
End Sub

Abbas Amiri
چهارشنبه 13 اردیبهشت 1391, 18:50 عصر
فرض میکنیم در پوشه جاری ، فولدرBackup وجود دارد وشما میخواهید در آن ذخیره کنید


Private Sub Command0_Click()
On Error GoTo err
Dim X As Integer
desti = Make_Date(SHAMSI(Date)) & ".mdb"
desti = CurrentProject.Path & "\Backup\" & desti
SaveAsText 6, "", desti
MsgBox "Databas has been backup", vbInformation
Exit Sub
err:
Beep
End Sub

Hedesh
چهارشنبه 13 اردیبهشت 1391, 20:24 عصر
با سلام
من این کد آقای امیری رو اعمال کردم ولی وقتی restore می کنیم فرم و ماژول فایل اصلی هم پاک می شوند.
درسته ؟ یا من اشتباه عمل کردم.

Abbas Amiri
چهارشنبه 13 اردیبهشت 1391, 21:37 عصر
درخواست کننده تاپیک کدی می خواسته که فقط جداول موجود در فایل را در محل دیگری ذخیره کند. چنانچه شما بک آپ کامل از فایل خود می خواهید ، از روشهای دیگری که درسایت پیدا میشود استفاده کنید

Hedesh
پنج شنبه 14 اردیبهشت 1391, 03:45 صبح
اقای امیری من نمی خواهم بک آپ کامل بگیرم . فقط می خواهم از جدول های که اطلاعات در آن ذخیره شده پشتیبان تهیه کنم که این کد شما جواب کار منو میده فقط نکته اینجاست که با چه کدی بتونم جدول هام را Restor کنم که به بقیه دیتابیس صدمه نخوره یعنی فقط اطلاعات جدول جایگزین بشه ؟
ممنون میشم اگه راهنمایی کنید.

laia56
پنج شنبه 14 اردیبهشت 1391, 18:49 عصر
با سلام و تشکر از دوست عزیز
سوالم را واضح تر مطرح کنم در واقع میخواهم بتوانم آدرس یکی از دریوارها و بعد یک فولدر مشخص را بدهم
متاسفانه به دلیل مشکل اینترنت در طرح مسله تاخیر افتاد بهر حال از حوصله شما تشکر میکنم
در ضمن اگر امکان دارد کد را هم شرح دهید تا معنی آنرا بدانم

Abbas Amiri
پنج شنبه 14 اردیبهشت 1391, 19:03 عصر
با چه کدی بتونم جدول هام را Restor کنم
از کد زیر می توانید استفاده کنید


Sub ReplaceRecords()
Dim tdf As TableDef
'***************************************
strExternamDb = "Your Backup Table Path"
'***************************************
For Each tdf In CurrentDb.TableDefs
CurrentDb.Execute "DELETE * FROM " & tdf.Name
CurrentDb.Execute "INSERT INTO " & tdf.Name & " SELECT * FROM " & tdf.Name & " IN '" & strExternamDb & "'"
Next
End Sub

Abbas Amiri
پنج شنبه 14 اردیبهشت 1391, 19:08 عصر
میخواهم بتوانم آدرس یکی از دریوارها و بعد یک فولدر مشخص را بدهم

کد زیر را بصورت خط بعدی اش می توانید استفاده کنید


desti = CurrentProject.Path & "\Backup\" & desti
desti = "D:\YourFolderName\" & desti

Hedesh
جمعه 15 اردیبهشت 1391, 00:26 صبح
با عرض شرمندگی آقای امیری این کد را باید به رویداد OnClick باتن Restore باید وصل کنم یا نه ؟
اگه میشه روی فایل ضمیمه اضافه بفرمایید.
ممنون.

Abbas Amiri
جمعه 15 اردیبهشت 1391, 16:59 عصر
جهت باتن Restore کد زیر را جایگزین کنید


Private Sub Command1_Click()
On Error GoTo err
Dim fd As FileDialog, tdf As TableDef
Set fd = Application.FileDialog(msoFileDialogFilePicker)
If MsgBox("are you sure", vbOKCancel, "restore") = vbOK Then
With fd
.AllowMultiSelect = False
.Title = "Restore"
.ButtonName = "ÈÇÒíÇÈí"
.InitialFileName = CurrentProject.Path
.Filters.add "Access Files", "*.mdb", 1
If .Show = -1 Then
source = .SelectedItems(1)
Else
Exit Sub
End If
End With
For Each tdf In CurrentDb.TableDefs
If tdf.Attributes = 0 Then
CurrentDb.Execute "DELETE * FROM " & tdf.Name
CurrentDb.Execute "INSERT INTO " & tdf.Name & " SELECT * FROM " & tdf.Name & " IN '" & source & "'"
End If
Next
MsgBox "Databas has been restored", vbInformation
End If
Exit Sub
err:
Beep
End Sub

Hedesh
شنبه 16 اردیبهشت 1391, 14:00 عصر
با سلام و تشکر از آقای امیری به خاطر صبر و حوصله شون
و با عرض شرمندگی من کدی که دادید رو اعمال کردم و بعد از کلیک روی دکمه Restore پنجره انتخاب فایل باز می شود ولی بعد از انتخاب فایل عملیات restore صورت نمی گیرد.
اگر فایل ضمیمه را نگاه کنید ممنون می شم.
ضمنا فایل اولی بک آپ شمسی Filedialog را اجرا نمی کرد. من هم جدوال اون رو بردم تو یک دیتا بیس دیگه و ماژول شمسی اش رو هم حذف کردم.
با تشکر دوباره.

Abbas Amiri
شنبه 16 اردیبهشت 1391, 23:34 عصر
فایل شما رو امتحان کردم . رکوردها منتقل میشوند.

Hedesh
یک شنبه 17 اردیبهشت 1391, 00:04 صبح
با تشکر فراوان از آقای امیری.
دستتون درد نکنه.
درسته ، رکورد ها منتقل شدند نمی دونم مشکل اول از کجا بود. بهرحال الان که امتحان کردم درست کار میکرد.
بازم تشکر.
موفق باشید.

Hedesh
دوشنبه 18 اردیبهشت 1391, 17:47 عصر
با سلام و خسته نباشید.
من به یک نکته جالب برخوردم و اونم مشکلی بود که دو روزه منو سرکار گذاشته بود.
هر کاری می کردم عملیات REstore کامل نمی شد یعنی ابتدا فایل پشتیبان رو انتخاب می کردم ولی عملیات انتقال داده ها انجام نمی شد.
خیلی روش کارکردم حتی آفیس 2007 sp3 را دانلود کردم گفتم شاید مشکل از سیستم منه .
خیل از reference ها رو هم تیک زدم ولی نشد.
آخرش میدونیدمشکل از کجا بود اگه بگم خندتون میگیره.
نام جدول هام مشکل داشت یعنی نام جدوالم رو شماره گذاری کرده بودم مثلا 01-tbl Account type حالا که شماره جداول رو برداشتم یعنی به اینصورت tbl Account type عملیات پشتیبان گیری کامل شد.
با تشکر .

Hedesh
دوشنبه 18 اردیبهشت 1391, 17:56 عصر
ضمنا من عملیات بک آپ رو به جای استفاده از Commondialog با filedialog نوشتم
فایل ضمیمه رو مشاهده کنید.

hf.farhadi
دوشنبه 18 اردیبهشت 1391, 22:10 عصر
با سلام
دوست عزیز امکانش هست که ورِِژن 2003 فایلت رو آپلود کنی

Hedesh
دوشنبه 18 اردیبهشت 1391, 23:49 عصر
ورژن 2003 .

Hedesh
سه شنبه 19 اردیبهشت 1391, 01:49 صبح
یا علی مدد
بازم یه مشکل دیگه
با عرض سلام و خسته نباشید
باید به عرضتون برسونم با یک مشکل دیگه مزاحم شدم اینم اینکه من تو دیتابیسی که دارم کار میکنم از جدول هایی استفاده می کنم که با هم ارتباط دارند Relation .
و بک آپ به خوبی صورت می گیرد ولی هنگام بازیابی اطلاعات فقط اطلاعات جدول هایی که در صدر ارتباطند منتقل می شود و جدول هایی که از این جداول تغذیه می کنند خالی می مانند.
من در ضمیمه دوفایل برای درک بهتر گذاشتم یکی بدون ارتباط و یکی با ارتباط.
آیا باید زمانی که جدول ها را insert TO میکنیم ترتیبی برای انتقال جدولها قرار بدیم یا یه کار دیگه ؟
ممنون میشم راهنمایی کنید؟
با تشکر

Hedesh
پنج شنبه 21 اردیبهشت 1391, 02:51 صبح
آخرین ورژن بک آپ فقط جدول و بازیابی فقط جدول با اصلاح نواقص در ضمیمه موجود می باشد.
فقط ذکر یک نکته الزامی است که من قبلا قسمت تاریخ گذاری شمسی آن را حذف کرده بودم
اگر کسی مایل بود به تاپیک های قبلی مراجعه و ماژول شمسی را به فایل موجود اضافه کند.

امیدوارم مفید واقع بشه.

com12151337
چهارشنبه 11 مرداد 1391, 18:18 عصر
جناب امیری سلام
بنده از تایپیک بکاپ در 2007 استفاده کردم آفیس من 2010 است و وقتی بکاپ اجرا میکنم در قسمت Dim fB As FileDialog روی filedialog خطا میگیرد و در قسمتی دوستمان hedesh شمسی را پاک نموده میخواستم ببینم در چه قسمتی از خطوط برنامه باید نوشته شود

Abbas Amiri
چهارشنبه 11 مرداد 1391, 18:27 عصر
اینجا دوستان دیگر هم هستند، خواهشمندم از لفظ دوستان سلام استفاده کنید.

com12151337
چهارشنبه 11 مرداد 1391, 18:41 عصر
دوستان سلام
چشم جناب امیری کمک کنید!

com12151337
پنج شنبه 12 مرداد 1391, 09:38 صبح
سلام دوستان
کسی کمک نمیکنه

com12151337
شنبه 14 مرداد 1391, 08:35 صبح
سلام دوستان
کمک کنید