![]() |
Модераторы: mihanik |
![]() ![]() ![]() |
|
Vrungel |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 4.6.2009 Репутация: нет Всего: нет |
ЗдрасьтЕ
Подскажите плиз как проделать следующее: есть 3 таблицы (Склад, приход, расход), во всех них есть поля "Наименование товара" и "кол-во" ... нужно чтобы при изменении данных в таблицах "приход" или "расход" происходило соответствующее арифметическое действие в таблице "склад". т.е. если в табл "приход", в поле "кол-во" написать 100, то в табл "склад" в поле "кол-во" должно прибавиться 100 ед товара, а если в "расходе" -50 то из "склада" вычесть 50 ед товара Если можно, то разжуйте всё по пунктам Заранее огромнейшее спасибо!!! Это сообщение отредактировал(а) Vrungel - 30.11.2009, 22:21 |
|||
|
||||
vovk |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 28.2.2008 Репутация: нет Всего: 6 |
Эти телодвижения конечно можно осуществить с помощью макросов, или VB, но не правильнее ли будет продумать структуру бд и к примеру (только для примера того что описано в вопросе) вместо 3х ваших таблиц сделать две: ТОВАР и ДВИЖЕНИЕ_ТОВАРА. В таблице товар описывать только сам ТОВАР (ну там название, описание, производитель, код, единица измерения, и тп.), а в таблице ДВИЖЕНИЕ_ТОВАРА добавить внешний ключ на таблицу ТОВАР и описывать уже сами действия (товар(ссылка на товар в таблице товаров), количество(как + так и - то есть прибыло убыло будут отличатся только знаком-), контрагент (от кого прибыло или куда убыло), дата (дата действия), ну и ещё поля если нужно )
Тогда легко можно будет с помощью запросов узнать количество каждого товара на любой момент времени. Ну вот както так Это сообщение отредактировал(а) vovk - 29.11.2009, 22:13 |
|||
|
||||
Vrungel |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 4.6.2009 Репутация: нет Всего: нет |
Беда в том, что я сделал прогу на Делфи и у меня идёт простое отображение данных БД в АДОТейбл,, лишние запросы не к чему ...
|
|||
|
||||
vovk |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 28.2.2008 Репутация: нет Всего: 6 |
На самом деле вам стоит прочитать, проектирование БД, хотя бы пару глав.
Ну а если всётаки решите делать по своему, то в общем случае тогда нужно реагировать на события ADOTable как вариант перед рактированием (событие AfterEdit) записывать в переменную значение поля "количество", а после сохранения изменений (событие BeforePost) проверять изменилось ли количество, то есть сравнить значение переменной со значением в таблице. Если изменилось, то искать в датасете который содержит таблицу ТОВАР соответствующую запись и редактировать её. По моему поддерживать целостность данных на такой БД то ещё удовольствие. Кстати тему стоило создать в "Delphi: Базы данных и репортинг" Это сообщение отредактировал(а) vovk - 30.11.2009, 07:20 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Программирование, связанное с MS Office" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |