【问题标题】:C# MS Access INNER Joining syntax errorC# MS Access INNER 加入语法错误
【发布时间】:2018-05-16 14:17:54
【问题描述】:

我正在使用 MS Access 2003 生成 DataGridView 的 DataSource,当我启动程序时,它会抛出:

    "Syntax error (no operator) in expression " k.Ka = p1.Id                 
       INNER JOIN Person AS p2 ON k.Kc1 = p2.Id
       INNER JOIN Person AS p3 ON k.Kc3 = p3.Id "

我的代码:

     try
            {

                using (OleDbConnection conn = new OleDbConnection(connecString))
                {

                    conn.Open();

       OleDbCommand cmd = new OleDbCommand(@"Select k.[Desc],k.Family,k.Num,p1.Name 
            AS KeyAdmin, p2.Name AS KeyCustodian1, p3.Name AS KeyCustodian3,p4.Name
            AS SecurityOfficer,p5.Name AS ServiceIT
            FROM KC AS k
            INNER JOIN Person AS p1 ON k.Ka = p1.Id                 
            INNER JOIN Person AS p2 ON k.Kc1 = p2.Id
            INNER JOIN Person AS p3 ON k.Kc3 = p3.Id       
            INNER JOIN Person AS p4 ON k.So = p4.Id  
            INNER JOIN Person AS p5 ON k.It = p5.Id
            WHERE k.Num = @Num;", conn);

               OleDbDataAdapter adapt = new OleDbDataAdapter(cmd);

               cmd.Parameters.AddWithValue("@num", form.comboKC.SelectedValue);


               DataTable dt = new DataTable();

               adapt.Fill(dt);
               form.dataGridView1.DataSource = dt;
               conn.Close();

           }

我是一名学生,我看不到我的错误,而且我大部分时间都在使用它,我的主管也不能,所以......我来了! 谢谢你的时间,

【问题讨论】:

  • 直接在 Access 中运行时查询是否有效?
  • 自从我上次使用 ms-access 以来已经很久了,但我记得它喜欢括号。尝试ON (k.Ka = p1.Id) 进行所有连接。
  • form.comboKC.SelectedValue 是否返回一个有效值供您选择?

标签: c# sql ms-access


【解决方案1】:

MS Access 的 SQL 方言需要围绕 FROMJOIN 子句的括号配对。考虑以下调整。一定要转义 Namereserved word

SELECT k.[Desc], k.Family, k.Num, p1.[Name] AS KeyAdmin, p2.[Name] AS KeyCustodian1, 
       p3.[Name] AS KeyCustodian3, p4.[Name] AS SecurityOfficer, p5.[Name] AS ServiceIT
FROM ((((KC AS k
INNER JOIN Person AS p1 ON k.Ka = p1.Id)                
INNER JOIN Person AS p2 ON k.Kc1 = p2.Id)
INNER JOIN Person AS p3 ON k.Kc3 = p3.Id)       
INNER JOIN Person AS p4 ON k.So = p4.Id)  
INNER JOIN Person AS p5 ON k.It = p5.Id
WHERE k.Num = @Num;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    相关资源
    最近更新 更多