ACC: How to Dial a Phone Number in Microsoft Access (1.x/2.0)ID: Q93696
|
Advanced: Requires expert coding, interoperability, and multiuser skills.
This article describes a sample user-defined Access Basic function,
DialNumber(), that you can use to dial a telephone number from Microsoft
Access using your computer's modem. This method uses Microsoft Windows
application programming interface (API) function calls.
Although this function will work with Microsoft Access version 2.0,
version 2.0 has a new AutoDialer feature that can be used for dialing
telephone numbers. For more information about the AutoDialer feature,
search for "AutoDialer" using the Microsoft Access 2.0 Help menu.
This article assumes that you are familiar with Access Basic and with
creating Microsoft Access applications using the programming tools
provided with Microsoft Access. For more information on Access Basic,
please refer to the "Introduction to Programming" manual in Microsoft
Access version 1.x, or the "Building Applications" manual in version 2.0.
To dial a phone number in Microsoft Access, you can use Microsoft Windows
API calls in the dynamic-link library (DLL) USER.EXE. There are 17
communication API calls available in USER.EXE, but only the following 3
are used to dial a phone number: OpenComm(), CloseComm(), and WriteComm().
The following steps demonstrate how to create and use the DialNumber()
function.
NOTE: In the following sample code, an underscore (_) is used as a line-
continuation character. Remove the underscore from the end of the line
when re-creating this code in Access Basic.
Option Explicit
' The number of seconds to wait for the modem to dial before
' .. resetting the modem. If the phone hangs up prematurely
' .. try increasing this value by small increments.
Const WAITSECONDS = 4
Declare Function OpenComm Lib "User" (ByVal lpComName$, _
ByVal wInQueue%, ByVal wOutQueue%) As Integer
Declare Function CloseComm Lib "User" (ByVal nCid%) As Integer
Declare Function WriteComm Lib "User" (ByVal nCid%, _
ByVal lpBuf$, ByVal nSize%) As Integer
Const ID_CANCEL = 2
Const MB_OKCANCEL = 1
Const MB_ICONSTOP = 16, MB_ICONINFORMATION = 64
' ***********************************************************
' FUNCTION: DialNumber()
'
' PURPOSE: To dial a telephone number using the computer's modem
'
' ARGUMENTS:
' PhoneNumber: The telephone number to dial
'
' CommPort: The communications port the modem is connected
' to. Typically, modems are found on COM2, however,
' they can be configured for any COM port.
'
' EXAMPLE:
' Type the following in the Immediate window using a modem
' connected to the COM2 port:
'
' ? DialNumber("555-1212", "COM2")
'
' ***********************************************************
Function DialNumber (PhoneNumber, CommPort As String)
Dim Msg As String, MsgBoxType As Integer, MsgBoxTitle As String
Dim ModemCommand As String
Dim OpenPort As Integer
Dim RetVal As Integer
Dim StartTime
Dim CR As String: CR = Chr$(13)
Dim LF As String: LF = Chr$(10)
' Ask the user to pick up the phone.
Msg = "Please pickup the phone and choose OK to dial " _
& PhoneNumber
MsgBoxType = MB_ICONINFORMATION + MB_OKCANCEL
MsgBoxTitle = "Dial Number"
If MsgBox(Msg, MsgBoxType, MsgBoxTitle) = ID_CANCEL Then
Exit Function
End If
' Open the communications port.
OpenPort = OpenComm(CommPort, 1024, 128)
If OpenPort < 0 Then
Msg = "Unable to open communication port " & CommPort
GoTo Err_DialNumber
End If
' Send the telephone number to the modem.
ModemCommand = "ATDT" & PhoneNumber & CR & LF
If WriteComm(OpenPort, ModemCommand, Len(ModemCommand)) < 0 Then
Msg = "Unable to dial number " & PhoneNumber
GoTo Err_DialNumber
End If
' Wait WAITSECONDS seconds for the phone to dial.
StartTime = Timer
While Timer < StartTime + WAITSECONDS
DoEvents
Wend
' Reset the modem and take it off line.
ModemCommand = "ATH0" & CR & LF
RetVal = WriteComm(OpenPort, ModemCommand, Len(ModemCommand))
' Close the communications port.
RetVal = CloseComm(OpenPort)
Exit Function
Err_DialNumber: 'This is not an On Error routine.
Msg = Msg & CR & CR & "Make sure no other devices are using _
communication port " & CommPort
MsgBoxType = MB_ICONSTOP
MsgBoxTitle = "Dial Number Error"
MsgBox Msg, MsgBoxType, MsgBoxTitle
End Function
Microsoft Access 1.x:
ControlName: btnDialPhone
Caption: Dial
OnPush: =DialNumber([Home Phone], "COM2")
Microsoft Access 2.0:
Name: btnDialPhone
Caption: Dial
OnClick: =DialNumber([Home Phone], "COM2")
For an example of this topic in Microsoft Access for Windows 95 version
7.0, please see the following article in the Microsoft Knowledge Base:
Q148857 ACC: How to Dial a Phone Number Using MS Access 95/97
Additional query words: comm port
Keywords : kbprg
Version : 1.0 1.1 2.0
Platform : WINDOWS
Issue type : kbhowto
Last Reviewed: March 11, 1999