Страница 1 из 1

Уважаемые Гуру, помогите решить вопрос на 2 минуты

Добавлено: 14 Апрель 2009, 18:45
Tris
суть такая:
есть две таблицы - продукты и расход
в первой есть id_prod, name, kolvo
во второй : id_rashod, id_prod, kolvo, data
где id_xxxxx - ключевой индекс
name - название чего-то там
kolvo- кол-во этого самого
таблицы связаны 1 ко многим через id_prod

вопрос в том как сделать правильно проверку что kolvo из второй таблицы не больше чем kolvo в первой и соответствено из первой вычесть вторую и записать во первую таблицу. по сути расчитать расход и обновить его кол-во в первой таблице при заполнении второй :)
кларион 6 версии, есть кто желающий помочь? понимаю что вопрос до глупости прост, но в виду слабого знания клариона и отсутствия наглядного примера...

Re: Уважаемые Гуру, помогите решить вопрос на 2 минуты

Добавлено: 14 Апрель 2009, 20:00
Дед Пахом
Какая БД? Для SQL и, скажем, TopSpeed решения диаметрально разные.

Re: Уважаемые Гуру, помогите решить вопрос на 2 минуты

Добавлено: 14 Апрель 2009, 20:27
Tris
TopSpeed
заполнение ведется через формы созданные визардом
при вводе в форме кол-ва надо проверить не больше ли оно имеющегося (находится в связной таблице) и при нажатии ОК (ввод данных и закрытие формы апдейта) обновить значение в таблице товара (соответственно вычесть).
если есть какой пример то мог бы и сам разобраться, но в имеющихся в поставке не нашел ничего подходящего :(

Re: Уважаемые Гуру, помогите решить вопрос на 2 минуты

Добавлено: 14 Апрель 2009, 21:31
Дед Пахом
Не вижу ничего сложного в проверке и коррекции по OK кол-ва товара в родителе и потомках. Ну в самом деле, id_prod есть, читаем запись, сравниваем кол-во. Потом уменьшаем.

Хотя для этого есть в 6-ке полезная фича - клиентские триггеры. Пишем в словаре код для insert/update/delete-операций дочерней таблицы и обновляем, если возможно и нужно, родителя прямо в этих триггерах.
2 раза кликнуть на таблицу в словаре, и там 3 закладки - columns, keys, triggers.

Код бы написал, но уже пару лет не практикую серьёзно на Clarion, боюсь ошибиться в синтаксисе.
Если шаблоны ABC, то в процедуре Form буфер записи родительской таблицы д.б. заполнен актуальными значениями.
kolvo += child:kolvo
Access:Parent.Update()
или как-то так.

Re: Уважаемые Гуру, помогите решить вопрос на 2 минуты

Добавлено: 15 Апрель 2009, 2:21
Tris
с этим вопросом спасибо за наводку. буду разбираться.
теперь если не против помучаю еще немного.
представим ситуацию что в расходе заполнили форму и нажали ОК. кол-во в родителе обновилось (скажем было 1000, указали 500, осталось в родителе 500). потом заметили что надо было отдать не пользователю А, а пользователю Б! открыли запись в форме на редактирование, поменяли пользователя и опять нажали на ОК. не получится ли ситуация что у меня опять спишется 500. и в остатке будет 0?
на всякий случай можешь указать какой функцией, евентом или еще как проверить было изменено конкретное поле или нет?
дело в том что последние годы я если что делал то на мс аксесе, а там есть событие на изменение значения поля. есть ли в кларионе такое событие?

Re: Уважаемые Гуру, помогите решить вопрос на 2 минуты

Добавлено: 15 Апрель 2009, 7:13
morkovin
на всякий случай можешь указать какой функцией, евентом или еще как проверить было изменено конкретное
Я использую шаблон ControlMonitor. См. аттач.

Re: Уважаемые Гуру, помогите решить вопрос на 2 минуты

Добавлено: 15 Апрель 2009, 8:34
Дед Пахом
По-моему, тут что-то с алгоритмом не так. Если ты списал 500, потом решил, что списать надо не 500, а 300, то спишешь ещё 300 к тем пятистам, итого 800. Должен быть нормальный документооборот, с проводками и всей прочей лабудой. То есть изменения уже проведённого документа происходят по другому сценарию.

Re: Уважаемые Гуру, помогите решить вопрос на 2 минуты

Добавлено: 15 Апрель 2009, 11:15
Tris
ты несомненно прав, и возможность изменять и удалять записи я отключу вообще. да и сильно заморачиваться не хотелось - нужна же всего навсего программа для подсчета когда что и в каком кол-ве пришло на склад, и ушло. без всяких бумаг. просто все, но возможности программы с ее тонкостями я не знаю. и как понимаю нет нормальной книги по программированию на Кларионе 6. Хелп конечно вещь хорошая, но не не всегда есть примеры и подробное описание.

Помогите начинающему кларионисту...

Добавлено: 28 Апрель 2009, 1:31
Timaas
Есть Browsник с кучей условий и conditional behaviors, нужно реализовать связь tree с броузником по одному из полей базы браузника, типа - если поле tree равно соответсвующему полю записи то её видно. У меня Clarion 6.3 build9058. Помогите плиз, совсем туго идёт с Клашей раздупление %-(