Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.11.2010, 01:15
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
Вопрос Как минусовать комплектующие из таблицы при продаже изделия из другой таблицы?

Всем привет. Вот суть проблеммы:
есть таблицы "Запчасти" (id, name, price), "Состав_Изделия" (id, id_zapchast, id_komplekt, kolvo) и "Комплект" (id, name, price).

Допустим комплект это табуретка, она включает записи - болт 10 шт.*3 руб., крышка 1 шт.*50 руб, ножка 4 шт.*17 руб. из таблицы "Запчасти". Как мне при продаже 2 шт. табуреток списать составляющие?
Пожалуйста, помогите, два дня топчусь на месте...
Ответить с цитированием
  #2  
Старый 22.11.2010, 20:57
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Никто и не поможет?
Ответить с цитированием
  #3  
Старый 22.11.2010, 21:28
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

Ну тут как бы и нечего списывать - инфа о количестве оставшихся запчастей нигде не хранится (или под "списать" что-то еще понимается?). А так - хранимая процедура с курсорами (база, кстати, какая?). По Id комплекта добываем его состав, для каждой строки результата изменяем количество соответствующей запчасти, умноженное на кол-во комплектов. А если нет нужного кол-ва в запасе, то откатываем транзакцию.
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
  #4  
Старый 22.11.2010, 21:52
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Цитата:
Сообщение от KOOL
По Id комплекта добываем его состав, для каждой строки результата изменяем количество соответствующей запчасти, умноженное на кол-во комплектов. А если нет нужного кол-ва в запасе, то откатываем транзакцию.

Очень прошу, можно на примере запрос SQL, как добыть состав по id и умножить его на Состав_Изделия.kolvo
Ответить с цитированием
  #5  
Старый 22.11.2010, 22:12
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

У вас здесь нет главного. Склада - где эти детали храятся и их количества соответственно с которым надо работать.
Состав_изделия не дает этой информации, это просто шаблон с необходимым количеством деталей.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 22.11.2010, 23:47
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

В таблицу "Запчасти" добавил поля prixod, rasxod. Есть таблица с накладными прихода из которой с помощью запроса
Код:
SELECT SUM(kol), idtov
from prixtable
GROUP BY  idtov
получаю количество прихода запчастей... Аналогично могу посчитать расход, но вот как получить расход при продаже готового изделия?
Ответить с цитированием
  #7  
Старый 23.11.2010, 06:16
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

вообще-то, есть всего 2 модели ведения склада.
1. Модель хранения остатков. Есть таблица, где указаны численные значения остатков товаров на складе. Неудобность этой модели в том, что в случае отмены какой-либо операции тебе надо восстанавливать значения. также, если в процессе выполнения какой-либо сложной операции у тебя что-то отвалилось, то не факт, что там будет правильное значение. Плюс сложность реализации резервирования.
2. Модель прихода-расхода. в этом случае у тебя текущее состояние на складе вычисляется как сумма приходных и расходных накладных. Недостаток - через некоторое время вычисление суммы начинает занимать значительное время. Решается путем введения доп. документа "Инвентаризация". Тогда вычисление проводится от момента последней инвентаризации. Т.е. у нас есть доп. документ.

Исходя из этих моделей, у тебя должен быть документ, реализующий выдачу со склада товара, для сборки некоторого изделия. Кстати, его можно реализовать в виде шаблона, когда ты указываешь изделие, а программа автоматически составляет расходную накладную по некоторому справочнику на отдельные товары/детали.
Ответить с цитированием
  #8  
Старый 24.11.2010, 01:27
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Цитата:
Сообщение от lmikle
у тебя должен быть документ, реализующий выдачу со склада товара, для сборки некоторого изделия. Кстати, его можно реализовать в виде шаблона, когда ты указываешь изделие, а программа автоматически составляет расходную накладную по некоторому справочнику на отдельные товары/детали.
А можно подробнее об этом?
Ответить с цитированием
  #9  
Старый 24.11.2010, 05:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да вроде и так все понятно.
Есть специальный документ - выдача для сборки. При его заполнении ты просто указываешь какие изделия надо собирать. В отдельной таблице есть список какие детали идут для какого изделия. Далее при сохранении (или при подтверждении) этого докусмента просто формируется еще один на отпуск нужного кол-ва деталей по этой специальной табличке.

ЗЫ. Тебе это все для чего? По работе или для учебы? Просто, если для учебы, то можно сильно не напрягаться и такую сложную систему не городить.
Ответить с цитированием
  #10  
Старый 24.11.2010, 21:22
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Пишу для друга прогу по учету материалов на его фирме (занимается изготовлением мебели). Полгода пользовался моей програмой, только там шло списание товара и все... а тут придумал чтоб учитывались составляющие, так как торгуют и фурнитурой и готовыми изделиями...
Ответить с цитированием
  #11  
Старый 25.11.2010, 20:06
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Может кто покажет примерную структуру базы для даного случая? Очень прошу, уже неделю бьюсь об стенку
Ответить с цитированием
  #12  
Старый 25.11.2010, 21:23
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Раз у вас задача реальная, то простые решения с минусованием товара на живой БД забудьте. Все операции должны быть документированы в БД и в любой момент времени вы должны получать ту или иную информацию за любой период. Воспользуйтесь для начала советом Imikle он дельную мысль подкинул.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #13  
Старый 25.11.2010, 22:47
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Цитата:
Сообщение от Страдалецъ
Воспользуйтесь для начала советом Imikle он дельную мысль подкинул.

Так в том и проблемма, что не могу понять сам принцип... очень нужен пример
Ответить с цитированием
  #14  
Старый 26.11.2010, 01:05
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Начал писать ответ, но подумавши я решил, что вам лучше ссылочку на демку дам.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #15  
Старый 26.11.2010, 01:53
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Цитата:
Сообщение от Страдалецъ
Начал писать ответ, но подумавши я решил, что вам лучше ссылочку на демку дам.
Спасибо большое, просмотрю... Только я забыл уточнить что работаю с базой Access .mdb
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:09.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter