C # MS Access INNER Синтаксическая ошибка соединения - PullRequest
0 голосов
/ 16 мая 2018

Я использую MS Access 2003 для генерации DataSource DataGridView, когда я запускаю программу, она выдает:

    "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();

           }

Я студент, и я не вижу своей ошибки, и именно этим я пользуюсь большую часть времени, как и мой руководитель, так что ... Вот и я! Спасибо за ваше время,

1 Ответ

0 голосов
/ 16 мая 2018

MS Access 'SQL диалект требует парных скобок вокруг предложений FROM и JOIN. Рассмотрим приведенную ниже настройку. Не забудьте также экранировать Имя , зарезервированное слово .

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...