首先,让我通过说我几乎完全不了解Access,VBA或SQL知道序言。但是,当老板要求你做某件事时,你就这样做了。对于格式不佳,数据库管理不当,以及我普遍缺乏知识,我事先表示歉意。级联组合框
不管怎么说,我有一个查询,我需要使用组合框来组织一个大表。查询的名称是FinalTable,我希望组合框命名的字段是ID Maker.Billet Material,ID Maker.Billet Number,ID Maker.Test Type和ID Maker.Axis。一旦每个框被更新,我想显示该行的其余字段。
下面是我在窗体的代码为止。这是从我在Google上搜索时发现的教程中撕下来的,但我现在已经绝望地迷失和困惑,无法弄清下一步该怎么做。
Private Sub TestType_AfterUpdate()
On Error Resume Next
Dim query As String
Dim Fields(3)
Fields(0) = "[ID Maker.Billet Material]"
Fields(1) = "[ID Maker.Billet Number]"
Fields(2) = "[ID Maker.Test Type]"
Fields(3) = "[ID Maker.Axis]"
query = "Select DISTINCT {replace} " & _
"FROM FinalTable " & _
"WHERE [ID Maker.Test Type] = '" & TestType.Value & "' " & _
"WHERE [ID Maker.Billet Number] = " & BilletNumber.Value & " " & _
"WHERE [ID Maker.Billet Material] = '" & BilletMaterial.Value & "' " & _
"ORDER BY {replace};"
'Assign Queries
'=========================
Me.BilletMaterial.RowSource = Replace(query, "{replace}", Fields(0)) 'Billet Material Query
Me.BilletNumber.RowSource = Replace(query, "{replace}", Fields(1)) 'Billet Number Query
Me.TestType.RowSource = Replace(query, "{replace}", Fields(2)) 'Test Type Query
Me.Axis.RowSource = Replace(query, "{replace}", Fields(3)) 'Axis Query
'requery combobox's
Me.BilletMaterial.Requery
Me.BilletNumber.Requery
Me.TestType.Requery
Me.Axis.Requery
End Sub
Private Sub Axis_AfterUpdate()
On Error Resume Next
Dim query As String
Dim Fields(3)
Fields(0) = "[ID Maker.Billet Material]"
Fields(1) = "[ID Maker.Billet Number]"
Fields(2) = "[ID Maker.Test Type]"
Fields(3) = "[ID Maker.Axis]"
query = "Select DISTINCT {replace} " & _
"FROM FinalTable " & _
"WHERE [ID Maker.Axis] = '" & Axis.Value & "' " & _
"WHERE [ID Maker.Test Type] = '" & TestType.Value & "' " & _
"WHERE [ID Maker.Billet Number] = " & BilletNumber.Value & " " & _
"WHERE [ID Maker.Billet Material] = '" & BilletMaterial.Value & "' " & _
"ORDER BY {replace};"
'Assign Queries
'=========================
Me.BilletMaterial.RowSource = Replace(query, "{replace}", Fields(0)) 'Billet Material Query
Me.BilletNumber.RowSource = Replace(query, "{replace}", Fields(1)) 'Billet Number Query
Me.TestType.RowSource = Replace(query, "{replace}", Fields(2)) 'Test Type Query
Me.Axis.RowSource = Replace(query, "{replace}", Fields(3)) 'Axis Query
'requery combobox's
Me.BilletMaterial.Requery
Me.BilletNumber.Requery
Me.TestType.Requery
Me.Axis.Requery
query = ...
声明我现在在那里现在导致错误。在我尝试这之前,只有第一个WHERE语句。
那么没有错误出现,所以这是进步。但是,第二个组合框未被填充。此外,有没有办法删除组合框中的重复? – user3241316
我喜欢这个问题/回答。我特别喜欢拍拍那些在名字中放置空格的人。 – Smandoli
@ user3241316您可以使用'DISTINCT'命令修复重复问题。我不知道组合框的其他名称,但您只需创建一个新字符串,复制并粘贴查询,然后更改要返回的独特值,将其分配给组合框和查询,然后将其分配给您完成。请查看上面的代码更新。 – Rich