我想在组合框中显示多个特定列,并将其用作查询的搜索参数。任何想法,如果这是我可以做的事情?
我将举例说明下表:
Company Name Document Notes 2nd Document Notes 2
A 1 test 2 test
B 1 test 2 test
C 1 test 2 test
D 1 test 2 test
我有一个组合框参数设置,可以通过公司名称搜索查询。 所以,如果我选择A'在我的第一个组合框中;结果将返回:
Company Name Document Notes 2nd Document Notes 2
A 1 test 2 test
我希望下一个组合框能够显示'文档'专栏和第二个文件'柱;基本上显示特定公司的文档列表。
然后选择一个文件;我想要一个文本框来显示下一列。
例如
Combo box 1 Combo box 2 txt box:
'A' selected '2' selected Displays text from 'Notes 2'
所以在Nutshell中,如果可能的话,如何让组合框显示查询结果的特定列? - 如何在上一个组合框中显示一个文本框以显示选择右侧的列(例如,选中' 1'将显示' Notes'列,选择& #39; 2'会显示' Notes 2'列如果没有,还有其他选择吗?谢谢!
修改 我有一个想法 - 也许有一种方法可以让查询将多个特定列转换为单个列表;然后在组合框中显示该列表?
答案 0 :(得分:2)
实际上听起来像是(除非我误解了)所谓的Cascading Comboboxes。
因此,您的第一个组合框显示公司名称的所有唯一选项:
MyCombo1.RecordSource = "SELECT Distinct CompanyName FROM MyTable"
第二个组合框选择所选公司名称的所有唯一选项:
MyCombo2.RecordSource = "SELECT Distinct Document FROM MyTable
WHERE CompanyName = '" & MyCombo1.Value & "'"
如果需要,您可以无限制地执行此操作。只需将上一个组合框的值添加到下一个组合框的RecordSource的WHERE子句中。
最后,在最后一个组合框的AfterUpdate事件中,您可以设置显示的文本。因此,在MyCombo2的AfterUpdate事件中,添加以下内容:
Dim db as Database
Dim rec as Recordset
Set db = CurrentDB
Set rec = db.OpenRecordset("SELECT Notes2 FROM MyTable
WHERE CompanyName = '" & MyCombo1.Value & "' AND Document = '" & MyCombo2.Value & "'"
MyTextbox.Text = rec(0)
当然,如果每条记录都有某种ID号,它会让它变得更容易(实际上很多更容易),所以你可以引用它而不必同时按两个CompanyName过滤和文件,但这是一般的想法。
我刚刚意识到你的数据集没有被标准化,我的答案在没有经过调整的情况下无法工作。如果可能的话,你应该normalize your dataset。不要听起来像数据势利小人,但人们上学学习这些东西的原因;它的重要。你的桌子看起来应该更像这样:
CompanyName Document Notes
A 1 Test
A 2 Test 2
B 1 Test
B 2 Test 2