سلام
خوب هستید
سعید جان jro یک کامپونته که برای کار با دیتا بیس توسط jet engine طراحی شده دقیقا مثل ado که چندین شی را همراه داره . بهتره بگیم یک کلاس که بصورت اکسترنال توسط معرفی به برنامه قابل دسترسی است . jro مخفف Jet and Replication Objects و این کامپونت داری دو شی JetEngine و Replica که هر کدوم دارای متدها و خواص مخصوص به خودشونن . البته به هم نیز شبیه هستند .اگر درست یادم مونده باشه Replica برای ساختن یک دیتا بیس از روی دیتا بیس دیگر با تفاوت های در ساختار دیتا بیس ها استفاده میشه . با این یکی کار نکردم و جایی هم چیزی ندیدم تا بیشتر در موردش توضیح بدم . فقط توی یک مقاله که درمورد کامپونت های دیتا بیسها در وی بی صجبت میکرد به این مطلب اشاره کرده بود. اما jetengine :
این شی برای کنترل با برنامه نویسی روی دیتا بیسها و لود مجدد و یا ریقرش کردن اطلاعات کش شده استفاده میشه . یکی از متدها این شی CompactDatabase که توسط اون دیتا بیس دیفراگ شده بهینه سازی میشه .
همانطور که گفتم وقتی شما اطلاعاتی را وارد دیتا بیس میکند . توی دیتا بیس یک سرفصل برای این اطلاعات یا ریکورد اضافه شده درست میشه . زیرا با این کار اطلاعات سریعتر دستیابی میشه و کنترل انها راحتره . اما هنگامی که اطلاعات را پاک میکنید فقط سرفصل یا هدر این ریکورد حذف میشه ولی اطلاعات اون توی دیتا بیس باقی می مونه . یعنی محل ای که اطلاعات توی دیتا بیس اشغال کرده بود یا با یک کارکتر غیر مجاز مثلا 0 پر میشه و یا اینکه همانطوری که هست توی دیتا بیس باقی میمونه . اگر انجین دیتا بیس بخواد اطلاعات بعدی را شیفت کنه باید تمامی هدرهای بعد از ریکوردی که دلیت شده را اپدیت کنه که این کار زمان بر و مشکل سازه و از طرف دیگه اگر بخواد از این فضا ها برای ریکورد های جدید استفاده کنه چون ممکنه که ریکورد جدید به مقدار فضای بیشتری احتیاج داشته باشه بازم این کار عملی نیست . لذا این فضا ها را نادیده می گیره که در کل باعث افزایش حجم دیتا بیس و کاهش سرعت دیتا بیس میشه . با استفاده از این متد میشه دیتا بیس جدید و رفرش شده ای را ساخت که حجم کمتری داره و هم اینکه سرعت استفاده از اون دیتا بیس بهتر میشه
نمیدونم تونستم حق مطلب رو به عمل بیارم یا نه؟
کدش با وی می میشه
کد:
Dim oJetEngineAs jro.JetEngine
dim DbstrCon01 as string
dim DbstrCon02 as string
Set oJetEngine= New jro.JetEngine
DbstrCon01 = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Yourdbpath
DbstrCon02 = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Yourdbpath & "02.mdb"
With oJetEngine
.CompactDatabase DbstrCon01,DbstrCon02
End With
filecopy Yourdbpath & "02.mdb,Yourdbpath
راستی یک نکته باید کانکشن به دیتا بیس بسته بشه و اگه درست کار نکرد این کامپونت به پروژه برنامتون اضافه کنید
Microsoft Jet and Replication Objects 2.x Library (Version 2.x)
امیدوارم کمک کنه