У меня есть приложение на C #, предназначенное для обновления одного поля в таблице на основе значения, найденного в другой таблице.Используя следующее:
listComm.CommandText = "update [c-disc] inner join [c-info] " +
"on [c-info].keys = [c-disc].cd_key set [c-disc].cd_distric = ? " +
"where [c-disc].cd_tax = ? and [c-info].ci_region = ?";
и в цикле foreach под ним:
string region = line.Substring(0, 4).PadRight(14);
string taxable = "Y";
string district = line.Substring(5, 4).PadLeft(4);
listComm.Parameters.Add(new OleDbParameter("?", district));
listComm.Parameters.Add(new OleDbParameter("?", taxable));
listComm.Parameters.Add(new OleDbParameter("?", region));
try {
listComm.ExecuteNonQuery();
listComm.Parameters.Clear();
} catch (Exception x) {
setStatusText("fatal error: " + x.Message.ToString();
}
Я получаю «Команда содержит нераспознанную фразу / ключевое слово».Использование того же запроса в MS Access работает нормально, когда я вставляю соответствующие значения вместо «?»заполнители.В Visual Studio, используя точки останова, я вижу, что все выглядит нормально - соединение открыто, а значения параметров соответствуют ожидаемым.У меня есть другая программа, которая работает аналогично, но только для одной таблицы.Я не могу понять, что не так с этим запросом.