sql-server - 将 Access 表单绑定(bind)到存储过程的结果

标签 sql-server ms-access stored-procedures

我正在尝试将存储过程的结果返回到表单。我已设法使用 ADO 记录集迭代结果,但无法将结果绑定(bind)到表单。

这是 VBA 代码:

Private Sub RetrieveSiteInformation()

  Dim cmd As New ADODB.Command
  Dim cnn As New ADODB.Connection
  Dim rs As ADODB.Recordset, f As ADODB.Field

  With cnn
    .Provider = "SQLOLEDB"
    .ConnectionString = 
        "data source=UKFCSVR;initial catalog=ACACB;Trusted_Connection=Yes"
    .Open
  End With

  Dim param1  As ADODB.Parameter
  If Nz(txtSiteID_Search.Value, vbNullString) <> vbNullString Then
    Set param1 = cmd.CreateParameter("@SiteID", adBigInt, adParamInput)
    param1.Value = txtSiteID_Search.Value
    cmd.Parameters.Append param1
  End If

  With cmd
   .ActiveConnection = cnn
   .CommandText = "spSiteInformation_Retrieve"
   .CommandType = adCmdStoredProc
    **' THIS FAILS**
    Me.Recordset = .Execute
    **' THIS LOOP WORKS FINE**
    '    Set rs = .Execute
    '    rs.MoveFirst
    '    For Each f In rs.Fields
    '      Debug.Print f.Name
    '    Next
    '    With rs
    '      Do While Not .EOF
    '        Debug.Print ![CompanyName] & " " & ![Postcode]
    '        .MoveNext
    '      Loop
    '    End With
  End With
  cnn.Close
End Sub

最佳答案

好的,我已经测试了这个例子。它包括我留下的适合我的设置的更改,而不是猜测您的设置。大部分内容取自http://support.microsoft.com/kb/281998/EN-US/

Dim cn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim param1  As New ADODB.Parameter

    With cn
        .Provider = "Microsoft.Access.OLEDB.10.0"
        .Properties("Data Provider").Value = "SQLOLEDB"
        .Properties("Data Source").Value = "Server"
        .Properties("Integrated Security").Value = "SSPI"
        .Properties("Initial Catalog").Value = "Test"
        .Open
    End With

    txtSiteID_Search = 1

    If Nz(txtSiteID_Search, vbNullString) <> vbNullString Then
        Set param1 = cmd.CreateParameter("@SiteID", adBigInt, adParamInput)
        param1.Value = txtSiteID_Search
        cmd.Parameters.Append param1
    End If

    With cmd
        .ActiveConnection = cn
        .CommandText = "spSiteInformation_Retrieve"
        .CommandType = adCmdStoredProc
        Set Me.Recordset = .Execute
    End With

关于sql-server - 将 Access 表单绑定(bind)到存储过程的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4784820/

相关文章:

sql-server - SQL Server 中的 HashBytes 函数(错误的 MD5 结果)

sql - 使用sql server参数化输入?

ms-access - MS Access Runtime 2010 在安装了早期版本的 Access/Office 的系统上运行良好吗?

java - 存储过程仅返回多行中的一行

sql - 使用给定的开始月份对 12 个月 (1-12) 进行排序

sql-server - 如何根据类型显示正确的 sum() 值

sql - 在 VB.Net 中使用 SQL 连接到 Access 数据库

java - 如何检查该值是否已存在于数据库中?

.net - 存储过程和 LINQ、Dbml 文件无法解释结果集

javascript - 通过复杂类型 cosmosDB azure 的存储过程进行批量更新