MS Access - 从文本框中的用户输入将参数传递给 SQL 语句

Posted

技术标签:

【中文标题】MS Access - 从文本框中的用户输入将参数传递给 SQL 语句【英文标题】:MS Access - pass a parameter to SQL statement from the user input in a textbox 【发布时间】:2016-07-06 13:20:20 【问题描述】:

我是 MS Access 的新手。我不知道是否可以创建一个文本框,用户在其中插入一个字符串(名称),然后该字符串将在如下所示的 sql 语句中自动传递,以便检索数据并将其显示在某些文本框中。

select field from myTable 
where userName = @combobox.name

有两个挑战:

如何在 sql 查询中传递用户在文本框中输入的值? 如果数据库中只有一行用户,则每个文本框都应填充来自查询的信息(假设第一点有解决方案)。但是如果一个用户有多行呢?怎么能显示这个?

我正在尝试走这条路,因为我需要避免使用子表单,并且我希望有一个主表单,其中有一个文本框供用户插入名称,然后是几个文本框,每个文本框都带有他们自己的 sql 语句(因为我需要不同的过滤器),并且如果用户有多个记录,他们能够扩展或以某种方式显示多行。

是否可以在访问表单中执行此操作?如果是,任何帮助将不胜感激。谢谢

【问题讨论】:

请在编写任何代码之前阅读此内容。 nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html 和 milo2012.wordpress.com/2012/02/18/… @granadaCoder 阅读,谢谢。我想要实现的是在本地使用,应该没问题。现在我需要弄清楚它是否可能以及如何 @CM2K 不要太在意忽略 sql 注入。即使只有您自己以外的任何人都不会使用此应用程序,您也应该将此作为学习如何预防它的绝佳机会。一旦您学会了如何使用正确的参数化查询,这将变得非常简单,并且您将获得更好的应用程序。 如果您像这样在查询中引用组合...WHERE userName = Forms!YourForm!combobox ...它是一个参数,因此没有 SQL 注入的风险。 首先,SELECT 查询是否返回您想要的数据?如果是这样,当您将该查询用作列表框行源,切换到表单视图,在组合中选择一个值,然后按F5 时会发生什么? 【参考方案1】:
DIM strSQL as String

strSQL = "SELECT [mytable].[field] " _ 
& "FROM [myTable] " _ 
& "WHERE [MyTable].[userNamefield] = " & Forms!FormName!ComboBoxName & ";"

Docmd.runsql strSQL

应该这样做。抱歉,我迟到了两年。

【讨论】:

以上是关于MS Access - 从文本框中的用户输入将参数传递给 SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章

将文本框中的值插入 2 个不同的表 ms-access

修改 MS Access 列表框中的项目列表

MS Access Report 无法在未绑定的文本框中输入文本

单击列表框时,如何在文本框中以另一种形式从ms access 2010中的列表框中移动所选项目

在 MS Access 组合框中,如何将表单值用作 where 类

MS Access中的VBA中不接受变量名称