【发布时间】:2020-07-07 18:28:42
【问题描述】:
我正在修改其他人开发的 VBA 代码,并且在表单上添加“Where”子句时遇到了困难。由于我是 SQL 新手,我感谢任何帮助。
我有一个表tbl_FC_Data,其中包含显示零件需求预测的数据行。它有超过 43k 条记录。每条记录都是针对特定公司 (Company_Code) 的 Part_Number 的预测,即 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 帮助。
【问题讨论】:
-
你说“两个文本框”和“第一个文本框”,是指“列表”而不是文本吗?
-
是的,它是一个列表框。对不起@June7