Программы "Простой софт" www.prostoysoft.ru

ВНИМАНИЕ! РЕКЛАМНЫЕ СООБЩЕНИЯ И ГИПЕРССЫЛКИ В ФОРУМЕ ЗАПРЕЩЕНЫ (посты удаляются автоматически)
Текущее время: 27.11.2024 16:57

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Простое решение
СообщениеДобавлено: 15.02.2013 17:59 
Не в сети

Зарегистрирован: 11.10.2011 22:26
Сообщения: 123
Добрый день, может кто подскажет простое решение вопроса.
Необходимо чтобы при проведении заказа (ставим статус заказа = "выполнен") количество товара в заказе сверялось с наличием на складе и в случае нехватки товара - появлялось бы соответствующее сообщение и статус заказа нельзя было поставить "выполнен" без первоначального оприходования товара на склад.

Заранее благодарен


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простое решение
СообщениеДобавлено: 16.02.2013 22:16 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Да, такое можно реализовать посредством триггера.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простое решение
СообщениеДобавлено: 17.02.2013 14:02 
Не в сети

Зарегистрирован: 11.10.2011 22:26
Сообщения: 123
Я понимаю, что с помощью триггера, а вот сам триггер придумать не могу


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простое решение
СообщениеДобавлено: 18.02.2013 13:07 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Нужно задать условие для триггера:
[OrderStatus] = 'Выполнен' AND (SELECT QuantitySum FROM qdfStoresState) > <Quantity>
Сообщение:
"Вы ввели больше, чем на складе! Сбрасываем введенное количество и статус."
И сам триггер:
UPDATE tblOrdersItems SET Quantity = 0, OrderStatus = 'НЕ ВЫПОЛНЕН' WHERE ID = <tblOrdersItems>.<ID>

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простое решение
СообщениеДобавлено: 18.02.2013 17:14 
Не в сети

Зарегистрирован: 11.10.2011 22:26
Сообщения: 123
Я так понял, что триггер нужно ставить в таблицу заказанные товары.
А что за таблица tblOrdersItems


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простое решение
СообщениеДобавлено: 18.02.2013 17:59 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Да, в табилцу "Заказанные товары".
Поскольку вы не сообщили нам ваши конкретные имена таблиц и полей, tblOrdersItems - вымышленное имя.
В нашей стандартной демо БД эта таблица имеет имя qdfOrdersProducts.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простое решение
СообщениеДобавлено: 19.02.2013 11:23 
Не в сети

Зарегистрирован: 11.10.2011 22:26
Сообщения: 123
К сожалению не работает.
Есть несколько вопросов по триггеру:
1. Почему условие выглядит таким образом (SELECT QuantitySum FROM qdfStoresState) > <Quantity> ведь по логике - если на складе меньше товара чем заказано - то тогда должен выполняться триггер, а не наоборот.

2. Когда должен срабатывать триггер? По идее он должен срабатывать при изменении статуса заказа на "выполнен". Но тогда вопрос по триггеру - триггер ставим в таблице Заказанные товары, но там нет поля статус заказа. Поле "Статус заказа" есть в таблице "Заказы". но там нет триггера :) (круг замкнулся)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простое решение
СообщениеДобавлено: 19.02.2013 12:05 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Если не работает, обращайтесь к нам в поддержку с копией вашей БД и конкретным примером того, что не работает (если вы уже наш клиент).

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простое решение
СообщениеДобавлено: 20.02.2013 13:36 
Не в сети

Зарегистрирован: 11.10.2011 22:26
Сообщения: 123
Решил с помощью триггеров.
Остался единственный вопрос:

Можно ли в сообщении к триггеру вывести значение формулы. Например сообщение :
Недостающее количество товара составляет <Quantity> - <QuantitySum>

должно выдавать:

Недостающее количество товара составляет 60 (например).

Буду рад подробному ответу


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простое решение
СообщениеДобавлено: 20.02.2013 14:20 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Dm73 писал(а):
Решил с помощью триггеров.
Остался единственный вопрос:

Можно ли в сообщении к триггеру вывести значение формулы. Например сообщение :
Недостающее количество товара составляет <Quantity> - <QuantitySum>

должно выдавать:

Недостающее количество товара составляет 60 (например).

Буду рад подробному ответу

А почему бы не попробовать самому? 5 сек. же! Да можно. А если в сообщении в конце поставить знак «?» (вопросительное предложение), то сообщение будет запросом и содержать две кнопки: "ОК" и "Отмена", с помощью которых можно соответственно разрешить или запретить выполнение этого триггера.

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простое решение
СообщениеДобавлено: 21.02.2013 10:33 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Чтобы произошло распознавание выражения в сообщении, которое надо выполнять (чтобы посчитать результат), надо написать так:
(select <Quantity> - <QuantitySum>)
Т.е. должен быть select в скобках.
Если это не сработает, обратитесь к нам в поддержку с данным конкретным примером.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простое решение
СообщениеДобавлено: 21.02.2013 16:55 
Не в сети

Зарегистрирован: 11.10.2011 22:26
Сообщения: 123
Большое спасибо


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB