使用 VBA 和 Form 的 MS Access,构建查询字符串并 运行 它

MS Access using VBA and Form, build a query string and run it

我有一个 MS Access 表单,它会要求用户 select 或键入将在查询的 where 子句中使用的词。

单击按钮时,它将构建字符串并将其用于 运行 查询。这将是只读的,可以查看来自 link table in SQL 服务器的子集结果。而已。我用 DoCmd.RunSQL 尝试过,但这仅适用于更新、删除等操作类型。

在点击按钮事件上,会有类似的query。

strSQL = "Select top 10 * Where ID = ''" + textbox1.value + "'' from linked_Table_Name;"

这没有用。

DoCmd.RunSQL strSQL

首先,也是最重要的一点,永远不要将用户获得的数据作为 SQL 语句 的一部分进行连接。任何使用此技术的应用程序都容易受到 SQL injection 攻击,如果用户在他们提供的输入中包含字符串定界符(例如单引号)或其他保留字符,也会失败。

改为使用参数。

对于您的情况,我可能建议使用 SQL:

创建一个已保存的查询
select top 10 t.*
from linked_Table_Name t
where t.ID = Forms![Your Form Name]![textbox1]

其中 Your Form Name 是包含控件 textbox1 的表单的名称。

然后,您的点击事件可以简单地调用 OpenQuery method of the DoCmd 对象:

DoCmd.OpenQuery "YourSavedQuery"