Member 13512434 Ответов: 1

Автоматическая проверка значения метки на соответствие datagridview


Я пытаюсь заставить систему проверить, что число в метке коррелирует с одним в базе данных ( аналогичная концепция для страницы входа в систему) Однако пользователю не нужно вводить какую-либо информацию, но я продолжаю получать ошибки...

OleDbDataAdapter da = new OleDbDataAdapter("Select * from [Customer Orders] WHERE [Order ID] = @[Order ID]", MAcon);
da.SelectCommand.Parameters.AddWithValue("@[Order ID]", PrdtID.Text);
DataTable dtbl = new DataTable();
da.Fill(dtbl);


Что я уже пробовал:

OleDbDataAdapter da = new OleDbDataAdapter("Select * from [Customer Orders] WHERE [Order ID] = @[Order ID]", MAcon);
da.SelectCommand.Parameters.AddWithValue("@[Order ID]", PrdtID.Text);
DataTable dtbl = new DataTable();
da.Fill(dtbl);

[no name]

И в чем же заключается ваш вопрос?

Wendelius

В чем заключается ошибка, которую вы получаете?

1 Ответов

Рейтинг:
2

an0ther1

Используйте свой отладчик - проверьте оператор, имеет ли он смысл, можете ли вы выполнить его с помощью другого инструмента запроса к БД?
Вероятные проблемы таковы;
Первый вопрос - почему вы называете свой параметр "@[Order ID]"?
Имена параметров не должны содержать пробелов, а также использовать скобки []. скобки [] используются при запросе столбцов, содержащих пробелы или зарезервированные слова.
Измените имя параметра на; @OrderId
Во-вторых, вы можете обнаружить, что AddWithValue интерпретирует ваше значение как неверный тип данных, поэтому ваше утверждение заканчивается следующим образом;

SELECT * FROM [Customer Orders] WHERE [Order ID] = '2'

когда вы действительно хотите
SELECT * FROM [Customer Orders] WHERE [Order ID] = 2

В зависимости от используемого вами движка базы данных это может быть автоматически преобразовано, а может и не быть - MS SQL обычно возвращает корректно, но MS Access-нет.
Либо преобразуйте строковое значение в правильный тип данных - скорее всего, целое число, либо используйте;
da.SelectCommand.Add("@OrderId", OleDbType.Integer).Value = 2

Это гарантирует, что ваше заявление будет создано правильно.

с уважением