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

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

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

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


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

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

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

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

Не будите спашяго дракона.
             Джаффар (Коша)
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