در هنگام آپدیت دو حالت وجود داره آپدیت فایل EXE و آپدیت بانک اطلاعاتی
برای آپدیت فایل exe کافی آپدیت جدید رو به مشتری بدید با کپی کردن حل میشه
اما بانک اطلاعاتی:
شما میتونید از دو روش استفاده کنید
1-اینکه مشتری یک بکاپ براتون بفرسته (با ایمیل یا هرچی) و شما تغییرات رو اعمال کنید و فایل جدید رو بهش پس بدید
2-یه برنامه جدا به نام آپدیت بنویسید تا به صورت نرم افزاری تغییرات رو اعمال کنه(با کد نویسی)
البته روش اول راحتره ولی دردسر انتقال فایلش بیشتره
روش دوم کارایی بهتری داره و دانش بیشتری تو تغییرات در بانک میخواد
چند تا نکته:
1- هرگز ساختار جداولتان را تغيير ندهيد
2- ايندكس هاي يونيك را به هيچ عنوان تغيير ندهيد
3 - براي ارتقاء حتي الامكان سعي كنيد از جداول جديد استفاده كنيد ، مگر اينكه نشود يا سربار پردازشي بصورت چشمگيري بالا برود
4- ويو ها ، توابع ، پروسيجرهاي ذخيره شده را با خيال راحت تغيير دهيد و از تغيير در آنها نترسيد !
جهت ارتقاء نياز داري كه هر نسخه از ديتابيست رو بتوني تشخيص بدي ، خيلي روي اين نكته دقيق باش . بايد در يك نقطه از ديتابيس ورژن رو ذخيره كني حالا ميخواد جدول تنظيمات باشه يا هر كجاي ديگه
مثال:
فرض کنید بانک شما احتیاجات زیر رو جهت آپدیت داره:
اضافه کردن فیلد X5 به جدول X
حذف کردن فیلد Y4 از جدول Y
روش اول : یه بکاپ از مشتری رو میگری اون تو سیستم خودت تو محیط SQL SERVER بصورت دستی دو کار بالا رو انجام میدی و بعد بکاپ رو به مشتری پس میدی و تغییرات اعمال میشه
روش دوم : یک فایل exe جهت آپدیت ایجاد میکنی و تغییرات بالا رو با کد نویسی اعمال میکنی و فقط کافی این فایل رو مشتری بدی و وقتی اونو اجرا میکنه برنامه تغییرات رو تو بانک اعمال میکنه
روش اول زیاد اطلاعات آنچنانی نمیخواد فقط یکم دردسر داره
ولی روش دوم کارایی بیشتری داره و اطلاعات نسبتا بیشتری میخواد (البته نه زیاد)
یک نمونه:
فرض کنید شما قرار عملیات زیر رو جهت آپدیت انجام بدید
1-خالی کردن جدول TableName
2-صفر کردن شماره AutoNumber
3- حذف ستون X1
4-ایجاد ستون Y1
با نمونه کد زیر تمام اینکارها به صورت اتوماتیک توسط فایل آپدیت شما انجام میشه
Dim CmdInsert As New OleDbCommand
AccessCon.Open()
‘**** 1 اجرای مرحله
CmdInsert = New OleDb.OleDbCommand(“DELETE FROM TableName”, AccessCon)
CmdInsert.ExecuteNonQuery()
‘**** 2 اجرای مرحله
CmdInsert = New OleDb.OleDbCommand("Alter Table TableName Alter COLUMN ID counter(1)", AccessCon)
CmdInsert.ExecuteNonQuery()
‘**** 3 اجرای مرحله
CmdInsert = New OleDb.OleDbCommand("Alter Table TableName DROP COLUMN X1", AccessCon)
CmdInsert.ExecuteNonQuery()
‘**** 4 اجرای مرحله
CmdInsert = New OleDb.OleDbCommand(“Alter Table TableName ADD COLUMN Y1 Text”, AccessCon)
CmdInsert.ExecuteNonQuery()
امیدوارم مشکلت حل بشه اگه منظورت هم این نیست میتونی توضیحات بیشتری بدی تا بهتر بشه راهنمایتون کرد