ACC97: Exchange/Outlook Driver Example Incorrect in Acread80.wri

Last reviewed: October 13, 1997
Article ID: Q163067
The information in this article applies to:
  • Microsoft Access 97

SYMPTOMS

Moderate: Requires basic macro, coding, and interoperability skills.

In the Microsoft Access 97 Readme file, Acread80.wri, the following code sample in the Microsoft Exchange/Outlook Driver section is incomplete:

   To open a Microsoft Exchange/Outlook folder directly, use the
   OpenDatabase method and specify values for the following parts:
   database, options = True, read-only = True, and a dbname data source.
   The following code example uses the OpenDatabase method to open a
   Microsoft Exchange/Outlook folder named Barbara and count the number of
   messages received from a user named Jim Harris:

      Public Sub OpenExchangeFolder()
         Dim dbsExchange As Database, intCount As Integer
         Dim rst As Recordset, str As String
         str = "Exchange 4.0;MAPILEVEL=" _
            & "Dave Jones (Exchange)|People\Important;TABLETYPE=0;"
         Set dbsExchange = OpenDatabase _
            ("C:\Data\Temp.mdb", 0, 0, str)
         Set rst = dbsExchange.OpenRecordset("Barbara")
         rst.MoveFirst
         While Not rst.EOF
            If rst!From = "Jim Harris" Then
               intCount = intCount + 1
            End If
            rst.MoveNext
         Wend
         rst.Close
         dbsExchange.Close
      End Sub

RESOLUTION

The Database and Profile arguments are missing from the str variable in the code example, which is used as the connect parameter for the OpenDatabase method. The Database argument indicates the Microsoft Access database in which to open the Microsoft Outlook/Exchange recordset; the Profile argument indicates the Microsoft Outlook/Exchange profile to use when you open the recordset. You can view the profiles you have set up on your computer by double-clicking the Mail icon in Control Panel. When the Microsoft Outlook Properties dialog box appears, click Show Profiles.

NOTE: You can download the Exchange/Outlook Wizards from Microsoft’s Web site on the Internet. The wizard enables you to import or link to Microsoft Exchange/Outlook data without writing Visual Basic code. The wizards are available at http://www.microsoft.com/accessdev/a-free.htm.

Modify the example to include the Database and Profile arguments:

   Public Sub OpenExchangeFolder()
      Dim dbsExchange As Database, intCount As Integer
      Dim rst As Recordset, str As String
      str = "Exchange 4.0;MAPILEVEL=" _
         & "Dave Jones (Exchange)|People\Important;TABLETYPE=0;" _
         & "DATABASE = C:\Data\Temp.mdb;PROFILE = Microsoft Outlook"
      Set dbsExchange = OpenDatabase _
         ("C:\Data\Temp.mdb", 0, 0, str)
      Set rst = dbsExchange.OpenRecordset("Barbara")
      rst.MoveFirst
      While Not rst.EOF
         If rst!From = "Jim Harris" Then
            intCount = intCount + 1
         End If
         rst.MoveNext
      Wend
      rst.Close
      dbsExchange.Close
   End Sub

MORE INFORMATION

If you want to link the Microsoft Outlook/Exchange folder as a table in your database and not just open it in code, the following sample code shows you how.

Linking to a Personal Folder

   ' This procedure links a personal address book.
     Sub LinkPersonalFolder()
     Dim dbsCurrent As Database
     Dim tdfAddress As Tabledef

   ' Open the Jet database.
     Set dbsCurrent = DBEngine.Workspaces(0).OpenDatabase _
     ("C:\My Documents\Example.mdb")

   ' Create a table definition for the Exchange table.
     Set tdfAddress = dbsCurrent.CreateTableDef("Personal Addresses")

   ' Provide the name of the Exchange file with the Connect property.
     tdfAddress.Connect = "Exchange 4.0;MAPILEVEL=Personal Folders|;" _
     & "TABLETYPE=1;DATABASE=C:\My _
        Documents\Example.mdb;PROFILE=MyProfile"

   ' Provide the name of the table with the SourceTableName property.
     tdfAddress.SourceTableName = "Personal Address Book"

   ' Append the TableDef to the TableDefs collection to create the link.
     dbsCurrent.TableDefs.Append tdfAddress

     End Sub

Linking to a Folder in Your Mailbox

   ' This procedure links to a mailbox folder called Student Info.
     Sub LinkStudentFolder
     Dim dbsCurrent As Database
     Dim tdfStudent As Tabledef

   ' Open the Jet database.
     Set dbsCurrent = DBEngine.Workspaces(0).OpenDatabase _
     ("C:\My Documents\Example.mdb")

   ' Create a table definition for the Exchange table.
     Set tdfStudent = dbsCurrent.CreateTableDef("Student Folder")

   ' Provide the name of the Exchange file with the Connect property.
     tdfStudent.Connect = "Exchange 4.0;MAPILEVEL=Mailbox - Nancy _
        Davolio|;" _
        & "TABLETYPE=0;DATABASE=C:\My _
        Documents\Example.mdb;PROFILE=MyProfile"

   ' Provide the name of the table with the SourceTableName property.
     tdfStudent.SourceTableName = "Student Info"

   ' Append the TableDef to the TableDefs collection to create the link
     dbsCurrent.TableDefs.Append tdfStudent.

     End Sub

Linking to a Public Folder

   ' This procedure links to a public folder called School Info.
     Sub LinkStudentInfo
     Dim dbsCurrent As Database
     Dim tdfSchoolInfo As Tabledef

   ' Open the Jet database.
     Set dbsCurrent = DBEngine.Workspaces(0).OpenDatabase _
     ("C:\My Documents\Example.mdb")

   ' Create a table definition for the Exchange table.
     Set tdfSchoolInfo = dbsCurrent.CreateTableDef("School Information")

   ' Provide the name of the Exchange file with the Connect property.
     tdfSchoolInfo.Connect = "Exchange 4.0;MAPILEVEL=Public Folders|;" _
     & "TABLETYPE=0;DATABASE=C:\My _
        Documents\Example.mdb;PROFILE=MyProfile"

   ' Provide the name of the table with the SourceTableName property.
     tdfSchoolInfo.SourceTableName = "School Info"

   ' Append the TableDef to the TableDefs collection to create the link.
     dbsCurrent.TableDefs.Append tdfSchoolInfo

     End Sub

REFERENCES

For more information about using the OpenDatabase method to connect to a Microsoft Outlook/Exchange folder, search the Help Index for "OpenDatabase Method."

For more information about the Microsoft Outlook/Exchange connect argument, search the Help Index for "Connect property."

For more examples of linking a Microsoft Outlook/Exchange folder as a Microsoft Access 97 table, please see the following article in the Microsoft Knowledge Base:

   ARTICLE-ID: Q161174
   TITLE     : ACC97: Sample Procedure to Attach a Microsoft Outlook Folder


Additional query words: attach mail mapi
Keywords : DcmOthr
Version : 97
Platform : WINDOWS
Hardware : x86
Issue type : kbdocerr
Solution Type : Info_Provided


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: October 13, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.