MS-Access表单中的动态查询

问题描述 投票:0回答:3

我在Microsoft Access(2016)中有一个表单,我有一个名为KID的下拉列表。当下拉列表丢失焦点时,我想运行如下所示的查询:

SELECT max(Cnt)
FROM Table
WHERE KID = ValueOfDropdownList

此查询的结果应该可以在事件的VB代码中的变量中使用。

不幸的是,我当时仅限于Access。我是否以正确的方式使用Access(从表格中的下拉菜单中选择 - >事件 - > VB中的SQL查询 - >表单中的显示)还是有更好的方法可以做到这一点?

感谢您的帮助!

ms-access access-vba
3个回答
2
投票

首先,我会使用组合框的AfterUpdate事件,否则即使有人只是通过控件标记它也会触发。

其次,如果只是为了设置一个变量,你可能会更好地使用域函数,在这种情况下是一个DMax()

iVariable = DMax("Cnt","Table","[KID] = " & Me.YourComboControlName )

这假设KID是一个数字字段。如果KID是文本,您需要划定这样的标准;

 iVariable = DMax("Cnt","Table","[KID] = '" & Me.YourComboControlName & "'" )

最后,如果您希望在滚动记录时更新此更新,则需要将相同的代码添加到表单的OnCurrent事件中。当记录发生变化时会触发。

如果是为了显示目的,如果这是设置未绑定控件,则不能在连续表单上使用相同的技术,您需要将其拉入基础表单记录集。


0
投票

你可以使用DMax:

YourVariable = DMax("[Cnt]", "[Table]", "[KID] = " & Me!DropdownListName.Value & "")

如果KID是文本,请应用引号:

YourVariable = DMax("[Cnt]", "[Table]", "[KID] = '" & Me!DropdownListName.Value & "'")

0
投票

仅供参考,还有另一种选择。作为你的组合的data source, 使用返回2列的查询,如select KID, max(cnt) from table1 group by KID。 然后在您的文本框中,使用=combo1.columns(1)检索您的值。 为此,您需要在组合属性中指定它有2列。在公式中,不要忘记那些组合列是基于0的。 当您需要检索链接到组合的多个值(并且您没有数百万条记录)时,这是最有效的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.