به نقل از mostafa_gm :اگه منظورت تو ویژوال بیسیکه کدش اینه:
DBEngine.CompactDatabase App.Path & "\Base.mdb", App.Path & "\db\Base.mdb"
و اگه دیتابیست پسورد داره:
DBEngine.CompactDatabase App.Path & "\Base.mdb", App.Path & "\db\Base.mdb", , , ";pwd=yourpassword"
به همین سادگی!
این کدها برای DAO هستش و اگه بخوای با ADO اين كارو انجام بدي بايد ServicePack6 ويژوال استوديو رو حتمآ نصب كرده باشي تا با استفاده از Microsoft.Jet.OLEDB.4.0 و كتابخانه JRO اين كارو بكنه چون Microsoft.Jet.OLEDB.3.5.1 قابليت فشرده سازي رو تو ADO نداره.
کدش هم اینه:
Dim jro As jro.JetEngine
Set jro = New jro.JetEngine
jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\nwind2.mdb;Jet OLEDBatabase Password=test", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\abbc2.mdb;Jet OLEDB:Engine Type=4;Jet OLEDBatabase Password=test"
اين موضوع پريدن برق در هر لحظه اي ممكنه اتفاق و كلا MDB خيلي راحت ممكنه خراب بشه حتي اگر هم برق نره - بعنوان مثال در محيط شبكه كه بيش از يك كاربر باهاش كار ميكني اگر يكي اتصال شبكه اش در حين نوشتن اطلاعات قطع و وصل بشه در كار ديگران هم اخلال ايجاد ميكنه و ممكنه برنامه ACCESS روي همه كامپيوترها قفل كنه. در اينحالت اين امكان هست كه بعد از ريستارت كامپيوترها يا ACCESS اطلاعات شما Corrupt بشه كه ممكنه حتي با Compact & Restore هم برنگرده يا در صورت برگشت كامل نباشه و ركوردهايي رو از دست بدي (معمولا آخرين ركورد ولي حسابي در كار نيست و از همه بدتر نميفهمين چه ركوردهايي پريده!)به نقل از Piter1356 :یعنی اگه وسط پروسه برق بره فایلمون که پریده . یه روش مطمئن تر سراغ نداری ؟
CommandBars("Menu Bar").Controls("Tools").Controls("Database utilities").Controls("Compact and repair database...").accDoDefaultAction
به نقل از Piter1356 :کد:CommandBars("Menu Bar").Controls("Tools").Controls("Database utilities").Controls("Compact and repair database...").accDoDefaultAction
این کد زمانی عمل میکنه که Access رو نصب کرده باشیم . من فقط از بانک mdb استفاده می کنم . حتی اگر access رو سیستم نباشه برنامه کار میکنه . حالا میخوام در صورتی که access هم نصب نبود این فرمان بدون مشکل کار کنه
واقعیت اینه که من یه برنامه برای جایی نوشتم . بانکش mdb یه . چند وقت پیش یه سری زدم ببینم چه خبره . دیدم تنها مساله ای که وجود داره زیاد شدن بی حساب کتاب حجم فایل mdb یه .
حالا اگه فایل توسط کنترلهای adodc باز باشه باز هم میتونیم کامپکت اند ریپیرش کنیم یا نه ؟
به نقل از mostafa_gm :من خودم يه فايل جدا براي اين كار درست كردم كه كاربر هر وقت خواست backup بگيره دستي ديتابيس رو compact كنه يا اينكه هر وقت حجم اون خيلي زياد شد اين كارو بكنه.
متاسفانه مشكليه كه وجود داره، كاريش هم نميشه كرد اگه ميخواي داخل برنامه اين كار انجام بشه در حالي كه دیتابیس بازه باید از DAO استفاده کنی.به نقل از Piter1356 :اینجوری که آبروریزیه . :blink:
آخه نمیگن اگه قراره دستی کامپکت اند ریپیر کنیم برنامه چیکارس ؟
به نقل از mostafa_gm :متاسفانه مشكليه كه وجود داره، كاريش هم نميشه كرد اگه ميخواي داخل برنامه اين كار انجام بشه در حالي كه دیتابیس بازه باید از DAO استفاده کنی.