我正在修改其他人开发的vba代码,在表单上添加“where”子句时遇到困难。由于我是sql的新手,我非常感谢您的帮助。
我有一张table tbl_FC_Data
它包含表示零件需求预测的数据行。它有超过四万三千张唱片。每一条记录都是对未来一年的预测 Part_Number
为了一个 Data_Month
对于特定公司( Company_Code
)对于在特定日期提供的预测,即。 Date_of_Forecast
. 下表是数据示例。
Part_Number Data_Month Qty Company_Code Date_of_FC
AN565B8H4 1/1/2020 35 WAL2 12/11/2019
AN565B8H4 2/1/2020 1095 WAL2 12/11/2019
02-14-202-11 12/1/2019 20 D17 12/4/2019
02-14-202-11 1/1/2020 10 D17 12/4/2019
02-14-202-11 5/1/2020 1 D17 12/4/2019
02-14-202-11 6/1/2020 1 D17 12/4/2019
435W2151-49A 7/1/2020 40 API1 6/16/2020
02-14-202-11 6/1/2020 50 EAIL1 6/1/2020
02-14-202-11 7/1/2020 1 EAIL1 6/1/2020
02-14-202-11 1/1/2020 50 CZS1 12/19/2019
02-14-202-11 1/1/2020 50 CZS1 1/30/2020
access表单包含两个列表框,第一个列表框列出表中包含数据的所有公司( lstCriteriaCompany
)第二个包含表中所有记录的预测日期列表( lstCriteriaDate_Of_Fc
)不管公司是谁。
列出表中所有预测日期的现有vba/sql代码是:
Me.lstCriteriaDate_Of_Fc.RowSource = "SELECT '#' & Format(D.Date_of_FC,'yyyy-mm-dd') & '#' AS IN_LIST_VALUE, " & _
"Format(D.Date_of_FC,'mm/dd/yyyy') AS DATE_OF_FORECAST " & _
"FROM (SELECT DISTINCT tbl_FC_Data.Date_of_FC FROM tbl_FC_Data) AS D"
它生成以下预测日期列表:
12/4/2019
12/11/2019
12/19/2019
1/30/2020
6/1/2020
6/16/2020
我的目标是当用户在第一个文本框中单击公司时 On Click
代码( Me.lstCriteriaDate_Of_Fc.RowSource = ...
)在第一个文本框中显示与所选公司相关的预测列表。例如,如果选择czs1,则列出预测的文本框将更改为:
12/19/2019
1/30/2020
我在这里添加了 Where
条款。它返回零条记录,而不是我期望的两条记录。执行代码时,会弹出一个对话框,询问 D.Company_Code
.
Me.lstCriteriaDate_Of_Fc.RowSource = "SELECT '#' & Format(D.Date_of_FC,'yyyy-mm-dd') & '#' AS IN_LIST_VALUE, " & _
"Format(D.Date_of_FC,'mm/dd/yyyy') AS DATE_OF_FORECAST " & _
"FROM (SELECT DISTINCT tbl_FC_Data.Date_of_FC FROM tbl_FC_Data) AS D " & _
"Where D.Company_Code= '" & Me.lstCriteriaCompany.Column(0) & "'"
我也试过了 HAVING tbl_FC_Data.Company_Code = Me.lstCriteriaCompany.Value
但是我得到了一个sql错误。
感谢您提供的任何sql帮助。
2条答案
按热度按时间iovurdzv1#
引用列表框选择与其他数据控件有很大不同。通过按其索引引用列来获取所选项的必需值,即使值位于第一列(即索引0)。
Me.lstCriteriaCompany.Column(0)
将此引用连接到sql字符串。flmtquvp2#
我发现
Where
条款需要成为SELECT DISTINCT
条款。以下是有效的代码: