【发布时间】:2020-06-24 23:12:01
【问题描述】:
我希望有人能帮我解决这个问题。
我使用 Access 作为前端系统,使用 ODBC 将表链接到 SQL Server Management Studio。 这使数据库运行缓慢,因此我尝试将 Access 查询转换为 SSMS 中的存储过程,然后在 Access 中将它们作为传递查询运行。到目前为止效果很好,而且我转换的查询运行得非常快。
但是,我只转换了不需要用户在 Access 中选择变量的查询。这些是我现在遇到的困难。
例如,假设我在 SSMS 中有一个名为 [Names] 的简单表,其中包含 [First Name]、[Surname]
我可以运行以下名为 [Search] 的存储过程来返回所有名称:
SELECT [First name], [Surname]
FROM [Names]
我可以在前端Access中执行这个存储过程作为直通查询,它确实返回了所有记录。
但是,在前端 Access 数据库中,我有一个名为 [Search] 的表单,其中包含一个名为“SearchFirstName”的文本框。当用户在文本框中手动输入“Anthony”时,我希望它从文本框中获取值,并将其用作存储过程的一部分来限制结果,如下所示:
SELECT [First name], [Surname]
FROM [Names]
WHERE [First Name] = [Forms]![Search]![SearchFirstName]
我已经寻求帮助,但我陷入困境。我想我需要 Access 将文本框值设置为参数,然后可以在 SSMS 中使用。
我从另一篇文章中找到的可能可行的途径如下,但我不确定我需要如何/在哪里实现它:
With CurrentDb.QueryDefs("qPass") .SQL = "exec SalesGeneralSearch " & strSearch Set Me.MyListBox.RowSource = .OpenRecordset End If
如果有人能帮忙,我将不胜感激
谢谢
【问题讨论】:
-
您是否考虑过使用 ADODB.Recordsets 来执行您的 SP?
-
感谢您的回复。如果您能提供更多指导,是否有可能,这样我就可以通过谷歌搜索其余部分?谢谢
-
我添加了一个示例,说明从 MS Access VBA 访问 SQL SP 时的操作。我有一个与你非常相似的设置,一个 Access 前端和一个 SQL Server 后端。这对我来说是一种可靠的方法。
标签: sql-server ms-access pass-through