2012-07-18 98 views
0

以下代码从表单中获取参数并将其传递到vba中的存储过程。我正确返回值,并且存储过程在使用debug.Print时工作。现在我需要以“cat_percent_match”的形式显示存储过程的结果。所有这些都是在点击按钮时发生的。下面的代码打开窗体,但现在我需要将记录集传递给它并显示结果。 任何帮助,不胜感激。以新形式显示记录集

Dim Cmd1 As ADODB.Command 
Dim lngRecordsAffected As Long 
Dim rs1 As ADODB.Recordset 
Dim intRecordCount As Integer 
'----- 
Dim cnnTemp As ADODB.Connection 
Set cnnTemp = New ADODB.Connection 
cnnTemp.ConnectionString = "DRIVER=SQL Server;SERVER=***;" & _ 
"Trusted_Connection=No;UID=***;PWD=***;" & _ 
"Initial Catalog=IKB_QA;" 
cnnTemp.ConnectionTimeout = 400 
'Open Connection 
cnnTemp.Open 
Set Cmd1 = New ADODB.Command 
Cmd1.ActiveConnection = cnnTemp 
'--- 
With Cmd1 
Dim localv As Integer 
Dim inputv 


localv = [Forms]![Start]![Selection]![cat_code] 
.CommandText = "dbo.ix_spc_planogram_match_cat_percent " & inputv 
.CommandType = adCmdStoredProc 
Set inputv = Cmd1.CreateParameter("@deptcode", 3, 1, 10000, localv) 
Cmd1.Parameters.Append inputv 
Set rs1 = Nothing 
Set rs1 = Cmd1.Execute 

DoCmd.OpenForm "Cat_Percent_Match" 

End With 
End Sub 

回答

1

相关文章http://support.microsoft.com/kb/281998

Private Sub Form_Open(Cancel As Integer) 
    Dim cn As ADODB.Connection 
    Dim rs As ADODB.Recordset 

    'Use the ADO connection that Access uses 
    Set cn = CurrentProject.AccessConnection 

    'Create an instance of the ADO Recordset class, and 
    'set its properties 
    Set rs = New ADODB.Recordset 
    With rs 
     Set .ActiveConnection = cn 
     .Source = "SELECT * FROM Customers" 
     .LockType = adLockOptimistic 
     .CursorType = adOpenKeyset 
     .Open 
    End With 

    'Set the form's Recordset property to the ADO recordset 
    Set Me.Recordset = rs 

    Set rs = Nothing 
    Set cn = Nothing 
End Sub 

因此,在这种特殊情况下,你可以试试:

DoCmd.OpenForm "Cat_Percent_Match" 
Set Forms.Cat_Percent_Match.Recordset = rs1