Microsoft KB Archive/128811

= ACC: VB Example to Open an MS Access Database via DDE =

Article ID: 128811

Article Last Modified on 1/19/2007

-

APPLIES TO


 * Microsoft Access 1.1 Standard Edition
 * Microsoft Access 2.0 Standard Edition
 * Microsoft Access 95 Standard Edition
 * Microsoft Access 97 Standard Edition

-



This article was previously published under Q128811



SUMMARY
Advanced: Requires expert coding, interoperability, and multiuser skills.

This article demonstrates how you can use dynamic data exchange (DDE) in Microsoft Visual Basic versions 3.0 or 4.0 to request information from a Microsoft Access database. By using DDE, you can manipulate Microsoft Access objects that are not available through Microsoft Visual Basic's data access features. For example, you can run a Microsoft Access macro to print a report or to open a form from Microsoft Visual Basic.

This article assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.

NOTE: Visual Basic for Applications is called Access Basic in Microsoft Access versions 1.x and 2.0. For more information about Access Basic, please refer to the "Introduction to Programming" manual in Microsoft Access version 1.x or the "Building Applications" manual in Microsoft Access version 2.0.



MORE INFORMATION
To use DDE in Microsoft Visual Basic to request information from a Microsoft Access database, follow these steps.

NOTE: This example does not verify if Microsoft Access is running (it assumes Microsoft Access is open at the time you run DDE commands). Also, the code does not include any error trapping. You may want to modify this example to include these enhancements in your project.  Start a new project in Microsoft Visual Basic. Note that Form1 is created by default. Add two text boxes named AppItems and DBItems to Form1. Add a command button named RunAccessDDE.  Place the following code in the RunAccessDDE button's Click event. Private Sub Command1_Click Const LINK_MANUAL = 2, LINK_NONE = 0 Dim Cmd

' Create a string containing a Microsoft Access macro command. Cmd = "[OPENDATABASE ""C:\MSOFFICE\ACCESS\SAMPLES\NorthWind.MDB""]"

NOTE: The sample database is called NWIND.MDB in versions 1.1 and 2.0.

If AppItems.LinkMode = LINK_NONE Then

' Set the DDE server application and topic to MSACCESS|SYSTEM. AppItems.LinkTopic = "MSACCESS|SYSTEM"

' Specify the information passed to the AppItems text box. AppItems.LinkItem = "SysItems"

' Set the LinkMode to a valid non-zero setting which causes ' Visual Basic to initiate a link to the program defined in          ' the LinkTopic. The LINK_MANUAL constant value of 2 ensures ' that the link is not updated until the LinkRequest method ' is invoked. AppItems.LinkMode = LINK_MANUAL

' Update the contents of the AppItems text box. AppItems.LinkRequest

' Run a valid DDE operation for Microsoft Access, such as          ' opening the sample database NorthWind.MDB. AppItems.LinkExecute Cmd

If DBItems.LinkMode = LINK_NONE Then

' Set the DDE Server and topic to MSACCESS|NorthWind. DBItems.LinkTopic = "MSACCESS|NorthWind"

' Pass a list of Microsoft Access tables to DBItems text box. DBItems.LinkItem = "TableList" ' Set the LinkMode to update the DBItems text box only when the ' LinkRequest method is invoked. DBItems.LinkMode = LINK_MANUAL

' Update the contents of the DBItems text box. DBItems.LinkRequest 'Close the DDE link for the DBItems text box. DBItems.LinkMode = LINK_NONE End If

' Run a valid DDE operation for Microsoft Access, such as          ' closing the sample database NorthWind.MDB. AppItems.LinkExecute "[CloseDatabase]"

' Close the DDE link for the AppItems text box. AppItems.LinkMode = LINK_NONE End If

End Sub

 Start the project, and click the RunAccessDDE button. Note that the AppItems text box displays a tab-delimited string of system topics supported in Microsoft Access. The DBItems text box displays a tab- delimited string of table names from the sample database NorthWind.MDB.

NOTE: Microsoft Access does not support the LinkPoke method for any object other than a SQL Topic. For instance, you cannot LinkPoke data into a Microsoft Access table or form.

