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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Tris
Новичок
Сообщения: 7
Зарегистрирован: 14 Апрель 2009, 18:32

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

Сообщение Tris »

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

вопрос в том как сделать правильно проверку что kolvo из второй таблицы не больше чем kolvo в первой и соответствено из первой вычесть вторую и записать во первую таблицу. по сути расчитать расход и обновить его кол-во в первой таблице при заполнении второй :)
кларион 6 версии, есть кто желающий помочь? понимаю что вопрос до глупости прост, но в виду слабого знания клариона и отсутствия наглядного примера...
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

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

Сообщение Дед Пахом »

Какая БД? Для SQL и, скажем, TopSpeed решения диаметрально разные.
С уважением, ДП
Tris
Новичок
Сообщения: 7
Зарегистрирован: 14 Апрель 2009, 18:32

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

Сообщение Tris »

TopSpeed
заполнение ведется через формы созданные визардом
при вводе в форме кол-ва надо проверить не больше ли оно имеющегося (находится в связной таблице) и при нажатии ОК (ввод данных и закрытие формы апдейта) обновить значение в таблице товара (соответственно вычесть).
если есть какой пример то мог бы и сам разобраться, но в имеющихся в поставке не нашел ничего подходящего :(
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

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

Сообщение Дед Пахом »

Не вижу ничего сложного в проверке и коррекции по OK кол-ва товара в родителе и потомках. Ну в самом деле, id_prod есть, читаем запись, сравниваем кол-во. Потом уменьшаем.

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

Код бы написал, но уже пару лет не практикую серьёзно на Clarion, боюсь ошибиться в синтаксисе.
Если шаблоны ABC, то в процедуре Form буфер записи родительской таблицы д.б. заполнен актуальными значениями.
kolvo += child:kolvo
Access:Parent.Update()
или как-то так.
С уважением, ДП
Tris
Новичок
Сообщения: 7
Зарегистрирован: 14 Апрель 2009, 18:32

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

Сообщение Tris »

с этим вопросом спасибо за наводку. буду разбираться.
теперь если не против помучаю еще немного.
представим ситуацию что в расходе заполнили форму и нажали ОК. кол-во в родителе обновилось (скажем было 1000, указали 500, осталось в родителе 500). потом заметили что надо было отдать не пользователю А, а пользователю Б! открыли запись в форме на редактирование, поменяли пользователя и опять нажали на ОК. не получится ли ситуация что у меня опять спишется 500. и в остатке будет 0?
на всякий случай можешь указать какой функцией, евентом или еще как проверить было изменено конкретное поле или нет?
дело в том что последние годы я если что делал то на мс аксесе, а там есть событие на изменение значения поля. есть ли в кларионе такое событие?
Аватара пользователя
morkovin
Ветеран
Сообщения: 935
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 9 раз
Поблагодарили: 4 раза
Контактная информация:

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

Сообщение morkovin »

на всякий случай можешь указать какой функцией, евентом или еще как проверить было изменено конкретное
Я использую шаблон ControlMonitor. См. аттач.
Вложения
ControlMonitor.zip
Отслеживает изменение любого поля в форме
(16.42 КБ) 236 скачиваний
WBR, morkovin
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

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

Сообщение Дед Пахом »

По-моему, тут что-то с алгоритмом не так. Если ты списал 500, потом решил, что списать надо не 500, а 300, то спишешь ещё 300 к тем пятистам, итого 800. Должен быть нормальный документооборот, с проводками и всей прочей лабудой. То есть изменения уже проведённого документа происходят по другому сценарию.
С уважением, ДП
Tris
Новичок
Сообщения: 7
Зарегистрирован: 14 Апрель 2009, 18:32

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

Сообщение Tris »

ты несомненно прав, и возможность изменять и удалять записи я отключу вообще. да и сильно заморачиваться не хотелось - нужна же всего навсего программа для подсчета когда что и в каком кол-ве пришло на склад, и ушло. без всяких бумаг. просто все, но возможности программы с ее тонкостями я не знаю. и как понимаю нет нормальной книги по программированию на Кларионе 6. Хелп конечно вещь хорошая, но не не всегда есть примеры и подробное описание.
Timaas
Новичок
Сообщения: 21
Зарегистрирован: 30 Март 2009, 14:40

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

Сообщение Timaas »

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