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

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

select field from myTable 
where userName = @combobox.name

有两个挑战:

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

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

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

【问题讨论】:

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

标签: sql sql-server forms ms-access textbox


【解决方案1】:
DIM strSQL as String

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

Docmd.runsql strSQL

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多