根据另一个字段过滤查找字段-编译错误

时间:2019-11-14 14:55:53

标签: sql vba ms-access

我正在使用AfterUpdate()事件来尝试在Access中的第二个组合框中编写查找代码。我相信我的语法正确,但是在编译时,出现了错误,指出了预期的语句结尾。 AfterUpdate事件为:

Private Sub CompanyName_AfterUpdate()
    [cboCompanyName].RowSourceType = "Table/Query"
    [cboInvID].RowSource = 
       "Select Inventory.InvID, Inventory.Product, 
               Inventory.[Product Description], Inventory.Qty, 
               Inventory.PricePerUnit, Inventory.CompanyName "

        FROM Inventory 
        INNER JOIN Artist 
           ON Inventory.CompanyName = Artist.CompanyName " &
       "Where Artist.CompanyName = ' " & cboCompanyName.value & " ' ";
End Sub

这是我的第一篇文章,因此我需要提供更多详细信息,我们将感谢您的反馈。谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定您的问题是什么,但是可以为您提供基本指导,以便您可以调试自己的代码。

首先尝试使您的代码至少可以编译,所以尝试一些简单的事情:

cboInvID].RowSource = "SELECT Inventory.InvID  FROM Inventory"

一旦您知道自己的零件正在工作,下一个目标就是使其按预期工作。

构建查询并直接在数据库上对其进行测试

SELECT *
FROM Inventory 
INNER JOIN Artist 
  ON Inventory.CompanyName = Artist.CompanyName
Where Artist.CompanyName = 'Sony';

一旦您有一个有效的查询,而不是传递给RowSource,请将其保存在字符串上,以便对其进行调试

strSQL  = "SELECT *
           FROM Inventory 
           INNER JOIN Artist 
              ON Inventory.CompanyName = Artist.CompanyName
           WHERE Artist.CompanyName = 'Sony'";
cboInvID].RowSource = strSQL;

最后,您去添加输入值。

strSQL  = "SELECT *
           FROM Inventory 
           INNER JOIN Artist 
              ON Inventory.CompanyName = Artist.CompanyName
           WHERE Artist.CompanyName = '" & cboCompanyName.value & " ' ";
cboInvID].RowSource = strSQL;

这使您可以检查strSQL是否正确,并可以检测到任何错误。

现在您还需要一些工作,还需要检查代码上参数的使用方式,因为在使用字符串连接时, SQL INJECTION 存在很大的风险。但这取决于您使用的lenguaje和db。