0

Access2010 データベース内の特定の日付より古いデータを削除し、データベースを圧縮するプログラムがあります。プログラムの削除部分は正常に機能しますが、直後に圧縮しようとすると「引数が無効です」というエラーが表示されます。私のコードは次のようになります。

    'Deleting anything older than chosen before databse is compacted.
    Dim DateA As Date = Date.Now
    Dim DateB As String
    Dim ConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Forte\Fortedb.accdb"
    Dim ParentCNN = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Forte\Fortedb.accdb"
    Dim CloneCNN = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Forte\Temp.accdb"
    Dim cnn As New OleDbConnection(ConnString)
    Dim sql As String

    'Formatting the date to make it 7 days into the past.
    DateB = Format(DateA.AddDays(ApplicationPropertiesWindow.DeleteFilebox.SelectedIndex + 1), "MM/dd/yy")
    cnn.Open()

    'Delete everything from b_forte where proddate is less than date - chosen time.    
    sql = "DELETE * FROM b_forte WHERE ProdDate < #" & DateB & "#"

    Dim Command = New OleDb.OleDbCommand(sql, cnn)
    Command.ExecuteNonQuery()
    cnn.Close()
    'Compacting the databse
    Try

        Dim JrO As New JRO.JetEngine

        cnn.Open()
        JrO.CompactDatabase(ParentCNN, CloneCNN)
        If System.IO.File.Exists("C:\Forte\Temp.accdb") Then
            System.IO.File.Delete("C:\Forte\Fortedb.accdb")
            Rename("C:\Forte\Temp.accdb", "C:\Forte\Fortedb.accdb")
            Logging("Database compacted.")
            cnn.Close()
        End If

    Catch ex As Exception
        MainTextBox.AppendText(Environment.NewLine & "Database Compression Failure :" & vbCr & ex.Message)
    End Try

私はvb.net 2010を使用しており、データベースにパスワードなしで2010にアクセスしています。

4

2 に答える 2

1

への引数CompactDatabaseはパスとファイル名だけで、接続情報ではありません。

ところで、VB.NET では大文字と小文字が区別されないため、JRO を再利用しません。

Dim JrO As New JRO.JetEngine

おそらくこのままでも動作しますが、あとで読むと混乱しますし、ある段階で競合を引き起こす可能性があります。

于 2013-07-05T17:01:11.607 に答える
0

@Andy G から、それが からの接続情報であることがわかりましたCompactDatabase。コードを変更する必要があった情報は : にありCloneCNNました。の末尾に追加したInvalid Argumentエラー メッセージを"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Forte\Temp.accdb" 修正するために、文字列はと でした。;Jet OLEDB:Engine Type=5CloneCNN

于 2013-07-05T17:29:59.427 に答える