For a simple stored procedure with no parameters, I use an Access Pass-Thru query. The results come back just like a native Access97 query.
The SQL for the Pass-Thru query looks like:
EXEC yourdbname.dbo.yourprocedurename
Be sure to set the query property to 'Returns Records';
build and save your ODBC connection string.
I use a more complex approach when the procedure requires parameters.
A somewhat lengthy example follows. This is the On_Click code to display a report.
Private Sub btnPublish_II_Click()
On Error GoTo Err_btnPublish_II_Click
Dim stDocName As String
Dim MyQuery As QueryDef
Dim ConnectStr As String
Dim SqlCmd As String
On Error Resume Next
DoCmd.SetWarnings False
DoCmd.DeleteObject acQuery, "qryExecutesp_OvertimeReport_II"
Set MyQuery = CurrentDb.CreateQueryDef("qryExecutesp_OvertimeReport_II")
ConnectStr = "ODBC;DSN=mydbname" & _
";UID='myuserid'" & _
";PWD=''" & _
";LANGUAGE=us_english;DATABASE=mydbname"
SqlCmd = "EXECUTE mydbname..myprocedurename '" & Format(Me!frmDateBegin, "mm/dd/yyyy") & "','" & Format(Me.frmDateEnd, "mm/dd/yyyy") & "'"
With MyQuery
.Connect = ConnectStr ' Must be first to let access know this is a pass-thru query
.SQL = SqlCmd ' The string you just built
.ODBCTimeout = 0 ' No Timeouts
.ReturnsRecords = True ' This sp returns something
End With
MyQuery.Close
DoCmd.SetWarnings True
stDocName = "rptOvertime_II_PDF"
DoCmd.OpenReport stDocName, acPreview
Exit_btnPublish_II_Click:
Exit Sub
Err_btnPublish_II_Click:
MsgBox Err.Description
Resume Exit_btnPublish_II_Click
End Sub
Anyway, Access97 can use stored procedures just like a native query.