| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS Access > Добавление данных в несколько таблиц |
| Автор: Fishb1 13.2.2009, 17:29 |
| Здравствуйте. У меня есть база данных складского учета. В ней 3 таблицы. таб1-таблица приход материалов; таб2-склад; таб3-списание материалов; По логике должно работать так: Приходит материал(таб 1) , далле данные из таблицы таб1 должны добавляться в таблицу таб2, но если какие материалы из таб1 совпадают с материалами из таб2, то должны просто суммироваться, а не добавляться как новая запись. Списание материала должно проводится примерно так, таблица таб3 должна брать данные о материале из таблицы таб2(с помощью полей подстановок) при этом количесво которое указано в таб3 должно отниматься от количества из таб2. На практике не знаю как сделать,помогите пожалуйста. Если что то не понятно пишите. |
| Автор: Fishb1 13.2.2009, 17:37 |
| Посоветуйте пожалйста как лучше сделать. |
| Автор: Akina 13.2.2009, 17:42 |
| Одна таблица. В ней - материал и вид операции (приход, расход) - причём типов прихода/расхода может быть несколько (закупка или возврат из цеха, выдача в работу или списание, и т.п.), для этого существует отдельная таблица операций. А текущие остатки считаются простейшим запросом. И всё, собсно... |
| Автор: Fishb1 13.2.2009, 17:49 | ||
Вы имеете ввиду приход/расход делать в одной таблицы, только при это в отдельном поле указывать причину? |
| Автор: FINANSIST 13.2.2009, 18:35 | ||||||||||||
ААА, КАКОЙ УЖАС!!! читайте матчасть по нормализации баз данных Вариант структуры № 1 (как пример)
Вариант 2 совмещаем аналитики Приход/Расход в одну "Оборот", притоки оформляем знаками + ;оттоки -
От ID аналитик связка к Primary Key Справочников соответствующих аналитик Рассчитать начальные и конечные сальдовки при такой структуре - ну вообще никаких проблем! Сальдо начальное на 31/12/2008 ( то бишь остатки на складе) по Варианту 2
Оборот Водки за новогодние праздники (12 го кажется кончились)
Сальдо конечное
Можно результаты запросов воткнуть в отдельную таблицу а ля "РегистрыОстатков" (Поступал так, когда было необходимо хранить дополнительные агрегированные расчёты по всем аналитикам для формирования OLAP-кубов) |
| Автор: bopoha 13.2.2009, 18:39 |
| Fishb1, любые правила нарушать можно, если вы знаете зачем вы их нарушаете. В Вашем случае я бы действительно обошелся 2-я таблицами. 1-я таблица - накладкная Код накладной (счетчик) Номер накладной ... '-- др. поля накладной 3-я Таблица товар Код товара Код накладной (счетчик) Код наименования товара Количество товара Количество списанного товара Сумма за единицу '-- прочите поля 3-я таблица - наименования товара Код наименования товара Наименование товара В результате списание товара сводится к увеличению "Количество списанного товара" до значения поля "Количество товара". То, что товар повторяется нет ничего страшного. Главное учет! P.S. В моем случае поле "Количество списанного товара" разделилось на два: Зарезервировано и Списано. Что очень удобно! |
| Автор: Fishb1 14.2.2009, 11:21 |
| Спасибо большое за помощь. Буду делать на двухтаблицах, так действительно проще. |