我有一个Microsoft Access 2010数据库,其中包含行源属性中的两个SQL问题。
数据库中的FindClientsNavigation表单正常工作,直到我将其拖动到主窗体上的导航控件中,以便FindClientsNavigation成为子窗体。现在需要修复以下两个问题:
1。)当您加载主窗体时,会出现一个对话框,询问txtFilterClients文本框的参数。 txtFilterClients用于过滤列表框lstbxclients中的客户端名称和IDS。通过将其rowsource设置为以下查询来填充lstbxclients:
SELECT c.ClientNumber, c.FullName FROM Clients AS c
WHERE (((c.FullName) Like '*' & [Forms]![Main]![FindClientsNavigation]![txtFilterClients].[Text] & '*'))
ORDER BY c.FullName;
您可以在以下打印屏幕中看到错误消息/对话框:
2。)单击“通信表单”导航选项卡时会出现 第二个错误 ,并出现一个对话框,询问ClientID的值,即FindClientsNavigation表单的属性。第二个问题似乎是qryListCommunicationForms表单的Row Source属性,其SQL当前是:
CommunicationTable.CommunicationNumber, CommunicationTable.ClientNumber, CommunicationTable.DateOfCommunication, CommunicationTable.Communication, CommunicationTable.Communication, CommunicationTable.CommunicationWithNumber
FROM CommunicationTable
WHERE (((CommunicationTable.ClientNumber)=[Forms]![Main]![FindClientsNavigation].[ClientNumber]));
我正在寻找这两个问题的解决方案,我也很感激对代码底层概念的一些解释,以便我知道如何解决其他地方可能出现的类似问题。
答案 0 :(得分:2)
我无法完全按照您的说明进行操作,但假设FindClientsNavigation
是子表单,那么您还需要引用其Form
属性以便能够引用控件子表单:
[Forms]![Main]![FindClientsNavigation].Form![txtFilterClients]
您也不需要引用Text
的{{1}}属性。
已添加:如果TextBox
被指定为字符串,则需要将其拆分为三个部分,以便将文本框值替换为SQL:
RowSource
已添加:您的子表单控件的名称为"SELECT c.ClientNumber, c.FullName FROM Clients AS c WHERE (((c.FullName) Like '*'" &
[Forms]![FindClientsNavigation].[Form]![txtFilterClients] & "'*')) ORDER BY c.FullName;"
,NavigationSubform
是此控件的FindClientsNavigation
。所以你需要使用:
SourceObject
感叹号(bang operator!)引用一个对象的默认Collection,对于Form,它是Controls集合。
此更改还需要在您的表单Like '*' & [Forms]![Main]![NavigationSubform].[Form]![txtFilterClients] & '*'
以及原始帖子中显示的qryListCommunicationForm
后面的代码中进行。