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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.07.2017, 19:50
СтранныйЯщер СтранныйЯщер вне форума
Прохожий
 
Регистрация: 13.07.2017
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Программа для продажи товара (Delphi 7)

Привет всем! Хочу создать программу через которую можно будет продавать товары. Уже создал базу данных в Access подключил ее в DBGrid через ADO теперь могу создавать, редактировать товар и сохранять в эту базу. Сейчас встал вопрос реализации самого момента продажи этого товара, не могу сообразить как это сделать. Вопрос такой, мне надо создать в этой БД еще одну таблицу (промежуточную), чтобы при выборе товара он заносился туда и когда чек будет закрыт все эти товары (точнее их количество) списывалось из первой таблицы? Верно я мыслю? Подскажите пожалуйста я новичок в программировании. Заранее благодарен!
Ответить с цитированием
  #2  
Старый 14.07.2017, 00:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Нет, не верно.
Вообще, если поискать по форуму, то я уже давал расклад по архитектуре подобных систем. Повторю в кратце.
Подобные системы бывают 2х типов:
Первый тип - основанные на количественном учете, т.е. то, что ты пытаешься сделать. Проблемой этого типа систем является то, что все операции производятся раздельно (можно пытаться объединить в единую транзакцию, но там свои подводные камни). Т.е. у тебя фактически одно и то же число хранится в нескольких местах и требует синхронного обновления.
Второй тип - системы основанные на документах. В системах такого типа данные (ну, кроме разных справочников) хранятся в виде приходных-расходных документов. В твоем случае:
- У тебя уже есть таблица товаров. Это, фактически, твой справочник товаров.
- Теперь тебе надо сделать таблицу документов. Там будет 2 типа документов. Приходные, например, приход товара на склад от поставщика. И расходные, например, отпуск клиенту - чек. Текущее наличие товара считается как (сумма прихода) - (сумма расхода). Кстати, там есть возможность делать быстрое резервирование - созданием документа резервирования и удаления таких документов при окончании редактирования основного расходного документа.

PS. У тебя курсач или что-то серьезное?

Последний раз редактировалось lmikle, 14.07.2017 в 03:56.
Ответить с цитированием
  #3  
Старый 14.07.2017, 07:04
СтранныйЯщер СтранныйЯщер вне форума
Прохожий
 
Регистрация: 13.07.2017
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Спасибо за ответ! Нет не курсач просто увлекся программированием и стало интересно разобраться как это работает. То есть я создаю еще таблицу с такими же столбцами как в первой? и делать в эту таблицу как бы занесение товара и убирания его от туда? то есть будет работать так: когда я выбираю товар из таблицы1 (которая уже создана и там есть товар) он переносится в таблицу2 когда я товар продаю в таблицу2 заносится еще строка этого товара но с меньшим количеством и потом это передается в таблицу1? так это работает? или я все таки не чего не понял(
Ответить с цитированием
  #4  
Старый 14.07.2017, 21:14
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

нет, не понял.
фактически, у тебя есть таблица-справочник по товарам:
- Артикул (уникальный ключ)
- Наименовани
- Цена для продажи
- др. параметры
Кол-ва нет. Кстати, тут есть нюанс, если хочется менять цену и хранить историю этого, но это отдельный вопрос.

Теперь тебе нужна таблица документов. На самом деле там 2 таблицы - заголовок документа и позиции документа. Но для простоты объяснения будем считать, что по одному документу мы получаем или отпускаем только одно наименование товара. Таблица будет выглядеть примерно так:
- номер документа (уникальный ключ)
- дата документа
- тип документа (ссылка на справочник документов, т.е. еще одна таблица, для простоты будет считать, что тут у нас хранится -1, 0 или 1)
- код товара (ссылка на 1ю таблицу)
- цена товара по документу (вот это будет копироваться со справочника, но можно править)
- кол-во единиц товара купленных/проданных по документу

Тогда текущий остаток товаров всегда можно посчитать путем сложения по всем документам с учетом типа документа. тогда резервирование товара реализуется как обычный документ.
Ответить с цитированием
  #5  
Старый 14.07.2017, 21:45
СтранныйЯщер СтранныйЯщер вне форума
Прохожий
 
Регистрация: 13.07.2017
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

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

То есть такая концепция:

1. Создать Таблица1 в БД (Поля: код, наименование, цена, остаток), в программе сделать удобную форму (Форма1) для занесения товара в эту таблицу.
2. Создать Форма2 где можно было бы выбирать товар из Таблица1, потом указывать количество продаваемого товара и нажать кнопку [Продать], при нажатии указанное количество вычиталось бы из количества в Таблица1 и все, от программы больше нечего не требуется.

Такая схема не будет работать?
Ответить с цитированием
  #6  
Старый 14.07.2017, 22:55
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Для обучения - будет.
Для курсача, а уж тем более для какой-то более серьезной цели - нет.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter