2016-10-28 10 views
-4

参考:Access "Compact and Repair" programaticallyMS AccessのJetデータベースプログラム的にコンパクト

HIみんな、私は、コンパクトかつまたは「ジェット」.mdbファイル/データベースを修復するためにスケジュールされたタスクを経由してバッチスクリプトを実行する方法を探しています。


環境
勝利7 32ビット
ジェット4.xのフォーマット


不明
application.exeオリジナルコード言語私はジェットエンジンがインストールされていない - しかし、それはないようだふりをすることができますシナリオリクエスト

オートメーションはここでの最終ゲームです。

私は本当にコーダないよ前述上記のリンク「Access "Compact and Repair" programatically

を読んだ - 私はそのすべての作業をしようとして約2~3時間を費やし、私は無残に失敗しました。 :(

私の要求 - あなたが助けることができるならば、 は私がフル「コピーと過去のコードを」必要がありますしてください - 私の指がDyslexiconica苦しむ;)私はちょうどこのレベルでコーディングすることができません。

単純なバッチファイルを正常に実行できるようにします。 VBAかまっすぐなコマンドラインであれば気にしませんが、動作させる方法を教えてください。

ありがとうございました。ここで

非常によろしく、 ヴィンセント

+0

申し訳ありませんが、StackOverflowのは、コードの書き込みサービスではありません - (http://stackoverflow.com/help/on-topic)[トピックに]質問に保管してくださいし、より適切な[スタックExchangeサイトに尋ねる考えます](http:// sta ckexchange.com/sites) – David

答えて

0

は、一般的な問題のためにメッセージを表示近くにコンパクト、のjazzedアップバージョンです。たとえば、ソースファイルが存在しない場合。ソースファイルに無効なファイル名拡張子がある場合。宛先ファイルが存在するとき(それはしてはならない)。ここで

Option Compare Database 
Option Explicit 

' Declare an enumeration of long integer 
' constants, to be used as the return values 
' for the RepairDatabase() function. 
' As Access's CompactRepair() method returns 
' TRUE or FALSE, the Enum uses -1 (TRUE) for 
' success and 0 for failure. 
Public Enum ryCompactResult 
    cmpCompactSuccessful = -1 
    cmpCompactFailed = 0 
    cmpErrorOccurred = 1 
    cmpSourceFileDoesNotExist = 2 
    cmpInvalidSourceFileNameExtension = 3 
    cmpDestinationFileExists = 4 
End Enum 


Private Sub TestRepair() 

    Dim strSource As String 
    Dim strDestination As String 
    Dim lngRetVal As ryCompactResult 

    strSource = "C:\MyFolder\db1.mdb" 
    strDestination = "C:\MyFolder\db2.mdb" 

    ' Call the function: 
    lngRetVal = RepairDatabase(strSource, strDestination) 

    ' Examine the return value from the function 
    ' and display appropriate message: 
    Select Case lngRetVal 

    Case cmpCompactSuccessful 
     MsgBox "Compact & repair successful.", _ 
      vbOKOnly + vbInformation, _ 
      "Program Information" 

    Case cmpSourceFileDoesNotExist 
     MsgBox strSource & vbNewLine & vbNewLine _ 
      & "The above file does not exist.", _ 
      vbOKOnly + vbExclamation, _ 
      "Program Finished" 

    Case cmpInvalidSourceFileNameExtension 
     MsgBox strSource & vbNewLine & vbNewLine _ 
      & "The above file has an invalid filename " _ 
      & "extension.", vbOKOnly + vbExclamation, _ 
      "Program Finished" 

    Case cmpDestinationFileExists 
     MsgBox strDestination & vbNewLine & vbNewLine _ 
      & "The above destination file exists. " _ 
      & vbNewLine _ 
      & "Please delete the above file or " _ 
      & "use a different destination filename.", _ 
      vbOKOnly + vbExclamation, "Program Finished" 

    Case cmpErrorOccurred 
     ' The RepairDatabase() function has 
     ' already displayed an error message. 

    End Select 


End Sub 

Function RepairDatabase(_ 
    strSource As String, _ 
    strDestination As String) As ryCompactResult 

    ' IN: 
    ' 
    ' strSource: 
    '  The full path to the database that is 
    '  to be compacted. 
    ' 
    ' strDestination: 
    '  The full path to the resultant database 
    '  after strSource has been compacted. 
    ' 
    ' OUT: 
    ' 
    ' This function returns one of the values in 
    ' the ryCompactResult Enum. 


    Dim lngRetVal As ryCompactResult 
    Dim strFileName As String 
    Dim strFileNameExtn As String 
    Dim lngPos As Long 


On Error GoTo Error_RepairDatabase 

    ' See if source file exists: 
    strFileName = Dir(strSource) 
    If Len(strFileName) = 0 Then 
     lngRetVal = cmpSourceFileDoesNotExist 
     GoTo Exit_RepairDatabase 
    End If 

    ' See if source filename has appropriate 
    ' filename extension (mdb or accdb). 
    ' First, see if filename contains a period: 
    lngPos = InStr(strFileName, ".") 
    If lngPos = 0 Then 
     ' Period not found in filename; 
     ' i.e. no filename extension found. 
     lngRetVal = cmpInvalidSourceFileNameExtension 
     GoTo Exit_RepairDatabase 
    Else 
     ' Get filename extension: 
     strFileNameExtn = Mid(strFileName, lngPos + 1) 
     strFileNameExtn = LCase(strFileNameExtn) 

     Select Case strFileNameExtn 
     Case "mdb", "accdb" 
      ' Correct filename extension found. 
      ' We can proceed with compact & repair. 
     Case Else 
      ' Invalid filename extension found. 
      lngRetVal = cmpInvalidSourceFileNameExtension 
      GoTo Exit_RepairDatabase 
     End Select 
    End If 

    ' Destination file must not exist: 
    strFileName = Dir(strDestination) 
    If Len(strFileName) > 0 Then 
     lngRetVal = cmpDestinationFileExists 
     GoTo Exit_RepairDatabase 
    End If 

    ' Compact and repair database: 
    lngRetVal = Application.CompactRepair(_ 
       strSource, strDestination, True) 

Exit_RepairDatabase: 

    RepairDatabase = lngRetVal 
    Exit Function 

Error_RepairDatabase: 

    lngRetVal = cmpErrorOccurred 
    MsgBox "Error No: " & Err.Number _ 
     & vbNewLine & vbNewLine _ 
     & Err.Description, _ 
     vbOKOnly + vbExclamation, _ 
     "Error Information" 

    Resume Exit_RepairDatabase 

End Function 

は、下記の別コンパクト/修復機能であるが、すべての近くに任意に行うことはお勧めできません - ちょうど置き換える/独自の

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

Dim strSource As String 
Dim strDestination As String 

strSource = "\\Dg\Debt \2010\Summary\Summary.mdb" 
strDestination = "\\Dg\Debt \2010\Summary\Summary_Compact.mdb" 

    ' Trap for errors. 
    On Error GoTo ErrorRoutine 

    ' 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. 
Exit_Function: 
    Exit Function 
ErrorRoutine: 
    RepairDatabase = False 
    Call LogError(Err.Number, Err.Description, conMod & ".RepairDatabase", , True) 
    Resume Exit_Function 
End Function 

Call the function as such: 
Call RepairDatabase(strSource, strDestination) 

とエラーコードに私を取り除くなどの関数を呼び出します。

Call RepairDatabase(strSource, strDestination) 
+0

ありがとうございました。私はこれをチェックします。非常に敬具、 –