【发布时间】: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是否返回一个有效值供您选择?