Независимые Browse в интерфейсе

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
volkov_alex
Сообщения: 5
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Независимые Browse в интерфейсе

Сообщение volkov_alex »

Добрый день!

Подскажите, кто знает, как в интерфейсе в одном окне сделать два броуза независимых (от разных логических таблиц). Нужно, например, чтобы в одном был список накладных, я их помечаю, а во втором - список МЦ, в котором суммировалось количество по помеченным документам.

Спасибо.
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Re: Независимые Browse в интерфейсе

Сообщение ecasoft »

Есть такое понятие как ПАНЕЛЬ..- область активности какой-то таблицы...в панели есть оператор table <имя таблицы>. Таким образом у Вас должно быть две панели с разными таблицами. В одну панель входит один или несколько браузеров и/или скринов. У панели есть свой обработчик событий - это события по таблице панели. Вот такие дела. Полностью идеологию панелей лучше прочесть в доке, а то там много.

Хотя может неправильно понял вопрос - может так какие тонкости не получаются?

С уважением, Игорь
Некоммерческое общение в форуме
volkov_alex
Сообщения: 5
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Независимые Browse в интерфейсе

Сообщение volkov_alex »

table <имя таблицы> есть и у browse, туда прописываю имена из разных логических таблиц - ничего не получается, только если из первой описанной в интерфейсе, но тогда они получаются логически связанные и при перемещении по первому browse изменяется информация во втором (из подцепленной таблицы), а нужна инфа из другой логической.

Документацию почитал бы, если б была, буду благодарен если перешлете на fp@arh.ru
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Независимые Browse в интерфейсе

Сообщение m0p3e »

Оформи как два разных узла.
ROOT == KatSopr.nrec
ROOT == KatMc.nrec
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Независимые Browse в интерфейсе

Сообщение m0p3e »

Ну и браузы сообветствующие есесенно...
Browse KS
Table KatSopr

Browse KM
Table KatMc
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: Независимые Browse в интерфейсе

Сообщение Maverick »

Ну например можно так )))
Слева Накладные, справа - МЦ, кот не завият др от др.

Это сразу можно компилить

Interface TwoPanels;
Create View As Select *
From
KatMC, KatSopr;

Panel pnlLeft;
Show At (,,40,);
Table KatSopr;
Browse brwKatSopr;
Fields
KatSopr.NoDoc : [10],skip;
KatSopr.DSopr : [10],protect;
End;
HandleEvent
cmInit :{};
cmClose:{};
cmDone :{};
End;
End;

Panel pnlRight
Show At (41,,,);
Table KatMC;
Browse brwKatMC;
Fields
KatMC.Name : [35],Protect;
End;
HandleEvent
cmInit :{};
cmClose:{};
cmDone :{};
End;
End;

HandleEvent
cmInit :{};
cmClose:{};
cmDone :{};
End;
End.
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Re: Независимые Browse в интерфейсе

Сообщение Goblin »

Если нужна в одном из browse именно подбивка по кол-ву МЦ из спецификации помеченных накладных - то второй browse придется по таблице в памяти делать, просто через Katmc не пройдет такое .

table struct Tmp_CalcMC
(
nrec:comp,
count:double
)
with index
(
tmp_calcmc01=nrec(unique)
)

Логическая таблица тогда будет вида
Select * from Katsopr(KATSOPR02),SpSopr,KatMC,Tmp_CalcMC where
((
<Нужный тип накладной>==Katsopr.VidSopr and
Tmp_CalcMC.Nrec==KatMC.Nrec
))

Т.к. судя по всему никакого редактирования,вставки или удаления ручками у тебя в фейсе не будет, то просто каждому browse назначишь свой Table(Panel применяется для разграничения действия табличных событий, а у тебя их нет - т.е. можно и без него обойтись одними table, для одного Katsopr, для другого Tmp_CalcMC будет). А в обработчике событий главного окна при обработке действий с маркером вставишь вставку/корректировку/удаление из Tmp_CalcMC.
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
volkov_alex
Сообщения: 5
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Независимые Browse в интерфейсе

Сообщение volkov_alex »

Всем спасибо за ответы, буду пробовать дальше, только маленький вопрос:
при запросе вида

Create View As Select *
From
KatMC, KatSopr;

Разве не получается в результате выборка в виде декартова произведения двух этих таблиц?
GTHack
Местный житель
Сообщения: 517
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск Новосибирск
Контактная информация:

Re: Независимые Browse в интерфейсе

Сообщение GTHack »

думаю пример Маверика тебе мало помог, т.к. в таком раскладе получится просто два независимы брауза (думаю хотели все таки связи оставить)
поэтому подытожим с учетом советов Морзе вышесказанное, добавим синоним и вот -

interface two_table 'Независимые браузы' DoAccept, EscClose, cyan;

Create view as select *
from katorg, katcity _katcity
where
((
ROOT == katorg.nrec
and ROOT == katcity.nrec
and katorg.ccity==_katcity.nrec
));

panel pnl_Left;
Show at (,,30,);
Table katorg;
Browse brw_katorg;
Fields
katorg.name: [20],protect;
end;
end;

panel pnl_Left;
Show at (31,,,);
Table katcity;
Browse brw_katcity;
Fields
katcity.name: [20],protect;
end;
end;

end.

можеш это дело сразу компилить
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
Vitas
Местный житель
Сообщения: 230
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь

Re: Независимые Browse в интерфейсе

Сообщение Vitas »

Если у тебя во второй по большому счету подбиваются итоги, то значит уже что эти две таблы связанны, причем один ко многим, т.е. на нрек списка накладных ссылаются мс
Дальше, для этого фейса тебе просто необходимо завести временную таблицу и по события по которым идет пометка твоих накладных производить дозапись (модификацию) или удаление из временной таблицы (читай таблицы памяти).

Все, единственное, обработчик события который ты выбрал, тот и используй, т.е. если у тебя из стату берется обработчик, которым метишь, то в него и вставляй мод таблицы памяти, хотоя можно извратиться и прикрутить событие cmCheckField, но это изврат.

Есть в принципе и вариант без таблицы памяти, но в случае, если в накладных будут одинаковые МЦ, то забиси будут по этим МЦ дублироваться с цифирами из соответственных накладных. Т.е. все зависит от того, для чего тебе надо. А вообще реализуется просто, т.е. ты берешь табличку пик, в которую кидаешь нреки выбранных накладных (по большому счету это уже и есть выбор), дальше, берешь этуже пик но с синонимым и им ограничеваешь специффикацию накладных из которых будут браться МЦ. сами накладные и специффикацию в запросе ни как не связываешь, на выходе две независимые (условно) таблы по накладным и спецификациям, ограничения на спецификацию накладываются в зависимости от работы с накладными

Если чего-то не понял, спрашивай. ;)
Ищу возможности довести и так отличный продукт до еще большего блеска
Ответить