2

我正在尝试使用ms sql server 2014中的存储过程中的数据在access 2013中填写连续表格。数据库连接正常,我可以使用其他访问形式将数据添加到 ms sql server 数据库。所以这不是问题。这是我的存储过程:

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!

连续形式..

我该如何解决?我整天都在努力让它工作..没有成功..每次我运行表格时,我只得到一条记录,我无法点击记录。!

这是我试图放入表单的存储过程中的数据。 可能的解决方案?

4

1 回答 1

3

使用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 fortxtOmschrijving.ControlSource等等,表单应该根据需要加载记录集行。

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

另外,我建议使用这种方法,因为您已经有了合适的 ADO 记录集。但是,我认为 Gord建议使用传递查询作为您的表单RecordSource更简单。

于 2015-03-19T17:35:48.320 回答