Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Подскажите как прописать рассуждение в модуле  (Прочитано 5751 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Len
Гость
« : 22-09-2007 19:10 » new

Есть 2 таблицы Товар(Articul*,Name,Cena,Kolvo) и ПрихНаклТовар(NumPNT*,Articul,Name,Cena,Kolvo).
Когда приходуется товар рассуждаю так:
если товар с таким артикулом уже существует, то прибавляем количество ПНТ к количеству Товара иначе, добавляем строки из ПНТ в таблицу Товар.
Подскажите как прописать это рассуждение в модуле?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 22-09-2007 19:42 » 

Не совсем понятно, как расположены таблици.

Если таблици из базы данных, то сделать запрос на базу данных, на содержание артиклей. Если артикли есть, то произвести апгрейд, иначе добавление.

Если таблици в памяти, тогда придется ручками делать перебор. Лучше предварительно отсортировать две таблици по полю артикль.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Len
Гость
« Ответ #2 : 27-09-2007 13:08 » 

На форме две таблицы связаны с БДТовар(Articul*,Name,Cena,Kolvo) и БДПрихНаклТовар(NumPNT*,Articul,Name,Cena,Kolvo). Прописал такой код:
begin
TableТовар.Insert;
if TableПНТArticul.Value = TableТоварArticul.Value then TableТоварKolvo.Value := TableТоварKolvo.Value + TableПНТKolvo.Value
else
TableТоварArticul.Value:=TableПНТArticul.Value;
TableТоварName.Value:=TableПНТNameTov.Value;
TableТоварCena.Value:=TableПНТCena.Value;
TableТоварKolvo.Value:=TableПНТKolvo.Value;
except
end;
TableТовар.Post;
еnd;
end;
но он не работает, вроде все логически прописал... Если артикль в Товаре уже такой есть, то просто прибавляем кол-во к Товару иначе, просто добавляем строки. Программа выдает сообщение: Key violation.
Записан
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 28-09-2007 00:03 » 

После TableТовар.Insert у тебя TableТоварArticul.Value равен значению по умолчанию (скорее всего nil).
правильно будет так:
Код:
begin
// не помню точно ни названия функции, ни синтаксиса, но идея - в поиске по ключу
if TableТовар.FindByKey(TableПНТArticul.Value) then begin
TableТовар.Edit;
TableТоварKolvo.Value := TableТоварKolvo.Value + TableПНТKolvo.Value;
end else begin
TableТовар.Insert;
TableТоварArticul.Value:=TableПНТArticul.Value;
TableТоварName.Value:=TableПНТNameTov.Value;
TableТоварCena.Value:=TableПНТCena.Value;
TableТоварKolvo.Value:=TableПНТKolvo.Value;
end;
TableТовар.Post;
end;
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines