|
0 / 0 / 0
Регистрация: 03.10.2016
Сообщений: 22
|
|
БД по Учету движения и наличия товара на складе19.02.2018, 13:58. Показов 65025. Ответов 31
Доброго всем времени суток.
Постараюсь без длинного предисловия: волею случая, на складе предприятия где я работаю полетела БД написанная кем-то лет 20 назад, и лучшим моим решением было написать новую, несмотря на отсутствие опыта. Т.к. (на первый взгляд) функционал у нее достаточно простой и интерфейс нужен максимально понятный, выбрал Access. С Access'ом работал только в колледже "постольку-поскольку" и, по сути, изчаю его с нуля, поэтому уже столкнулся с множестом мелких моментов, которые жрут кучу времени и рваных волос на голове. Прошу подсказать основные моменты логики работы, дать советы по структуре (чую моя не оптимальна) и, по возможности, ответить на сопутствующие вопросы. Работу базы представяю так:
Прикрепляю большую часть своих горе-наработок в БД и схему данных, где более-менее виден след моих размышлений. Главный вопрос в составлении связей между таблицами. Ключевые поля вроде бы верно обозначил (хотя и там были проблемы), но как связать таблицы Приход - Склад - Отпуск вообще не пойму. Уже столкнулся с проблемой с большим количеством ниспадающих списков. Категория, Мера, Сотрудник - поля со списком. При добавлении товара, поле "Название" тоже хочу сделать списком, но в который можно вписать новую позицию, если товара еще не было. Более-менее приноровился с мастером посдстановок, и вроде бы это все кажется возможным, но как это будет выглядеть в итоге не знаю, есть опасения, что все это будет работать через ж. Так же с ключевым полем: в таблице "Мера" хотел убрать счетчик и сделать один ключевой столбец с названием мер. Но тогда их невозможно было нормально сортировать, даже если переписывать все заново, при открытии таблицы все сортировалось по алфавиту, что неудобно. При попытке понять связь таблиц пару раз зашел в ступор: После мастера подстановки в "Приход"е для связи с т."Мера", нормально связывались 2 неключевых поля. Но при попытке сделать так в схеме - показали фиг. Как это работает? Формы так же не обрадовали: вроде форма простая (Добавление категории),похоже на Delphi, но VB в макросах для меня темный лес, работает как-то странно и через раз. Извиняюсь за многабукав и глупые вопросы, я в Access ламер и языка VB не знаю, но обучаемый и стремящийся ![]() Заранее благодарю за любую помощь.
0
|
|
| 19.02.2018, 13:58 | |
|
Ответы с готовыми решениями:
31
База данных по учету движения материала на складе
Проверка наличия на складе остатков товара |
|
0 / 0 / 0
Регистрация: 03.10.2016
Сообщений: 22
|
|||
| 02.03.2018, 15:21 [ТС] | |||
|
Что вообще понимается под накладной? Строка в "Движении", "Приход"е или "Отпуск"е?
0
|
|||
| 02.03.2018, 15:39 | |||
|
в Номеклатуре код это код в Накладной кодов много, поэтому появляется idНакладной в Движении мы учитываем не коды, а накладные, поэтому есть поле idНакладной и сюда же ТипДвижения (приход\расход) допустим Из таблицы Движения мы берем приходы за дату, выбираем накладные, по накладной получаем коды товаров, суммируем - и вот у нас весь приход за ххх день
0
|
|||
|
2 / 2 / 0
Регистрация: 19.02.2018
Сообщений: 7
|
|
| 03.03.2018, 07:52 | |
|
Привет, JacPoison
Таблица "Склад" тебе не нужна. Таблица Приход минус Таблица Отпуск и будет, суть, Таблицей Склад. Реализуй его в виде Запроса Склад. Давай сначала. У нас ничего нет. В две колонки распишем операцию - действие с БД 1Операция: Пришел товар (Винт - Винт 4х20 - 100 - шт) 1БД: Появилась сущность Товар (название, кол-во, дата поступления, цена, снабженец и пр). Создадим таблицу с этими полями. Итого: Новая таблица Товар (КодТовара, название, параметры) 2Операция: Пришел товар (Шайба 20х100 (есть такое? )- 20 шт )2БД : Все в рамках нашей таблицы - ничего не меняем. 3Операция: Пришел товар (Винт - Винт 4х20 - 200 - шт) 3БД: Опа, у нас повторения большей части записи (1БД), стало быть надо менять базу. Выносим разные части обеих записей в отдельную Таблицу Поступление (дата, кол-во, снабженец и пр.). Для связи между ними вводим КодТовара (первичный ключ для Товар и индекс в Поступление) и КодПоступления (Это и есть номер ВходнойНакладной) для таблицы Поступления. Итого: Новая таблица Поступление (КодПоступления, КодТовара, дата, кол-во, ценаПокупки, ЦенаПродажи (+20%, например. )снабженец). 4Операция: Мы продали Товар с пункта 1 - Винт 4х20 - 30 штук. 4БД. Ну вот, новая операция опять "не помещается" в наши готовые таблицы, необходима Таблица Отпуск. (Вот тут вопрос, qwertehok (Привет), тут 3 варианта: а) Создать новую с привязкой к КодуТовара (из Товаров). (проблемы синхронизации с таблицей Поступление) б) Создать новую с привязкой к КодуПоступления (из Поступлений) ( Я выбрал эту) в) Добавить в Поступление новое поле с кодом Операции ( Проблемы с определением, с какой партии поступления мы продали товар... А если цену продажи, после пары продаж, решили изменить? ) Итого: Новая таблица Отпуск (КодОтпуска, КодПоступления, Дата, количество, ЦенаПродажи, Продавец) Запрос Select Товар.КодТовара, Товар.Название, Поступление.Кол-во - Отпуск.Количество From Товар, Поступление, Отпуск Where (Товар.КодТовара = Поступление.КодТовара) and (Поступление.КодПоступления = Отпуск.КодПоступления) , даст тебе остаток (то, что ты называешь таблицей Склад). Ну и дальше уже "наращивание мяса": 1. Добавь таблицу Категория Товара (Таблица Категории - КодКатегории, Название ), соответственно в Таблицу Товар добавь новое поле - КодКатегории. Сделай связь между ними; 2. Добавь таблицу Поставщики (КодПоставщика, Название, Адрес), в Поступления, соответственно, КодПоставщика. Связь между ними; 3. Добавь Сотрудники (КодСотрудника, ФИО, рост, вес... ), в Отпуск - КодСотрудника. Связь между ними.4. Добавь таблицу Поставщики (КодПоставщика, Название, Адрес), в Поступления - КодПоставщика. Связь. ... Так я вижу это все. С уважением, dangee
1
|
|
| 03.03.2018, 08:37 | ||||
|
не говорят Отпуск Говорят Приход-Расход думаешь вводом новой таблицы ты от этой проблемы ушел? для решения этой проблемы мы сначала должны эти партии ввести, а потом в расходе уже учитывать а в чем проблемы? перепечатать расходные документы и все темы партий, НДС, изменения цен ТС не касался, и я тоже) так как стоит о них только узнать и уже не остановишься)
0
|
||||
|
2 / 2 / 0
Регистрация: 19.02.2018
Сообщений: 7
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 03.03.2018, 10:01 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Точно. Я не датабазник и не аксессник.Приход Дата Товар Цена Кол-во 1 янв 2018 винт 20х5 5 руб 70 шт 15 янв 2018 винт 20х5 4.5 500 шт (скидка за кол-во) Наценка +100% (для удобства счета) Расход Дата Товар Цена Кол-во 4 янв 2018 винт 20х5 10 руб 20 шт 25 янв 2018 винт 20х5 ??? 50 шт (с какой партии будет выбираться товар: с 1 янв или с 15 янв?) 27 янв 2018 винт 20х5 9 руб 200 шт (тут понятно, только вторая партия, с первой столько нет)
"С сегодняшнего дня в связи с инфляцией поменять цену на остаток товара ХХХ." директор Петров.
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 03.03.2018, 10:51 | |||
|
нужно внедрять понятие Партия и делать учет (Fifo и noFifo) тут же у нас затрагиваются документы задним числом) и перерасчет последовательности)) и еще 100500 проблем а так же нужно учитывать НДС и так как цена понятие периодическое, то менять ее одним UPDATE нельзя, нужен как в 1с справочник цен. и это тоже нужно учитывать
0
|
|||
|
2 / 2 / 0
Регистрация: 19.02.2018
Сообщений: 7
|
|
| 03.03.2018, 12:09 | |
|
Я сюда (cyberforum.ru/msaccess/) забрел за "рецептом счастья" - структурой небольшой базы для продаж (Товары/Поступление/Продажа).
Пока ничего не нашел. Все сложно, все через кучу таблиц. ![]() В той базе что я сделал, начались проблемы после того как изменяются цены на остатки (Схема была такая: Товары->Поступление/Продажа (объединенная таблица для операций, положительное число - поступление, отрицательное - продажа). Запрос по остаткам выдает то "старую" цену, то - "новую". Поэтому и рекомендую структуру вида Товар->Поступление->Продажа. Кстати, где наш ТС? Куда Вы его заслали ?
0
|
|
| 03.03.2018, 12:35 | |||
|
ЗЫ я рекомендую делать формы на аксессе, а в качестве БД использовать MSSQL. и работать из аксесса с с хранимыми процедурами, написанными в MSSQL
0
|
|||
|
2 / 2 / 0
Регистрация: 19.02.2018
Сообщений: 7
|
|||
| 03.03.2018, 13:47 | |||
|
1. Либо привязать к таблице Приход (Товар->Приход->Продажа) 2. Либо привязать к таблице Товары (Приход <- Товар -> Продажа) 3. Либо, как Вы советовали, слить ее с таблицей Приход, учитывая, что все поля одинаковые (цена, дата, кол-во). Добавить поле Операция (со значениями Поступление/Продажа). Я последней структурой пользовался. Там и возникли проблемы, что при изменении цены на остатки (!), выводится то "старая" цена, то - "новая".
0
|
|||
| 03.03.2018, 14:03 | |||
|
0
|
|||
|
0 / 0 / 0
Регистрация: 03.10.2016
Сообщений: 22
|
||||||||
| 06.03.2018, 09:51 [ТС] | ||||||||
|
Так, не ожидал такого обилия комментариев, пришлось немного поразбираться.
Большое спасибо, что так подробно все расписал, легко было составить картинку в голове, а заодно и схему бд на бумаге. В той БД, которая стояла до этого (с 500лохматого года), делали отдельная база (файл) на каждый год. Просто переносили некоторые части старой БД в новую. Думал будет удобно делать так же: на новый год переносить всю т.Склад в чистую базу, а приходы и расходы уже будут заполняться заново. Но, думаю, новые версии не так страдают от большого количества записей. Ни цен, ни продажи, ни поставщиков с адресами. Просто пришел наш электрик за 10м. кабеля, например. ![]()
0
|
||||||||
| 06.03.2018, 10:11 | ||
|
В товарах не должно быть количества Ну не делают так, пусть у тебя и самая простая база. пусть нет накладных. пусть будет просто строка в таблице Движения Операция - Иванов забрал дрель Сначала дрель должна появиться на складе. Вносим дрель в справочник, присваиваем ей код, категорию. Делаем приход за 2000 год(допустим) id 1 дата 01,01,2000 кто код_сотрудника что код_дрели сколько 1 (если +1 - операция Приход) Вчера Иванов забрал дрель id - 2 дата 06,03,2018 кто код_Иванова что код_дрели сколько -1 (если -1 - Расход) и так далее
0
|
||
| 06.03.2018, 10:11 | |
|
Учет движения товара на складе Реализовать проверку наличия товара на складе при проведении документа расходной На аптечном складе хранятся лекарства. Необходимо составить ведомость по учету лекарств. Программа по учету товара в делфи с использованием БД (Access)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|