打开的access数据库文件会被windows设置为独占锁定状态(确切的说是正在使用)此时进行拷贝,windows不会允许的。如果只是通过ado连接,而不是用access打开,好像还是可以拷贝的。

解决方案 »

  1.   

    try thisPrivate Type SHFILEOPSTRUCT 
    hwnd As Long 
    wFunc As Long
    pFrom As String 
    pTo As String 
    fFlags As Integer
    fAnyOperationsAborted As Long 
    hNameMappings As Long
    lpszProgressTitle As String '只有在 FOF_SIMPLEPROGRESS 时用
    End TypePrivate Declare Function SHFileOperation Lib _
    "shell32.dll" Alias "SHFileOperationA" (lpFileOp _
    As SHFILEOPSTRUCT) As Long'wFunc 常数
    'FO_COPY   把 pFrom 文件拷贝到 pTo。
    Const FO_COPY = &H2
    'FO_DELETE 删除 pFrom 中的文件(pTo 忽略)。
    Const FO_DELETE = &H3
    'FO_MOVE   把 pFrom 文件移动到 pTo。
    Const FO_MOVE = &H1'fFlag 常数
    'FOF_ALLOWUNDO 允许 Undo 。
    Const FOF_ALLOWUNDO = &H40
    'FOF_NOCONFIRMATION 不显示系统确认对话框。
    Const FOF_NOCONFIRMATION = &H10
    'FOF_NOCONFIRMMKDIR 不提示是否新建目录。
    Const FOF_NOCONFIRMMKDIR = &H200
    'FOF_SILENT 不显示进度对话框
    Const FOF_SILENT = &H4例子:
    Dim SHFileOp As SHFILEOPSTRUCT
    ' 删除
    SHFileOp.wFunc = FO_DELETE 
    SHFileOp.pFrom = "c:\config.old" + Chr(0)
    SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION
    Call SHFileOperation(SHFileOp)
    ' 删除多个文件
    SHFileOp.wFunc = FO_DELETE
    SHFileOp.pFrom = "c:\config.old" +Chr(0) + "c:\autoexec.old"+Chr(0)
    SHFileOp.fFlags = FOF_ALLOWUNDO
    Call SHFileOperation(SHFileOp)
    ' 拷贝
    SHFileOp.wFunc = FO_COPY 
    SHFileOp.pFrom = "c:\t\*.*"
    SHFileOp.pTo = "d:\t\*.*"
    SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMMKDIR
    Call SHFileOperation(SHFileOp)
    ' 移动
    SHFileOp.wFunc = FO_MOVE 
    SHFileOp.pFrom = "c:\config.old" + Chr(0)
    SHFileOp.pTo = "d:\t"
    SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION
    Call SHFileOperation(SHFileOp)
      

  2.   

    使用以下的 API , 得到与资源管理器相同的感觉!
    Private Type SHFILEOPSTRUCT 
    hwnd As Long 
    wFunc As Long
    pFrom As String 
    pTo As String 
    fFlags As Integer
    fAnyOperationsAborted As Long 
    hNameMappings As Long
    lpszProgressTitle As String '只有在 FOF_SIMPLEPROGRESS 时用
    End TypePrivate Declare Function SHFileOperation Lib _
    "shell32.dll" Alias "SHFileOperationA" (lpFileOp _
    As SHFILEOPSTRUCT) As Long'wFunc 常数
    'FO_COPY   把 pFrom 文件拷贝到 pTo。
    Const FO_COPY = &H2
    'FO_DELETE 删除 pFrom 中的文件(pTo 忽略)。
    Const FO_DELETE = &H3
    'FO_MOVE   把 pFrom 文件移动到 pTo。
    Const FO_MOVE = &H1'fFlag 常数
    'FOF_ALLOWUNDO 允许 Undo 。
    Const FOF_ALLOWUNDO = &H40
    'FOF_NOCONFIRMATION 不显示系统确认对话框。
    Const FOF_NOCONFIRMATION = &H10
    'FOF_NOCONFIRMMKDIR 不提示是否新建目录。
    Const FOF_NOCONFIRMMKDIR = &H200
    'FOF_SILENT 不显示进度对话框
    Const FOF_SILENT = &H4例子:
    Dim SHFileOp As SHFILEOPSTRUCT
    ' 删除
    SHFileOp.wFunc = FO_DELETE 
    SHFileOp.pFrom = "c:\config.old" + Chr(0)
    SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION
    Call SHFileOperation(SHFileOp)
    ' 删除多个文件
    SHFileOp.wFunc = FO_DELETE
    SHFileOp.pFrom = "c:\config.old" +Chr(0) + "c:\autoexec.old"+Chr(0)
    SHFileOp.fFlags = FOF_ALLOWUNDO
    Call SHFileOperation(SHFileOp)
    ' 拷贝
    SHFileOp.wFunc = FO_COPY 
    SHFileOp.pFrom = "c:\t\*.*"
    SHFileOp.pTo = "d:\t\*.*"
    SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMMKDIR
    Call SHFileOperation(SHFileOp)
    ' 移动
    SHFileOp.wFunc = FO_MOVE 
    SHFileOp.pFrom = "c:\config.old" + Chr(0)
    SHFileOp.pTo = "d:\t"
    SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION
    Call SHFileOperation(SHFileOp)
      

  3.   


    '******************************************************************************************
    'SHFileOperation
    Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long'酷!WINDOWS中的文件复制、移动、删除和重命名都可以在这个函数中表现出来,包括复制进度等,酷!请查阅:SHFILEOPSTRUCT 结构!如:Dim SFI As SHFILEOPSTRUCT
    '     SFI.hwnd = Me.hwnd
    '     SFI.wFunc = FO_COPY
    '     SFI.pFrom = "c:\command.com"
    '     SFI.pTo = "d:\"
    '     
    'SHFileOperation SFI'#########################################################################################'******************************************************************************************
    'FO_COPY
    Public Const FO_COPY = &H2'实现复制(SHFILEOPSTRUCT 结构中 wFunc 的参数我们用在SHFileOperation API函数中,强烈推荐!)
    '#########################################################################################
    '******************************************************************************************
    'FO_DELETE
    Public Const FO_DELETE = &H3'实现移动(SHFILEOPSTRUCT 结构中 wFunc 的参数我们用在SHFileOperation API函数中,强烈推荐!)
    '#########################################################################################
    '******************************************************************************************
    'FO_RENAME
    Public Const FO_RENAME = &H4'实现重命名(SHFILEOPSTRUCT 结构中 wFunc 的参数我们用在SHFileOperation API函数中,强烈推荐!)
    '#########################################################################################
    '******************************************************************************************
    'FO_MOVE
    Public Const FO_MOVE = &H1'实现删除(SHFILEOPSTRUCT 结构中 wFunc 的参数我们用在SHFileOperation API函数中,强烈推荐!)
    '#########################################################################################
    '******************************************************************************************
    'SHFILEOPSTRUCT
    Public Type SHFILEOPSTRUCT
    hwnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As String ' only used if FOF_SIMPLEPROGRESS
    End Type''实现删除(SHFILEOPSTRUCT 结构中 wFunc 的参数我们用在SHFileOperation API函数中,强烈推荐!)
    ''#########################################################################################
    dim SFI as SHFILEOPSTRUCT
         SFI.hwnd = Me.hwnd
         SFI.wFunc = FO_COPY
         SFI.fFlags=0
         SFI.pFrom = "c:\1.mdb"
         SFI.pTo = "d:\"
         
    SHFileOperation SFI
    这是WINDOWS自带的复制功能!!!