使用来自 Sql 服务器中存储过程的数据来填写 Access 连续表单

Using data from a stored procedure in Sql Server to fill an Access continuous form

我正在尝试使用 存储过程[=]中的数据在 access 2013 中填写 连续表格 30=] 毫秒 sql 服务器 2014。数据库连接正常,我可以使用其他访问形式向 ms sql 服务器数据库添加数据。所以这不是问题。 这是我的存储过程:

CREATE PROCEDURE spArtikelen AS
BEGIN
SELECT a.artikelnr, omschrijving, v.voorraad, p.prijs, a.leverancier
FROM artikel AS a, artikelprijs AS p, artikelvoorraad AS v
WHERE a.artikelnr = p.artikelnr 
AND a.artikelnr = v.artikelnr 
AND CAST(GETDATE() AS DATE) BETWEEN p.begindatum AND p.einddatum
END

这是我的 vba 代码(我将 vba 代码放在表单的 LOAD 事件上):

Private Sub Form_Load()
    Dim rs As ADODB.Recordset

    Set rs = DbConn.Execute("EXEC spArtikelen")
        Do Until rs.EOF
            Me.txtArtikelnr.Value = rs!artikelnr
            Me.txtOmschrijving.Value = rs!omschrijving
            Me.txtVoorraad.Value = rs!voorraad
            Me.txtPrijs.Value = rs!prijs
            Me.txtLeverancier.Value = rs!leverancier
            Debug.Print rs!artikelnr, rs!omschrijving, rs!voorraad, rs!prijs, rs!leverancier
            rs.MoveNext
        Loop
End Sub!

the continuous form..

我该如何解决这个问题?我一直试图让它工作一整天..没有成功.. 我每次运行表格只得到一条记录,而且无法点击记录!

Here's the data from the stored procedure I'm trying to put into the form. Possible solution?

使用 adUseClient 打开您的记录集 CursorLocation 属性。然后将表单的 Recordset 属性 设置为您的 ADO 记录集。

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "EXEC spArtikelen", DbConn
Set Me.Recordset = rs

然后使用 artikelnr for txtArtikelnr.ControlSourceomschrijving for txtOmschrijving.ControlSource,等等,表格应该加载根据需要使用记录集行。

请注意,表单中显示的数据将是只读的。希望这不是一个不受欢迎的惊喜。

此外,我建议采用这种方法,因为您已经有了合适的 ADO 记录集。但是,我认为 Gord 的 to use a pass-through query 和你的表单的 RecordSource 一样简单。