PDA

View Full Version : کد Compact



elham123
سه شنبه 27 فروردین 1387, 11:59 صبح
سلام
من یک دکمه ایجاد کردم که می خوام زیر این دکمه کد Compact & Repair را بنویسم که وقتی کلیک می کنم کار Compact & Repair را انجام دهد
اگه ممکنه کدشو بهم بگین ممنون می شم
ببخشید
متاسفانه خیلی جستجو کردم چیزهایی که بدست آوردم همش با اشکال برخوردم

shaghaghi
سه شنبه 27 فروردین 1387, 12:58 عصر
تا آنجا که اطلاع دارم انجام عمل Compact زمانیکه فایل شما در حالت اجرا است امکان پذیر نمی باشد
اما برای این منظور توصیه می کنم از منوی Tools گزینه Options را انتخاب کرده ، در برگه General گزینه: Compact On Close را فعال نمایید تا بعد از هر بار بسته شدن فایل شما، این عمل بصورت خودکار برای این بانک انجام شود.

amirzazadeh
سه شنبه 27 فروردین 1387, 13:23 عصر
سلام
من یک دکمه ایجاد کردم که می خوام زیر این دکمه کد Compact & Repair را بنویسم که وقتی کلیک می کنم کار Compact & Repair را انجام دهد
اگه ممکنه کدشو بهم بگین ممنون می شم
ببخشید
متاسفانه خیلی جستجو کردم چیزهایی که بدست آوردم همش با اشکال برخوردم
دوست من یک ماکرو sendkeysدرست کن وخاصیت keystroke را به صورت زیر تنظیم کن واون رو به on click باتن وصل کن

keystroks=%tdc

amirzazadeh
سه شنبه 27 فروردین 1387, 13:34 عصر
سلام
من یک دکمه ایجاد کردم که می خوام زیر این دکمه کد Compact & Repair را بنویسم که وقتی کلیک می کنم کار Compact & Repair را انجام دهد
اگه ممکنه کدشو بهم بگین ممنون می شم
ببخشید
متاسفانه خیلی جستجو کردم چیزهایی که بدست آوردم همش با اشکال برخوردم
این روش هم توسط کد اینکارو انجام میده

Function RepairDatabase(strSource As String, _
strDestination As String) As Boolean
' Input values: the paths and file names of
' the source and destination files.

' Trap for errors.
On Error GoTo error_handler

' Compact and repair the database. Use the return value of
' the CompactRepair method to determine if the file was
' successfully compacted.
RepairDatabase = _
Application.CompactRepair( _
LogFile:=True, _
SourceFile:=strSource, _
DestinationFile:=strDestination)

' Reset the error trap and exit the function.
On Error GoTo 0
Exit Function

' Return False if an error occurs.
error_handler:
RepairDatabase = False

End Function

این فانکشن توسط باتن فراخوانی کن وبه جای strsource و strdestination مسیر بانکت رو قرار بده مثال:

Private Sub Command27_Click()
Call RepairDatabase("c:\test.mdb", " c:\test.mdb")
End Sub

elham123
سه شنبه 27 فروردین 1387, 13:40 عصر
اون ماکرو که گفتین درست کنم درست کردم ولی کار COMpact & Repair را انجام نمی ده

این تابعی که نوشتین بنویسم در ON klik دکمه ؟

elham123
سه شنبه 27 فروردین 1387, 13:52 عصر
من معذرت می خوام تایپیکتون و نصفه دیده بودم الان متوجه شدم

amirzazadeh
سه شنبه 27 فروردین 1387, 13:54 عصر
اون ماکرو که گفتین درست کنم درست کردم ولی کار COMpact & Repair را انجام نمی ده

این تابعی که نوشتین بنویسم در ON klik دکمه ؟
ماکرو فقط زمانی عمل میکنه که شما از منوهای خود اکسس استفاده کنین و به عبارت دیگه منوی سفارشی نداشته باشین
کدvbنوشته شده رو توی یک ماژول جدید کپی کن و کد دومی رو توی on click باتن .
.................................................. .................................................. ..................
موفق باشید

elham123
سه شنبه 27 فروردین 1387, 14:00 عصر
ببخشید من همین کارا رو انجام دادم ولی روی کد زیر دکمه خطا می دهد

elham123
سه شنبه 27 فروردین 1387, 14:20 عصر
از کمکاتون ممنونم الان دیگه خطا نمی دهد همه مراحلو درست رفتم ولی عملا کار Repair را انجام نمی دهد

amirzazadeh
سه شنبه 27 فروردین 1387, 14:20 عصر
ببخشید من همین کارا رو انجام دادم ولی روی کد زیر دکمه خطا می دهد
کد باتن رو مجددا ببین در ضمن سعی میکنم در اولین فرصت یک نمونه آماده کنم

elham123
سه شنبه 27 فروردین 1387, 14:21 عصر
آقای امیر من خیلی راهها رفتم ولی عملا کاری انجام ندادند اگه نمونه بگذارید بی نهایت ازتون سپاسگذارم

amirzazadeh
سه شنبه 27 فروردین 1387, 23:48 عصر
آقای امیر من خیلی راهها رفتم ولی عملا کاری انجام ندادند اگه نمونه بگذارید بی نهایت ازتون سپاسگذارم
این نمونه با استفاده از خاصیت send keys آماده شده امیدوارم به دردتون بخوره .(در مورد کدی که براتون ارسال کردم باید بگم که متاسفانه این کد و سایر کدهایی توی منابع مختلف دیدم همگی به صورت offline عمل میکنند یعنی اینکه دیتابیسی که میخواهیم کامپکت بشه باید بسته باشه )

amirzazadeh
چهارشنبه 28 فروردین 1387, 12:19 عصر
آقای امیر من خیلی راهها رفتم ولی عملا کاری انجام ندادند اگه نمونه بگذارید بی نهایت ازتون سپاسگذارم
دوست من این کد هم همون کار رو انجام میده کد رو توی رویداد on click یک باتن کپی کن

Private Sub CompactDB_Click()
On Error GoTo Err_CompactDB_Click

CommandBars("Menu Bar"). _
Controls("Tools"). _
Controls("Database utilities"). _
Controls("Compact and repair database..."). _
accDoDefaultAction

Exit_CompactDB_Click:
Exit Sub

Err_CompactDB_Click:
MsgBox Err.Description
Resume Exit_CompactDB_Click

End Sub

elham123
پنج شنبه 29 فروردین 1387, 10:40 صبح
بازم سلام
این کدی که نوشتید را وقتی دکمه را کلیک می کنم برنامه خارج می شم و دوباره باز می شود و قبل از باز شدن این خطای زیر را نمایش می دهدپ

If Your Running a Visual Basic Module That is Using Ole Or DDe , You May to interrupt the module

elham123
پنج شنبه 29 فروردین 1387, 10:50 صبح
لازم به توضیح هست که این کد بالا که نوشتم زیر دکمه وقتی دکمه رو می زنم عملا کار Repair را انجام می دهد فقط وقتی بشته می شود دوباره باز می شود این خطای بالا ذکر کردم می آید اگه راه حل خطای ذکر شده پیدا شود دیگه مشکل حله

davood-ahmadi
پنج شنبه 29 فروردین 1387, 11:59 صبح
احتمالاً یکی از آبجکتهای شما باز است و نمی تواند آنرا ببندد. سعی کنید از هر آبجکتی که دارید استفاده می کنید آنرا ببندید.

amirzazadeh
پنج شنبه 29 فروردین 1387, 12:08 عصر
بازم سلام
این کدی که نوشتید را وقتی دکمه را کلیک می کنم برنامه خارج می شم و دوباره باز می شود و قبل از باز شدن این خطای زیر را نمایش می دهدپ

If Your Running a Visual Basic Module That is Using Ole Or DDe , You May to interrupt the module
اگر ممکنه دیتابیستون رو آپلود کنین.

elham123
شنبه 31 فروردین 1387, 11:10 صبح
اینم برنامه
ممنون از کمکتون

amirzazadeh
شنبه 31 فروردین 1387, 12:18 عصر
اینم برنامه
ممنون از کمکتون
من چندین بار امتحان کردم ولی خطایی رو که شما ذکر کردین ندیدم .به عنوان یک پیشنهاد ماکرو exit فرم اصلی رو غیر فعال کنین چون اکسس موقع خروج عمل ذخیره رو انجام میده.
......................................
موفق باشید

shayestegan
یک شنبه 16 مرداد 1390, 10:00 صبح
کافیه کد زیر را در باتن خروج از برنامه قرار دهی:
Application.SetOption "Auto Compact", True