В учебном проекте имитируем продажу товара клиенту.
При загрузке формы соединяюсь с БД и создаю в DataSet таблицу продажи (она пуста) с полями аналогичными полям истинной таблицы в БД. Для этого выполняю sql-Запрос к таблице в БД с условием, которое ложно. (клиента с таким кодом заведомо нет)
- Код: Выделить всё
con = new OleDbConnection(constr);
cmd = new OleDbCommand();
cmd.Connection = con;
da = new OleDbDataAdapter(cmd);
ds = new DataSet();
cmd.CommandText = "select [code artikel], [code klant],[datum verkoop], " +
"[aantal verkochte exemplaren], [verkoopprijs], " +
"[code betaling] " +
"from tblVerkopen where [code klant]=99-9999";
da.Fill(ds, "verkoop");
При запросе перечисляю все поля таблицы в БД. Таблица с "шапкой" нормально создается в DataSet и при работе программы нормально заполняется выбранными товарами и их количеством. После окончания продажи выбранному клиенту, произвожу UpDate БД, т.е. в реальную таблицу в БД добавляю строки из таблицы в DataSet, потом для нового клиента таблицу очищаю от строк ("шапка "остается).
Все хорошо.
Но надо еще обновить данные в таблице товаров в БД. Уменьшить "Сток" (voorraad) на количество проданных экземпляров.
Решил пойти проторенным путем, создать при загрузке формы еще одну таблицу, в которой хранить код товара и сток. Снова sql-запрос с ложным условием и ... ни фига. Сообщение об ошибке:"Отсутствует значение для одного или нескольких требуемых параметров."
- Код: Выделить всё
da = new OleDbDataAdapter(cmd);
//cmd.CommandText = "select [code artikel], Voorraad from " +
// "[tblArtikels_(verkoop)] where [code artikel]= VK-10000";
cmd.CommandText = "SELECT [Code artikel], Categorie, [Leveranciersreferentie artikel], " +
"[Code leverancier], [Naam artikel], [Beschrijving artikel], " +
"[Aankoopprijs artikel], [Verkoopprijs artikel], [BTW-code artikel]," +
" Voorraad, [Minimale voorraad], [Datum eerste aankoop], [Aantal maanden garantie] " +
"FROM [tblArtikels_(verkoop)] " +
"WHERE [Code artikel]=VK-10000";
da.Fill(ds, "AantalVerkocht");
Первоначально пробовал создать таблицу на два требуемых поля, чтобы не грузить память лишней информацией. Потом со всеми полями.
Результат тот же.
В чём может быть проблема Какой параметр я упустил Поля исходной таблицы перечислены полностью и правильно.
Для чего нужна эта таблица? Я буду заность туда код товара и кол-во проданных экземпляров. Потом вносить эти изменения в таблицу БД.
Вроде бы все логично. Или можно как-то по другому, более изящно, проще.