Moving/Copying (ADO)

Topic Last Modified: 2006-06-12

Example

Visual Basic

Note

The following example uses a file URL with the Exchange OLE DB (ExOLEDB) provider. The ExOLEDB provider also supports The HTTP: URL Scheme. Using The HTTP: URL Scheme allows both client and server applications to use a single URL scheme.

' CDO: Moving/Copying Using CDOEX
' This sample shows how to move/copy objects.
' Add a reference to Microsoft ActiveX Data Objects 2.5 Library.
' Add a reference to Active DS Type Library.


Private Sub Command1_Click()
    Dim strPathOfSourceObject As String
    Dim strPathOfDestFolder As String
    Dim strDomainName As String
    Dim strUser As String

    ' Specify the domain and the user.
    strDomainName = GetDomainDNSName()
    strUser = "user1"


    ' Sample 1: Copy folders in MBX.
    strPathOfSourceObject = "MBX/" & strUser & "/Outbox/HelloFolder"
    strPathOfDestFolder = "MBX/" & strUser & "/Deleted Items"
    Call CopyMoveObjects(strDomainName, strPathOfSourceObject, strPathOfDestFolder, 0)


    ' Sample 2: Move folders in Public Folders.
    strPathOfSourceObject = "Public Folders/SourceFolder"
    strPathOfDestFolder = "Public Folders/DestFolder"
    'Call CopyMoveObjects(strDomainName, strPathOfSourceObject, strPathOfDestFolder, 1)


    ' Sample 3: Move a file in MBX.
    strPathOfSourceObject = "MBX/" & strUser & "/Outbox/TestFolder/Hello.txt"
    strPathOfDestFolder = "MBX/" & strUser & "/Deleted Items"
    'Call CopyMoveObjects(strDomainName, strPathOfSourceObject, strPathOfDestFolder, 0)

    Unload Me
End Sub



' bOption:
' False: copy
' True - Move
'
Private Sub CopyMoveObjects(strDomainName As String, _
                                strLocalPathOfSourceObject As String, _
                                strLocalPathOfDestFolder As String, _
                                bOption As Boolean)
    Dim Rec As New ADODB.Record
    Dim strSourceObjectUrl As String
    Dim strDestFolderURL As String
    Dim strNewFolderName As String

    ' Set the strURL to the location of the folders.
    strSourceObjectUrl = "file://./backofficestorage/" & _
                 strDomainName & "/" & strLocalPathOfSourceObject

    ' Open the record.
    ' The adModeReadWrite enum is required.
    Rec.Open strSourceObjectUrl, , adModeReadWrite
    strNewFolderName = Rec.Fields("DAV:displayname")

    strDestFolderURL = "file://./backofficestorage/" & _
                 strDomainName & "/" & strLocalPathOfDestFolder

    If bOption = False Then

       ' Copy the folder from the source location to the destination folder.
       ' Note that if an item already exists at the destination URI,
       ' it will be overwritten by the copy.
       Rec.CopyRecord strSourceObjectUrl, strDestFolderURL & "/" & _
          strNewFolderName, , , adCopyOverWrite

    ' The adModeReadWrite enum is required.
    Else
       ' Move the folder from the source location to the destination folder.
       ' Please note that if an item already exists at the destination URI,
       ' it will be overwritten by the copy.
       Rec.MoveRecord strSourceObjectUrl, strDestFolderURL & "/" & _
          strNewFolderName, , , adMoveOverWrite
    End If


    ' Close the record.
    Rec.Close

    ' Clean up.
    Set Rec = Nothing

    If Err.Number = 0 Then
      Debug.Print "Good Job!"
    End If

End Sub