[首先,让我说一点我对Access,VBA或SQL几乎一无所知。但是,当老板要求您做某事时,您就去做。对于格式不正确,数据库管理不正确以及我普遍缺乏知识,我深表歉意。
无论如何,我在查询中有一个大表,需要使用组合框进行组织。该查询的名称为FinalTable,而我希望从中命名该组合框的字段为ID Maker.Billet物料,ID Maker.Billet编号,ID Maker.Test类型和ID Maker.Axis。更新每个框后,我要显示该行的其余字段。
到目前为止,这是我在表单代码中所拥有的。它是从我在谷歌搜索时发现的教程中摘录而来的,但是现在我无可救药地感到迷茫和困惑,无法弄清楚下一步该怎么做。
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语句。
很少有变更项目。
如Query a table that has spaces in its name, MS Access C# VS2008中所述正确地>
“用空格括起来的隔开的项目:
[普通站]
然后给设计数据库的人打耳光。“
所以,给我一个镜头,让我知道它的进展-注意:无法在我的系统上对其进行测试。
Private Sub Material_AfterUpdate() On Error Resume Next Me.BilletNumber.RowSource = "Select [ID Maker.Billet Number] " & _ "FROM FinalTable " & _ "WHERE [ID Maker.Billet Material] = '" & Material.Value & "' " & _ "ORDER BY [ID Maker.Billet Number];" Me.BilletNumber.Requery End Sub
UPDATE
当然,您只会获得唯一的记录,可以在访问中使用DISTINCT
命令。
第二,要用相同的信息填充另一个组合框,可以将查询存储在字符串中,然后重新查询两个框。
Private Sub Material_AfterUpdate()
On Error Resume Next
Dim basequery 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]"
basequery = "Select DISTINCT {replace} " & _
"FROM FinalTable " & _
"WHERE [ID Maker.Billet Material] = '" & Material.Value & "' " & _
"ORDER BY {replace};"
'Assign Queries
'=========================
'I do NOT know your combobox names.
'Me.COMBOBOXNAME.RowSource - Change COMBOBOXNAME.
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