访问表单:无效的ControlSource

时间:2018-01-05 12:26:42

标签: ms-access

在我的访问表单中,我有Text Box应该具有此值:

SELECT [QueryOne].[Company] FROM [QueryOne] WHERE ([QueryOne].[ID] = "1000"

所以,我在这个文本框的ControlSource写了以下字符串:

= ( SELECT [QueryOne].[Company] FROM [QueryOne] WHERE ([QueryOne].[ID] = "1000" )

但我得到的结果是textbox.value#Name?。也许这个字符串不应该在ControlSource

2 个答案:

答案 0 :(得分:1)

使用DLookup:

=DLookup("[Company]"), "[QueryOne]", "[ID] = '1000'")

或更可能ID不是文本列,那么

=DLookup("[Company]"), "[QueryOne]", "[ID] = 1000")

答案 1 :(得分:1)

Access文本框不能直接用于执行SQL。但是,您可以通过将其设置为Control Source来调用文本框中的函数并显示结果。 Access提供了许多功能,可用于从数据库中检索数据。 DlookUp应该按照您的要求执行操作:

=DLookUp("[Company]","[QueryOne]","ID='1000'")

您可能希望能够输入公司ID以返回名称。为此,更改函数以引用表单上的另一个输入文本框(显然只需更改表单和文本框名称以匹配您的元素):

=DLookUp("[Company]","[QueryOne]","[ID]='" & [Forms]![Form1].[txtCompanyID].[Value] & "'")

当然,如果您执行的操作不仅仅是最简单的查找,那么正确的方法是为表单设置Record Source并将文本框Control Source设置为来自此数据集的字段。