PDA

View Full Version : کامپکت کردن بانک اکسس در و رفع مشکل مربوط به آن Dao



unforgiven
سه شنبه 29 شهریور 1384, 08:19 صبح
سلام دوستان
من وقتی از داخل برنامه سعی میکنم کامپکت دیتا بیس رو اجرا کنم این ایررور را مده
you attemptd to open database this already open exclusivly by user admin
فکر می کنم که میگه بانک بسته نشده و توسط ادمین استفاده میشه
هر کاری میکنم باز این مشکل هست
لطفا بگید چیکار کنم
چطوری بانک همو ببندم
یا اگه کدی در مورد کامپکت کردن بانک دارید بزارید
بانک اکسس
نوع Dao
متشکرم

PalizeSoftware
سه شنبه 29 شهریور 1384, 12:32 عصر
دوست عزیز ارتباط خود را با بانک ببندید که شامل connectionها است.
اگر مشکلی بود دستورات خود را اینجا قرار بدید تا بیشتر کمک کنم.
موفق باشید.

bachemosbat
چهارشنبه 30 شهریور 1384, 03:43 صبح
و ممکنه خود فایل توی اکسس باز باشه

PalizeSoftware
چهارشنبه 30 شهریور 1384, 03:51 صبح
دقیقا این هم ممکنه
همه ارتباط‌ها رو ببندید چه از داخل برنامه خودتون و چه در بیرون توسط اکسس
بعد ببینید باز مشکل پیش میاد. اگر مشکلی بود بهتره این بخش از کد رو اینجا قرار بدید تا ببینم.
موفق باشید

ehsan_ansaripoor
چهارشنبه 30 شهریور 1384, 19:41 عصر
دوست عزیز اگر از اگر Database ها را به صورت متغییر تعریف می کنی باید بعد از انجام کار اون ها را به این صورت ببندی
dim db as databse
...
...
...
db.close
set db=nothing

unforgiven
پنج شنبه 31 شهریور 1384, 07:34 صبح
سلام
دوستان عزیز من در برنامه ام میتونم بانک های دیگه رو کامپکت بکنم ولی در بانک خودم این پیغام رو میده

ظمنا بانکم هم به وسیله برنامه دیگری باز نیست

ehsan_ansaripoor
پنج شنبه 31 شهریور 1384, 23:52 عصر
دوست عزیز برای اینکه مطمئن بشی بانکت توسط برنامه باز است یا نه زمانی که می خواهی کامپونت را اجرا کنی ببین فایل تمپی که در زمان باز بودن بانک درست میشه کنار فایلت هست یا خیر یا یک کپی از بانکت تهیه کن و قبل از کامپونت سعی کن فایل بانکت را پاک کنی

unforgiven
یک شنبه 03 مهر 1384, 07:18 صبح
سلام به همه
وقتی برنامه اجرا میشه یه فایل تمپ بانک ایجاد میشه

ehsan_ansaripoor
یک شنبه 03 مهر 1384, 16:33 عصر
دوست عزیز پس بانکت بازه ابتدا باید جایی که بانک بازه را ببندی بعد Compact کنی

unforgiven
سه شنبه 05 مهر 1384, 08:12 صبح
سلام به دوستان عزیز
من خیلی تلاش کردم ولی موفق نشدم
این کد رو میزارم تا روش نظر بدبد و اگه مشکل داره راهنمایی کنید
سپاسگزار

Private Sub Command1_Click()
On Error GoTo ErrH
Set db = OpenDatabase(App.Path & "\storage.mdb")
'Set rs = db.OpenRecordset("info")
'If rs.RecordCount > 0 Then
rs.Close: Set rs = Nothing: db.Close: Set db = Nothing
DBEngine.CompactDatabase (DbFileName), (App.Path & "\tempdb.mdb"), dbLangGeneral
Kill (DbFileName)
DBEngine.CompactDatabase (App.Path & "\tempdb.mdb"), (DbFileName), dbLangGeneral
Kill (App.Path & "\tempdb.mdb")
MsgBox " بانک اطلاعاتی برنامه با موفقیت فشرده و بهینه سازی شد ", vbInformation, " توجه "
Exit Sub
'End If

ErrH:
MsgBox Err.Description, vbCritical, "Compact Database."
Err.Clear
End Sub

ehsan_ansaripoor
چهارشنبه 06 مهر 1384, 16:58 عصر
دوست عزیز اصلا احتیاج به باز کردن بانک و شرط گذاشتن نیست این کد را تست کن:
DBEngine.CompactDatabase App.Path & "\tempdb.mdb",App.path & "\temppdb2.mdb" 1
reset
Filecopy App.path & "\temppdb2.mdb",App.path & "\temppdb.mdb" 3
reset
kill app.path & "\temppdb2.mdb" 5
البته شماره ها برای نمایش بهتره کده

MM_Mofidi
جمعه 08 مهر 1384, 04:41 صبح
این کارو چطور با vba از داخل خود mdb فایل در حال اجرا انجام بدیم؟ کسی راه حلی به نطرش میرسه؟
یعنی کاربر داره برنامه را استفاده میکنه امکانی برای compact & repair داشته باشه
البته غیر از domenueItem ;)

unforgiven
چهارشنبه 13 مهر 1384, 08:22 صبح
سلام
کسی میتونه به سوال آقای مفیدی جواب بده؟ چون سوال ایشون سوال منم هست
متشکرم
مشکل وجود همون فایل تمپ بانک اطلاعاتی هست

ehsan_ansaripoor
چهارشنبه 13 مهر 1384, 16:51 عصر
دوست عزیز منظور از اینکه کاربر داره برنامه را استفاده می کنه یعنی اینکه برنامه در حال اجرا باشه یا بانک اطلاعاتی باز باشه اگه برنامه در حال اجرا باشه که خب مشکلی نیست (#11 را تست کنید) ولی زمانی که بانک اطلاعاتی باز باشه بعید می دونم

MM_Mofidi
جمعه 15 مهر 1384, 18:52 عصر
در مورد mdb فابلها UID و DB یکی است فکر کنم باید یه اسکریپت ایجاد بشه و مشخصات db بعنوان پارامتر به اون پاس بشه اون db را ببنده بعد C&R بکنه بعد دوباره بازش کنه و خودشو kill کنه.
هرچند راه قشنگی نیست ولی باید جواب بده