|
Home > Archive > Microsoft SQL Server forum > September 2005 > Howto set Access Recordsource onto a "select" sproc
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Howto set Access Recordsource onto a "select" sproc
|
|
|
| Hi. I have lots of processing to do on the server - from the client
(Access) I call a sproc which returns a recordset (the sproc is
essentially a big "select"). With the obtained data , I need to
generate a report. How do I set the Recordsource of the report to the
result of the select sproc ?
I have tried the following, but it does not work.
Private Sub cmdReport_Click()
On Error GoTo cmdReport_ClickError
Dim objCmd As ADODB.Command
Dim intOpenObjects As Integer
Dim rsTemp As ADODB.Recordset
Set objCmd = New ADODB.Command
intOpenObjects = 1
objCmd.ActiveConnection = m_objConn
objCmd.CommandType = adCmdStoredProc
objCmd.CommandText = "_TestReport"
Set rsTemp = objCmd.Execute
intOpenObjects = 2
Dim rpt As Report
DoCmd.OpenReport "TestReport", acViewDesign
Set rpt = Reports("TestReport")
Set rpt.RecordSource = rsTemp
DoCmd.Close acReport, "TestReport", acSaveYes
Set rpt = Nothing
DoCmd.OpenReport "TestReport", acViewPreview
DoCmd.OpenReport "TestReport", acViewPreview
DoCmd.SelectObject acReport, "TestReport"
DoCmd.Maximize
cmdReport_ClickExit:
If intOpenObjects = 2 Then
rsTemp.Close
Set rsTemp = Nothing
intOpenObjects = 1
End If
If intOpenObjects = 1 Then
Set objCmd = Nothing
intOpenObjects = 0
End If
Exit Sub
cmdReport_ClickError
:
MsgBox Err.Description, vbCritical, Me.Name
Resume cmdReport_ClickExit
End Sub
How can I do that, please ? Would it maybe be better to change the
"Select" sproc into an Insert sproc, as in "SELECT... INTO TEMP", in
order to create a temp table on the server, then in Access link to that
table and set the recordsource onto the linked table ?
Please help. Thank you very much, Alex.
| |
| Simon Hayes 2005-09-29, 3:23 am |
| You'll probably get a better response in one of the
microsoft.public.access.* groups - how to present data in an Access
report isn't really an MSSQL question.
Simon
| |
|
| Look at pass-through queries in Access; they'll run the stored
procedure on SQL Server. However, you'll have to use VBA to modify the
paramaters (by actually modifiying the text of the pass-through query).
Stu
| |
| nicolec@octitle.com 2005-09-30, 8:24 pm |
| If you are using a data project (ADP), you simply name the recordsource
the name of the stored procedure, either hard coded in the report
designer or in code at runtime.
If you are using an MDB, Stu's suggestion of pass-through query objects
is the usual method.
Radu wrote:
> Hi. I have lots of processing to do on the server - from the client
> (Access) I call a sproc which returns a recordset (the sproc is
> essentially a big "select"). With the obtained data , I need to
> generate a report. How do I set the Recordsource of the report to the
> result of the select sproc ?
>
> I have tried the following, but it does not work.
>
> Private Sub cmdReport_Click()
>
> On Error GoTo cmdReport_ClickError
>
> Dim objCmd As ADODB.Command
> Dim intOpenObjects As Integer
> Dim rsTemp As ADODB.Recordset
>
> Set objCmd = New ADODB.Command
> intOpenObjects = 1
>
> objCmd.ActiveConnection = m_objConn
> objCmd.CommandType = adCmdStoredProc
> objCmd.CommandText = "_TestReport"
>
> Set rsTemp = objCmd.Execute
> intOpenObjects = 2
>
> Dim rpt As Report
> DoCmd.OpenReport "TestReport", acViewDesign
> Set rpt = Reports("TestReport")
> Set rpt.RecordSource = rsTemp
> DoCmd.Close acReport, "TestReport", acSaveYes
> Set rpt = Nothing
> DoCmd.OpenReport "TestReport", acViewPreview
>
> DoCmd.OpenReport "TestReport", acViewPreview
> DoCmd.SelectObject acReport, "TestReport"
> DoCmd.Maximize
>
> cmdReport_ClickExit:
> If intOpenObjects = 2 Then
> rsTemp.Close
> Set rsTemp = Nothing
> intOpenObjects = 1
> End If
> If intOpenObjects = 1 Then
> Set objCmd = Nothing
> intOpenObjects = 0
> End If
>
> Exit Sub
>
> cmdReport_ClickError
:
> MsgBox Err.Description, vbCritical, Me.Name
> Resume cmdReport_ClickExit
> End Sub
>
> How can I do that, please ? Would it maybe be better to change the
> "Select" sproc into an Insert sproc, as in "SELECT... INTO TEMP", in
> order to create a temp table on the server, then in Access link to that
> table and set the recordsource onto the linked table ?
>
> Please help. Thank you very much, Alex.
|
|
|
|
|