访问窗体上textbox的sql“where”子句

ozxc1zmp  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(293)

我正在修改其他人开发的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帮助。

iovurdzv

iovurdzv1#

引用列表框选择与其他数据控件有很大不同。通过按其索引引用列来获取所选项的必需值,即使值位于第一列(即索引0)。 Me.lstCriteriaCompany.Column(0) 将此引用连接到sql字符串。

flmtquvp

flmtquvp2#

我发现 Where 条款需要成为 SELECT DISTINCT 条款。以下是有效的代码:

Me.lstCriteriaDate_Of_Fc.RowSource = "SELECT '#' & Format(tbl_FC_Data.Date_of_FC,'yyyy-mm-dd') & '#' AS IN_LIST_VALUE, " & _
                                               "Format(tbl_FC_Data.Date_of_FC,'mm/dd/yyyy') AS DATE_OF_FORECAST " & _
                                               "FROM (SELECT DISTINCT tbl_FC_Data.Date_of_FC FROM tbl_FC_Data " & _
                                               "Where tbl_FC_Data.Company_Code = " & Me.lstCriteriaCompany.Column(0) & ");"

相关问题