• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

کاهش حجم در بانک اطلاعاتی اکسز

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
ببخشی من باز تاپیک زدم.آخه مشکلات زیادن ..زندگی مشکل شده!
خلاصه و مفید

1. میشه تو دات نت به صورت حلقه مثلا برا 100 نفر یا حتی بیشتر ایمیل ارسال کرد؟یعنی لیست ایمیل ها رو از بانک اطلاعاتی بخونم و به طور حلقه ارسال کنم!...

2. وقتی تو تکست باکس از تگ الستفاده میکنم مثلا <...> یعنی هرچیزی بین این دو (<>) باشه، ارر میده.یعنی حتی نمیزاره سمت سرور کنترل کنم مقدارش رو.قورا ارر میگیره.لطفا راهنمائی کنید..میخوام کسی نتونه ...

3. دوستان موقع آپدیت یه فیلد مثلا اگه حجم تکست های در اون 20 کیلوبایت باشه، و من 15 کیلوبایت جایگزین اون کنم،15 کیلوبایت به حجم بانک اضافه میشه، درصورتی که باید 5 تاهم کم شه.دلیل چیه؟!! اینطور بگم حجم بانک اطلاعاتی من فقط یاد گرفته زیاد شه.تو یه فیلد 50 KB متن بریزم، وقتی مقدار فیلد رو خالی کنم، دیگه 50 KB از حجمش کم نمیشه.خیلی نگرانم کرده...

منتظرم......جوابای غنی میخوامااا...همونطور که تا الآن بوده....
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
شروین جان من این کد رو برا صفحه ای که توش ادیتور دارم قبلا استفاده کردم.ولی میخوام صفحه ای که توش تکست باکس هست رو نزارم توش تگ وارد کنن.یعنی جلوش روبگیرم.با این که راحت هر تگی بخوان سند میکنن...

من 2 سوال دیگه هم داشتمااا

1. میشه تو دات نت به صورت حلقه مثلا برا 100 نفر یا حتی بیشتر ایمیل ارسال کرد؟یعنی لیست ایمیل ها رو از بانک اطلاعاتی بخونم و به طور حلقه ارسال کنم!...

3. دوستان موقع آپدیت یه فیلد مثلا اگه حجم تکست های در اون 20 کیلوبایت باشه، و من 15 کیلوبایت جایگزین اون کنم،15 کیلوبایت به حجم بانک اضافه میشه، درصورتی که باید 5 تاهم کم شه.دلیل چیه؟!! اینطور بگم حجم بانک اطلاعاتی من فقط یاد گرفته زیاد شه.تو یه فیلد 50 KB متن بریزم، وقتی مقدار فیلد رو خالی کنم، دیگه 50 KB از حجمش کم نمیشه.خیلی نگرانم کرده...

تا الآن فقط 2 روجواب دادین

منتظر 1و 3هستممممممممم
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
شروین جان من این کد رو برا صفحه ای که توش ادیتور دارم قبلا استفاده کردم.ولی میخوام صفحه ای که توش تکست باکس هست رو نزارم توش تگ وارد کنن.یعنی جلوش روبگیرم.با این که راحت هر تگی بخوان سند میکنن...

من 2 سوال دیگه هم داشتمااا

1. میشه تو دات نت به صورت حلقه مثلا برا 100 نفر یا حتی بیشتر ایمیل ارسال کرد؟یعنی لیست ایمیل ها رو از بانک اطلاعاتی بخونم و به طور حلقه ارسال کنم!...

3. دوستان موقع آپدیت یه فیلد مثلا اگه حجم تکست های در اون 20 کیلوبایت باشه، و من 15 کیلوبایت جایگزین اون کنم،15 کیلوبایت به حجم بانک اضافه میشه، درصورتی که باید 5 تاهم کم شه.دلیل چیه؟!! اینطور بگم حجم بانک اطلاعاتی من فقط یاد گرفته زیاد شه.تو یه فیلد 50 KB متن بریزم، وقتی مقدار فیلد رو خالی کنم، دیگه 50 KB از حجمش کم نمیشه.خیلی نگرانم کرده...

تا الآن فقط 2 روجواب دادین

منتظر 1و 3هستممممممممم
1. بله، چرا نشه ؟

3. این مشکل رو access داره، میتونین حجم اون رو از طریق خود نرم افزار access کم کنین.
Tools -> Databse Utilities -> Compact and Repair
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
یعنی چی؟
یعنی من بانک اکسزم رو بزارم رو هاست ،هر چند وقت یه بار

Tools -> Databse Utilities -> Compact and Repair

رو انجام بدم؟
هیچ راهی نداره؟!!
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
یعنی چی؟
یعنی من بانک اکسزم رو بزارم رو هاست ،هر چند وقت یه بار



رو انجام بدم؟
هیچ راهی نداره؟!!
میشه با کامپوننت های خودش این کار رو انجام داد به شرط اینکه نصب باشه، که اکثرا رو هاست ها نصب نیست.


البته این افزایش حجم به خاطر نوع فیلد های تعریف شده هم میتونه باشه.
مثلا همه رو Memo انتخاب کنید، حجم بالا میره ..
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
نه نت فقط فیلدی که قراره بهش پست ارسال کنم رو Memo گذاشتم

در مورد کامپوننت ها هم که گفتینمیشه خودمون با برنتامه سمت سرور نصب کنیم و ازش استفاده کنیم؟اگه اره تو چه فایلهائیش تعریف شدن..؟!
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
نه نت فقط فیلدی که قراره بهش پست ارسال کنم رو Memo گذاشتم

در مورد کامپوننت ها هم که گفتینمیشه خودمون با برنتامه سمت سرور نصب کنیم و ازش استفاده کنیم؟اگه اره تو چه فایلهائیش تعریف شدن..؟!



خوب طبیعتا ، میخواین با asp.net این کار رو انجام بدید، حواسم نبود فکر کردم جریان asp 3.0 هست. :دی

تو asp.net میتونین فایل های dll رو که نیاز دارید برا استفاده و instance گرفتن، به همراه سایت upload کنید..

پس برا این کار اول باید یک reference اضافه کنیم.

منو website و بعد Add Reference

حالا باید از قسمت COM این فایل رو پیدا کنید و اضافه کنید:
Microsoft Jet and Replication Objects Library msjro.dll

این فایل در فلدر bin اضافه شد.

حالا کدنویسی:

( البته این کد رو من تو ASP استفاده میکردم و به سبک کلاسیک نوشته شده، البته با .net هم تست کردم. )

کد:
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim oldDB As String = Server.MapPath("test.mdb")
        Dim bakDB As String = Server.MapPath("TestBack.mdb")
        Dim newDB As String = Server.MapPath("testCompact.mdb")

        Dim FSO = CreateObject("Scripting.FileSystemObject")

        ' back up database 

        FSO.CopyFile(oldDB, bakDB, True)

        ' compact database 

        Dim Engine = CreateObject("JRO.JetEngine")
        Dim prov = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
        Engine.CompactDatabase(prov & OldDB, prov & newDB)
        Engine = Nothing

        ' delete original database 

        FSO.DeleteFile(oldDB)

        ' move / rename our new, improved, compacted database 

        FSO.MoveFile(newDB, oldDB)
        FSO = Nothing

    End Sub

البته حواسمون به persmission های لازم هم هست :)
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
تست میکنم...

Microsoft Jet and Replication Objects Library 2.6 library
فقط این در لیست بود
در ضمن من از ADODB استفاده میکنم.وقتی اینو اضافه کردم از RECORDSET و... که مربوط به استصال های اون هست ارر گرفت...

اگه هم ممکنه کد رو توضیح بدید بدونم چه خبره...
مخصوصا
Dim bakDB As String = Server.MapPath("TestBack.mdb")

که کارش چیه
همرو توضیح بدین ممنون میشم
 

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
تست میکنم...

Microsoft Jet and Replication Objects Library 2.6 library
فقط این در لیست بود
در ضمن من از ADODB استفاده میکنم.وقتی اینو اضافه کردم از RECORDSET و... که مربوط به استصال های اون هست ارر گرفت...

اگه هم ممکنه کد رو توضیح بدید بدونم چه خبره...
مخصوصا
Dim bakDB As String = Server.MapPath("TestBack.mdb")

که کارش چیه
همرو توضیح بدین ممنون میشم
این کد رو در یک page جدا بنویسید که با button click مثلا ، اجرا شه.. شما نباید بعد از هر transaction ، دیتابیس رو compact کنین که. هر از چند گاهی این کار لازمه.

این کد هم در کل ، بدین صورت عمل میکنه:

شما فرض کن اسم دیتابیس test هست.
این برنامه اول از test یه کپی به اسم testback میگیره.
در مرحله بعد ، دیتابیس رو compact میکنه و با اسم testcompact ذخیره میکنه.
حالا test رو پاک میکنه.
و در آخر testcompact رو به test ، تغییر نام میده.
خیلی ساده :دی
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
وقتی اول کدها رو خوندم متوجه نشدم اخه خیلی عجله داشتم
بعد یه کم نگاش کردم متوجه شدم...به هرحال ممنون بازم توضیح دادی
فقط من کد VB اون رو میزارم،امید اینکه مفید باشه...

Dim oldDB As String = Server.MapPath("addlist.mdb")
Dim bakDB As String = Server.MapPath("Backup Of Addlist.mdb")
Dim newDB As String = Server.MapPath("temp.mdb")

'back up database
File.Copy(oldDB, bakDB, True)

'Sakhte Database Jadid
Dim convert As New JRO.JetEngine
Dim prov As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Convert.CompactDatabase(prov & oldDB, prov & newDB)
Convert = Nothing
'Hazfe Database Ghabli
File.Delete(oldDB)
File.Move(newDB, oldDB)

البته وارد کردن System.IO فراموش نشه

جسارت نباشه!، برا 4 تا مثل خودم گذاشتم که...

Graveworm عزیز بازم مرسی
 
بالا