کامپکت کردن اکسس

پشتیبان گیری از جداول و کامپکت کردن Back End فایل اکسس

کامپکت کردن اکسس

قبلا در مورد خاصیت Auto Number و ضرورت کامپکت کردن فایل اکسس صحبت کرده ایم و امروز می خواهیم پیرامون بهینه سازی اکسس فایل جداول برنامه که جدا هستند را بهینه سازی ( Compact And Repair ) کنیم . به شیوه ای که کاربر متوجه آن نشود و اگر فایل جداول پسورد هم داشت ، نیازی به وارد کردن آن نباشد .

مراحل Compact And Repair ( بهینه سازی ) جداول متصل اکسس با کدنویسی.

1- در برنامه خود یک فرم ایجاد کنید که Unbound باشد. ( به هیچ جدول یا کوئری متصل نباشد.)

2- یک دکمه در آن قرار دهید و یک TextBox کع نتیجه مانند تصویر زیر می شود.

بهینه سازی اکسس
بهینه سازی اکسس

3- در رویداد OnClick دکمه خود کدهای زیر را قرار دهید .

    On Error GoTo SubError
    Dim strDatabaseName As String
    Dim X As Boolean
    Dim intCount As Integer
    Dim DbPWD As String
    Dim fso As FileSystemObject
    'Sever connection to backend before compacting
    intCount = Forms.Count - 1
    For intIndex = intCount To 0 Step -1
        If Forms(intIndex).Name <> "frmCompact" Then
            DoCmd.Close acForm, Forms(intIndex).Name
        End If
    Next intIndex

    'Get database fullpath and password  (passing DbPWD ByRef by default)
    strDatabaseName = CurBackEnd("tblContacts", DbPWD)
    If strDatabaseName = "" Then
        MsgBox "Cannot compact database, invalid file name for backend.  Contact programmer.", _
            vbOKOnly, "Error compacting database"
        Exit Sub
    End If
       
    Set fso = New FileSystemObject
    fso.CopyFile strDatabaseName, CurrentProject.Path & "\Backup\" & CurrentProject.Name & "-" & Format(Now, "yyyymmdd-hhmmss") & ".accdb", True
    Set fso = Nothing
       
    X = CompactDatabase(strDatabaseName, DbPWD)
    
    If X = False Then
        MsgBox "Error compacting database.", vbCritical + vbOKOnly, "Error compacting database"
    Else
        MsgBox "عملیات موفقیت آمیز بود", vbInformation + vbOKOnly, "Officebaz.ir"
    End If
    
SubExit:
    Exit Sub

SubError:
    MsgBox "frmMainMenu - cmdCompact_Click error: " & vbCrLf & Err.Number & " = " & Err.Description
    Resume SubExit

 

امکانات دلخواه :

اگر دوست داشتید در یک تکست باکس مسیر حاوی فایل متصل نمایش داده شود . کد زیر را در رویداد OnLoad فرم خود قرار دهید.

درواقع کد زیر مسیر فایل متصل فعلی را در تکست باکس TxtLink نمایش می دهد.

Dim strSource As String
strSource = Split(Split(CurrentDb.TableDefs("tblContacts").Connect, "Database=")(1), ";")(0)
Me.txtLink = strSource

4- یک ماژول با هر نامی که دوست داشتید ایجاد کرده و کدهای زیر را در آن قرار دهید.

 

Option Compare Database

Public Function CurBackEnd(TableName As String, DbPWD As String) As String
    On Error GoTo SubError
    Dim tdf As DAO.TableDef
    Dim lenPath As Integer
    Dim strPath As String
    Dim i, j As Integer
        
    CurBackEnd = ""
       
    '  Loop through all tables in the database.
    For Each tdf In CurrentDb.TableDefs
        If InStr(tdf.Name, TableName) Then
            strPath = tdf.Connect       '   this is the table that we are hunting for
            lenPath = Len(strPath)
            '     Now remove the datebase prefix (DATABASE=)
            j = InStr(strPath, "DATABASE=") + 9
            CurBackEnd = Mid(strPath, j, lenPath - j + 1)
            '            Get database password
            j = InStr(strPath, "PWD") + 4
            k = InStr(j, strPath, ";") 'length of password
            DbPWD = Mid(strPath, j, k - j)
            GoTo SubExit
        End If
    Next tdf
            
SubExit:
    On Error Resume Next
    Exit Function

SubError:
    MsgBox "frmCompaction - CurBackEnd error: " & vbCrLf & Err.Number & " = " & Err.Description
    Resume SubExit

End Function

Public Function CompactDatabase(DatabaseName As String, DbPWD As String) As Boolean
    On Error GoTo SubError
    Dim booStatus As Boolean
    Dim backupCreated As Boolean
    Dim strBackupFile As String
    Dim dtmStart As Date
    Dim strLDB As String
    Dim strCurLinkDir As String
    Dim compactSuccessfull As Boolean

    booStatus = False
    backupCreated = False
    compactSuccessfull = False
    
    ' Make sure that DatabaseName exists
    If Len(Dir$(DatabaseName)) > 0 Then
    
        ' Figure out what the backup file should be named
        If StrComp(Right$(DatabaseName, 6), ".accdb", vbTextCompare) = 0 Then
            strBackupFile = Left$(DatabaseName, Len(DatabaseName) - 6) & "-Old.accdb"
            ' Determine whether the backup file already exists, and delete it if it does.
            If Len(Dir$(strBackupFile)) > 0 Then
                Kill strBackupFile
            End If
            
            strLDB = Left$(DatabaseName, Len(DatabaseName) - 6) & ".laccdb"
            If Len(Dir$(strLDB)) > 0 Then
                MsgBox "Backend database is still opened.  Make sure everyone is logged off " _
                    & "and try again.", vbCritical + vbOKOnly, "Database still open"
                GoTo SubExit
            End If

            ' rename backend to backup name
            Name DatabaseName As strBackupFile
            backupCreated = True

            'DBEngine.CompactDatabase strBackupFile, DatabaseName
            DBEngine.CompactDatabase strBackupFile, DatabaseName, , , ";PWD=" & DbPWD
                     
            compactSuccessfull = True
            
            If backupCreated = True _
                And compactSuccessfull = True Then
                Kill strBackupFile
            End If
            booStatus = True
        Else
            booStatus = False
        End If
    
    End If

SubExit:
    CompactDatabase = booStatus
    Exit Function

SubError:
    booStatus = False
    
    'Undo our attempt at compacting
    If backupCreated = True Then
        If compactSuccessfull = False Then
            Name strBackupFile As DatabaseName
        End If
    End If
        
    MsgBox Form.Name & " - CompactDatabase error: " & vbCrLf & Err.Number & ": " & Err.Description
    Resume SubExit

End Function


5- حالا روی باتن ایجاد شده کلیک کنید ، کارهای زیر انجام خواهد شد.

  • یک پشتیبان از Back End در پوشه Backup ایجاد می شود.
  • فایل Back End بهینه سازی می شود. ( Compact And Repair )

نکات بسیار مهم :

  • در کدهای بخش اول ، نام frmCompact را به نام فرمی که باتن را در آن قرار داده اید تغییر دهید.
  • نام tblContacs را هم به نام یکی از جداول لینک شده تغییر نام دهید.
  • در رویداد OnLoad فرم هم کدهایی قرار دارد که باید آنجا هم tblContacts را به نام یکی از جداول لینک شده تغییر دهید.

مراحل جدا کردن دیتابیس از جداول و محافظت جداول با پسورد.

1- فایل اکسس خود را باز کرده و به تب Database Tools می رویم.

2- گزینه Access Database را انتخاب می کنیم .

جدا کردن جداول از دیتابیس
جدا کردن جداول از دیتابیس

3- در پنجره باز شده روی Split Database کلیک می کنیم .

4- در پنجره ای که باز می شود ، سعی کنید مسیر خود فایل را انتخاب کرده و بدون تغییر نام OK کنید .

5- خواهید دید که فایل شما به دو قسمت تقسیم می شود.

جداول اکسس
جداول اکسس

نکته :

  • معمولا نام be انتهای نام فایل اکسس مشخص کننده Back End بودن فایل می باشد.
  • فایل با پسوند laccdb هم در مواقعی نمایش داده میشود که فایل اصلی باز باشد و در واقع نشان دهنده باز بودن فایل اکسس می باشد.

گذاشتن پسورد روی فایلهای اکسس ، Back End

1- اکسس را باز کنید . ( خود برنامه اکسس را باز کنید )

2- از منوی File روی Open کلیک کنید .

3- فایل Back End مورد نظر را انتخاب کنید و مانند تصویر گزینه Open Exclusive را انتخاب کرده و فایل را باز کنید.

گذاشتن پسورد روی فایلهای اکسس
گذاشتن پسورد روی فایلهای اکسس

4- از منوی File به تب Info بروید و گزینه Encrypt With Password را بزنید.

5- در قسمت بعد پسورد مورد نظر را انتخاب نمائید.

6- فایل را ببنید و فایل Front End را باز کنید .

7- تمام جداول لینک شده را پاک کنید و به External Data رفته و در سکشن Import & Link گزینه Access را انتخاب کنید.

8- گزینه Link Table را انتخاب نمائید و Browse را بزنید.

8- فایل Back End را انتخاب کرده و پسور را وارد نمائید.

9- تمامی جداول را انتخاب کرده و OK کنید.

میدانیم که برای بهینه سازی اکسس یک قذم مهم جدا کردن جداول از دیتابیس است و قبلا در مورد مزایا و بررسی اتصال و برقراری مجدد ارتباط محصولی منتشر کرده ایم.

مشاهده فیلم آموزشی بهینه سازی اکسس و دانلود فایل نمونه

[download id=”61476″]

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

7 دیدگاه دربارهٔ «پشتیبان گیری از جداول و کامپکت کردن Back End فایل اکسس»

  1. باسلام وتشکرازآموزشهای بسیار مفیداستاد بحری عزیز
    اگه محبت کنید آموزش چاپ رکورد جاری دربرنامه اکسس ارسال نمائیدممنون میشوم

  2. سلام و سپاس
    اگر جداول را پاک کنیم و دوباره ایمپورت کنیم مشکل پسورد برطرف میشود ولی همه ارتباطات بین جداول از بین میرود و باید دوباره آنها را ست کنیم

  3. سجاد امیرپور

    سلام و وقت بخیر خدمت استاد گرامی
    اگه فایل اکسس جداول داخلش باشه و بک اند نداشته باشه کد بالا کار نمیکنه باید چه کدی در کلید بنویسیم که کامپکت کنه ممنون
    چون ریبون ها مخفی شدن از طریق کلید اکیی نمیشه کامپکت کرد

  4. درود
    ایا راهی هست گه اطلاعات و روردهای جداول اکسس یا در داخل sql server را encrypt کرد؟قبلا با فایل اکسسی مواجه شدم که اطلاعات جداول encrypt شده بود

پیمایش به بالا