Sql 基于另一个字段筛选查找字段-编译错误
我正在使用AfterUpdate()事件尝试编写Access中第二个组合框的查找代码。我相信我的语法是正确的,但在编译时,我得到了一个错误,说明了语句的预期结尾。AfterUpdate事件是:Sql 基于另一个字段筛选查找字段-编译错误,sql,vba,ms-access,Sql,Vba,Ms Access,我正在使用AfterUpdate()事件尝试编写Access中第二个组合框的查找代码。我相信我的语法是正确的,但在编译时,我得到了一个错误,说明了语句的预期结尾。AfterUpdate事件是: Private Sub CompanyName_AfterUpdate() [cboCompanyName].RowSourceType = "Table/Query" [cboInvID].RowSource = "Select Inventory.InvID, Inve
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
这是我的第一篇文章,所以我需要提供任何进一步的细节,我将感谢反馈。谢谢。我不确定您的问题出在哪里,但可以给您一些基本的指导原则,以便您可以调试自己的代码 首先,尝试让您的代码至少可编译,因此尝试一些简单的方法:
cboInvID].RowSource = "SELECT Inventory.InvID FROM Inventory"
一旦你们知道你们的部件在工作,下一个目标就是让它按预期工作
构建查询并直接在数据库上测试它
SELECT *
FROM Inventory
INNER JOIN Artist
ON Inventory.CompanyName = Artist.CompanyName
Where Artist.CompanyName = 'Sony';
一旦有了一个工作查询,而不是传递给行源,就将其保存在字符串中,以便调试它
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注入在使用字符串连接时是一个很大的风险。但这取决于您使用的是什么lenguaje和db 您的rfbms是什么?这看起来像VB或Access。您需要行连接。可能的重复项也无法编译,您不能在VBA中像这样使用多行字符串。@我写答案时,Andre VBA甚至不是一个标记。我再次尝试提供基本的调试指南。如果创建字符串失败,很容易发现原因。在这种情况下,一行上的简单示例将起作用,正如您所建议的,mutiline不会感谢您所建议的更改。我对Access比较陌生,请您解释一下关于将其保存在字符串上的评论好吗?您是否建议不要以我尝试的方式将其传递给RowSource?我已经能够将其编译,但得到一个错误,声明表达式中引用了“can not file field”| 1。有任何建议吗。