Здравствуй, Андрей.
Возвращаясь к напечатанному.
Существует следующая ситуация.
Организация таблиц:
Есть справочник Предприятия.
Есть таблица Счета.
В таблице Счета есть два поля: Код поставщика, Код получателя. Это коды из таблицы Предприятий.
Счета и Предприятия связаны на сервере два раза по двум полям. В кларином словаре связи нет.
Просмотр счетов:
Есть окно SQLBrowse для просмотра счетов.
В окне просмотра показывается наименование поставщика и получателя. Эти имена берутся из таблиц
"Предприятия" и "Алиас для Предприятий", описанных в кларином словаре.
Связываю таблицы "Счета", "Предприятия" и "Алиас для Предприятий" руками в точке вставки
WHERE:
SELF.Select.Relation(ACC:ProviderID,EPS:EnterpriseID,False)
SELF.Select.Relation(ACC:RecipientID,EPS1:EnterpriseID,False)
где EPS1 - префикс алиаса
Редактирование счета:
На форме два entry-поля для локальных переменных: Имя поставщика, Имя получателя
+ две шаблонные кнопки Lookup button
Обе кнопки вызывают одну и ту же процедуру просмотра таблицы "Предприятия".
Все работает красиво.
Последовательность действий:
1. Пустой брауз.
2. Добавляем новый счет
3. Поставщик: Первый
4. Получатель: Второй
5. Сохраняем
6. В листе показывается Поставщик: Второй, Получатель: Первый - должно быть наоборот
7. Нажимаю кнопку Refresh - становится как надо: Поставщик: Первый, Получатель - Второй
8. Жмем изменить счет.
9. Меняем получателя: Третий
10. Сохраняем
11. В листе показывается - Поставщик: Третий Получатель: Второй
12. Жмем Refresh: Поставщик: Первый, получатель: Третий
Т.е. грабли возникают при просмотре счетов. Редактирование все ОК.
Что делаю не так?
Если понадобится, то могу выслать приладу и скрипты таблиц MS SQL: все в зачаточном состоянии.
Спасибо.
связи, lookup ... еще раз
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Re: связи, lookup ... еще раз
как работает Form + Browse, после успешного завершения ввода в форме редактирования запись в Browse инициализируется значениями из файловых буферов, а они на момент выхода из формы неправильные, необходимо соответсвующие записи из справочников подкачать перед выходм из формы либо самому через MAVGET, либо имея в словаре на эти справочники связи вставить в File Schematic для Save кнопки, тогда они сами подкачаются по связям из DCTStillZero писал(а):Здравствуй, Андрей.
Возвращаясь к напечатанному.
Существует следующая ситуация.
Организация таблиц:
Есть справочник Предприятия.
Есть таблица Счета.
В таблице Счета есть два поля: Код поставщика, Код получателя. Это коды из таблицы Предприятий.
Счета и Предприятия связаны на сервере два раза по двум полям. В кларином словаре связи нет.
Просмотр счетов:
Есть окно SQLBrowse для просмотра счетов.
В окне просмотра показывается наименование поставщика и получателя. Эти имена берутся из таблиц
"Предприятия" и "Алиас для Предприятий", описанных в кларином словаре.
Связываю таблицы "Счета", "Предприятия" и "Алиас для Предприятий" руками в точке вставки
WHERE:
SELF.Select.Relation(ACC:ProviderID,EPS:EnterpriseID,False)
SELF.Select.Relation(ACC:RecipientID,EPS1:EnterpriseID,False)
где EPS1 - префикс алиаса
Редактирование счета:
На форме два entry-поля для локальных переменных: Имя поставщика, Имя получателя
+ две шаблонные кнопки Lookup button
Обе кнопки вызывают одну и ту же процедуру просмотра таблицы "Предприятия".
Все работает красиво.
Последовательность действий:
1. Пустой брауз.
2. Добавляем новый счет
3. Поставщик: Первый
4. Получатель: Второй
5. Сохраняем
6. В листе показывается Поставщик: Второй, Получатель: Первый - должно быть наоборот
7. Нажимаю кнопку Refresh - становится как надо: Поставщик: Первый, Получатель - Второй
8. Жмем изменить счет.
9. Меняем получателя: Третий
10. Сохраняем
11. В листе показывается - Поставщик: Третий Получатель: Второй
12. Жмем Refresh: Поставщик: Первый, получатель: Третий
Т.е. грабли возникают при просмотре счетов. Редактирование все ОК.
Что делаю не так?
Если понадобится, то могу выслать приладу и скрипты таблиц MS SQL: все в зачаточном состоянии.
Спасибо.
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
это где?после успешного завершения ввода в форме
обычно использую в Kill WindowManager-а, вот так:
... SELF.Response = RequestCompleted
а сейчас грит, что SELF.Response = 0, очистилось что ли...
есть точка MAV:Save Completed с приоритетом от 9700 там работает, туда надо ? а там SELF.Response чей - WindowManager-а или твоего класса?
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
в дополнении к вышесказанному:
вообще не понял, где отследить с чем зашли в форму (Request) и с чем вышли (Response)
к примеру, вешаю на стд WindowManager (ThisWindow) на Kill
if SELF.Response = RequestCancelled...
по кнопке "Отмена" (?Cancel) код отрабатывает, по ESC нет, вечер правда, может втупил по тяжкой
вообще не понял, где отследить с чем зашли в форму (Request) и с чем вышли (Response)
к примеру, вешаю на стд WindowManager (ThisWindow) на Kill
if SELF.Response = RequestCancelled...
по кнопке "Отмена" (?Cancel) код отрабатывает, по ESC нет, вечер правда, может втупил по тяжкой
MAV:Save.Kill в нём анализируй SELF.ResponseStillZero писал(а):это где?после успешного завершения ввода в форме
обычно использую в Kill WindowManager-а, вот так:
... SELF.Response = RequestCompleted
а сейчас грит, что SELF.Response = 0, очистилось что ли...
есть точка MAV:Save Completed с приоритетом от 9700 там работает, туда надо ? а там SELF.Response чей - WindowManager-а или твоего класса?
в том же MAV:Save есть свойство RequestStillZero писал(а):в дополнении к вышесказанному:
вообще не понял, где отследить с чем зашли в форму (Request) и с чем вышли (Response)
к примеру, вешаю на стд WindowManager (ThisWindow) на Kill
if SELF.Response = RequestCancelled...
по кнопке "Отмена" (?Cancel) код отрабатывает, по ESC нет, вечер правда, может втупил по тяжкой
такж есть и OriginalRequest обычная локальная переменная