首页 > 解决方案 > Microsoft Access 的 On Format 事件中的详细信息部分中的存储过程结果

问题描述

如何在 Microsoft Access 报表的 On Format 事件的 Detail 部分调用存储过程结果,而不调用每一行中的连接?因为我认为这就是我在这里所做的,或者我试图在错误的事件中执行 SP?我怎样才能做到这一点 ?

    Public Sub TestSPB()    


Dim conn As ADODB.connection
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
Dim rst As ADODB.Recordset
Set conn = New ADODB.connection

conn.Open "Provider=SQLOLEDB.1;Password=xxxxxxxxx; Persist Security Info=True; User ID=xxxxxxx;Initial Catalog=xxxxxxxx;Data Source=20.20.20.20"

With cmd

 .ActiveConnection = conn
 .CommandText = "TESTSP10"
 .CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter("Checkin", adDate, adParamInput, , Me.from1.Value)
.Parameters.Append .CreateParameter("Checkout", adDate, adParamInput, , Me.to1.Value)
.Parameters.Append .CreateParameter("IDHotel", adInteger, adParamInput, , Me.IDHOTELS.Value)
.Parameters.Append .CreateParameter("canthabdbl", adInteger, adParamInput, , Me.cadbl.Value)
.Parameters.Append .CreateParameter("cantchd", adInteger, adParamInput, , 0)
.Parameters.Append .CreateParameter("canthab", adInteger, adParamInput, , 1)

.Parameters.Append .CreateParameter("totalhab", adInteger, adParamReturnValue)
.Parameters.Append .CreateParameter("Sum", adInteger, adParamOutput)

Set rst = .Execute
rst.CursorType = adOpenStatic
rst.CursorLocation = adUseClient
rst.LockType = adLockOptimistic
rst.Open cmd

End With

Dim tothabs as Double
Dim totsuma as Double
tothabs = cmd("totalhab")
totsum = cmd("Sum")

Set rst = Nothing
Set cmd = Nothing


End Sub


'Detail section os report on format event 

Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)

TestSPB

Me.total.value = totalhabs
Me.sumade.value = totalsum

End Sub

标签: ms-accessstored-proceduresms-access-2010

解决方案


推荐阅读