使用来自 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!
我该如何解决这个问题?我一直试图让它工作一整天..没有成功..
我每次运行表格只得到一条记录,而且无法点击记录!
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.ControlSource
,omschrijving for txtOmschrijving.ControlSource
,等等,表格应该加载根据需要使用记录集行。
请注意,表单中显示的数据将是只读的。希望这不是一个不受欢迎的惊喜。
此外,我建议采用这种方法,因为您已经有了合适的 ADO 记录集。但是,我认为 Gord 的 to use a pass-through query 和你的表单的 RecordSource
一样简单。
我正在尝试使用 存储过程[=]中的数据在 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!
我该如何解决这个问题?我一直试图让它工作一整天..没有成功.. 我每次运行表格只得到一条记录,而且无法点击记录!
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.ControlSource
,omschrijving for txtOmschrijving.ControlSource
,等等,表格应该加载根据需要使用记录集行。
请注意,表单中显示的数据将是只读的。希望这不是一个不受欢迎的惊喜。
此外,我建议采用这种方法,因为您已经有了合适的 ADO 记录集。但是,我认为 Gord 的 RecordSource
一样简单。