Vb.net Access 2007 compact数据库

Vb.net Access 2007 compact数据库,vb.net,Vb.net,对不起我的英语,我是从意大利来的。 我在VB Net的一个业务数据管理程序中使用了Access 2007 DB。 众所周知,Access DBs在使用过程中会扩展,因此我需要在程序关闭时压缩它们。 我用这种方式进行压实 Dim MioEngine As New Microsoft.Office.Interop.Access.Dao.DBEngine MioEngine.CompactDatabase(myAccesDB, newAccessDB,) Application.DoEvents()

对不起我的英语,我是从意大利来的。 我在VB Net的一个业务数据管理程序中使用了Access 2007 DB。 众所周知,Access DBs在使用过程中会扩展,因此我需要在程序关闭时压缩它们。 我用这种方式进行压实

Dim MioEngine As New Microsoft.Office.Interop.Access.Dao.DBEngine

MioEngine.CompactDatabase(myAccesDB, newAccessDB,)
Application.DoEvents()
但通常情况下(并非在网络上的所有PC上),压缩不会完成,并向我发出以下错误消息: 进程无法访问“C:\myAccesDB.accdb”文件,因为另一个进程正在使用该文件 深入分析发生的情况,我发现当错误发生时,.laccdb文件在压缩时不会关闭。 除了我用来安全压实的方法之外,还有别的方法吗?
我指定我们网络中的所有PC都是Windows 10 pro,并且都已更新;当Windows 10还处于婴儿期时,我没有发现这个错误。

因为我的评论还不够,下面是一个答案:

其思想是在压缩数据库之前,尝试运行tn
.laccdb
文件。您可以这样做:

Dim file as System.IO.FileInfo = New System.IO.FileInfo("c:\myAccesDB.laccdb")
Dim stream As FileStream = Nothing
Try
    stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None)
    stream.Close()
    'if stream is successfully closed, file is not in use and database can be compacted
    MioEngine.CompactDatabase(myAccesDB, newAccessDB,)
Catch ex As Exception
    'show some message to user that file is in use so it can try again
End Try
很久以前我就使用过VB和Access,所以这只是一个你应该遵循的方向。

谢谢,我会试试的。 我也看了一下这个:

我发现: 这个问题现在已经解决了。如果启动Access,请单击“文件”,然后单击“帐户”,然后单击“更新选项”和“立即更新”,这将确保您拥有最新版本,并且所有版本都应具有可用的修复程序


但我无法找到“文件”打开访问权限,。

您可能可以尝试打开
.laccdb
文件并捕获异常。若抛出异常,则文件正在使用中。所以,尝试一些类似“非常感谢”的方法,但你能给我一个明确的例子吗?我还没有机会使用异常。