我正在使用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
这是我的第一篇文章,因此我需要提供更多详细信息,我们将感谢您的反馈。谢谢。
答案 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。