我尝试使用 ms sql中存储过程的数据在访问2013 中填写连续表单服务器2014 。数据库连接工作,我可以使用其他访问表单将数据添加到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!
我该如何解决这个问题?我一整天都试图让它工作......没有成功.. 每次我运行表单时,我只能获得一条记录,而且我无法点击记录。!
Here's the data from the stored procedure I'm trying to put into the form. Possible solution?
答案 0 :(得分: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 用于txtArtikelnr.ControlSource
, omschrijving 用于txtOmschrijving.ControlSource
,依此类推,表单应根据您的意愿加载记录集行。
请注意,表单中显示的数据将是只读的。希望这不是一个不受欢迎的意外。
另外,我建议使用这种方法,因为你已经有了一个合适的ADO记录集。但是,我认为Gord suggestion使用pass-through query作为您的表单RecordSource
更简单。