Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于另一个字段筛选查找字段-编译错误_Sql_Vba_Ms Access - Fatal编程技术网

Sql 基于另一个字段筛选查找字段-编译错误

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

我正在使用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

这是我的第一篇文章,所以我需要提供任何进一步的细节,我将感谢反馈。谢谢。

我不确定您的问题出在哪里,但可以给您一些基本的指导原则,以便您可以调试自己的代码

首先,尝试让您的代码至少可编译,因此尝试一些简单的方法:

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。有任何建议吗。