PDA

View Full Version : الصاق نسخه تغییر یافته(جدیدتر) به نسخه قدیمی در حال کار



amrabady
یک شنبه 25 اردیبهشت 1384, 23:54 عصر
سلام
اول یه مقدمه کوچولو:
من یه پروژه بانک اطلاعات پرسنلی دارم که تحویل دادم و دارن اطلاعات وارد اون میکنن.
حالا درخواست نسخه جدید با امکانات جدید دادن که براشون طراحی کنم.
خوب طبعا وقتی نسخه جدید آماده می شه باید اطلاعات را از نسخه قبلی وارد جدیدی بکنیم(یعنی همون جداول اصلی)
این کار را خودم خیلی راحت می تونم در زمان کوتاهی انجام بدم(جدولهای بانک قدیمی را در بانک جدید ایمپورت کنم)
اما می خوام که یه کم با کلاس تر باشه.
سوال اصلی:
چطور می تونم یه دکمه در یک فرم طراحی کنم که با زدن اون، جداول بانک قدیمی به بانک جدید منتقل بشه؟

در ضمن من علی رغم تسلط به طراحی گرافیکی بانک، خیلی با ماژول نویسی میونه ندارم.

maleki
دوشنبه 26 اردیبهشت 1384, 15:42 عصر
خب اول یه کد باید بنویسی که جداول موجود در بانک جدیدت حذف بشن چون میدونی که اگه یه جدول رو اگر importکنی و همنامش وجود داشته باشه جدول قبلی پاک نمیشه بلکه جدول import شده یک عدد به انتهای اسمش اضافه میشه.
دوم باید یه کد بنویسی که اون جداول قدیمی رو import کنه
اما روش سادش استفاده از ماکروهاست
یه ماکرو درست کن خط اولش فرمان Setwarning رو انتخاب کن و مقدارش رو بذاز همون No باشه خط دومش فرمان DeleteObject رو انتخاب کن و پارامترهاش رو به جدول موجود روی بانک جدیدت تنظیم کن این خط رو به تعداد جدولای توی بانک جدید انجام بده در پایان اینها یک خط دیگه درست کن با انتخاب فرمان Tranfser DataBase و پارامترهای اون روهم تنظیم کن از قبیل بانک مبدا -بانک مقصد-نوع شی که میخواهی Import (جدول یا فرم یا...) و در پایان یک خط جدید اضافه کن و setwarning رو انتخاب کن و مقدارش رو Yes بزار (setwarning نمایش پیام های هشدار Access رو فعال یا غیر فعال میکنه).همین

داود شهبازی
دوشنبه 26 اردیبهشت 1384, 16:09 عصر
سلام
اگر بدون استفاده از کد بخواهید عمل IMPORT یا EXPROT را انجام دهید
از ماکروی TransferDatabase استفاده کنید ولی کد نمونه ان هم به این صورت است

DoCmd.TransferDatabase acImport, "Microsoft Access", "D:\ACC\YEAR83", acTable, "D_SANAD", "D_SANAD", False

همانطور که دوستمون هم توضیح کامل داده در مثال زیر کدهای لازم برای پاک کردن بانکهای موجود پیش بینی شده با این تفاوت که بانکهایی که در زیر امده از نوع dbf است


Private Sub Command11_Click()
DoCmd.Echo True, "لطفا صبر کنید ..."
With Application.FileSearch
.NewSearch
.LookIn = Me![Text0]
.SearchSubFolders = True
.FileName = Me![Text6]
.MatchAllWordForms = True
If .Execute() > 0 And Right(Trim(Me![Text6]), 3) = "dbf" Then
DoCmd.DeleteObject acTable, "D_SANAD"
DoCmd.TransferDatabase acImport, "dBase IV", Text0, acTable, Text6, "D_SANAD", False
Else
MsgBox " فایل و مسیر مورد نظر وجود ندارد ، لطفا مسیر و نام فایل را کنترل فرمایید ", vbMsgBoxRight, "!خطا"
If Right(Trim(Me![Text6]), 3) <> "dbf" Then
MsgBox " قالب فایل مورد نظر مورد قبول نیست ", vbMsgBoxRight, "توجه"
End If
End If

End With

DoCmd.Close
End Sub

amrabady
دوشنبه 26 اردیبهشت 1384, 22:45 عصر
دوستان عزیز
از هر دوی شما بزرگواران متشکرم

esmaeil110
چهارشنبه 15 اسفند 1386, 15:14 عصر
با تشکر از شما بزرگواران.
مشکلی که در این روش وجود دارد این است که کد فوق جدولهایی را که دارای ارتباط هستند نمی تواند حذف کند و با اشکال روبه رو می شود لطفا راهنمایی بفرمائید.