Table Struct

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

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

Ответить
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Table Struct

Сообщение Deinis »

Народ, кто-нибудь когда-нибудь использовал эту конструкцию?
Например:
Table Struct tPlansSch
( PlansSchNrec : comp
,PlansSchKod : char
,PlansSchName : string [ 80 ]
,DataBegin : date
,DataEnd : date
);
Хочу ее создать на время отчета, затем заполнить с помощью отдельного интерфейса и использовать в дальнейшей работе отчета. Хочу организовать это дело в ard. Чтобы в одном из представлений (т.е. у меня несколько штук create view) этого ard я мог бы использовать свою структуру. Сейчас при компиляции Ard Галактика ругается "Таблица TPLANSSCH отсутствует в словаре".
sth
Постоянный обитатель
Сообщения: 148
Зарегистрирован: 29 мар 2005, 17:49

Re: Table Struct

Сообщение sth »

таблицы в памяти не работают в формах. Только в интерфейсах.
Slava
Постоянный обитатель
Сообщения: 102
Зарегистрирован: 29 мар 2005, 17:49

Такая же фигня...

Сообщение Slava »

А выход какой? Например вызвать фейс из ард и т.д. Если варианты все-таки есть, помогите, плз.
Vitas
Местный житель
Сообщения: 230
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь

Re: Такая же фигня...

Сообщение Vitas »

Есть вариант, пишешь интерфейс, описываешь в нем свою таблицу, производишь заполнение, модиффикации которые хотел делать в ард, пишешь свой прототип, линковые формы к нему и выгружаешь данные.
Ищу возможности довести и так отличный продукт до еще большего блеска
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: Такая же фигня...

Сообщение Maverick »

Хе, если грамотно собирать ресурсник, то достаточно описать таблицу внутри проекта. Тогда эта таблица будет видна во всех интерфейсах и формах, которые собираются в этом проекте (при условии что табла описана ниже чем make )
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Re: Такая же фигня...

Сообщение Deinis »

2 sth:
А вот и работают!!!!

Хочу сказать Спасибо 2 Maverick за поддержку.

И очень хочу выразить ОГРОМНЕЙШУЮ ПРИЗНАТЕЛЬНОСТЬ 2 МОРЗЕ. Без его бесценных советов немного вышло бы. Уж как он только и чем только не он не отбивался от моих назойливых вопросов - но всегда только ценными консультациями и практическими советами!

2 создателям форума: СПАСИБО!!! Без форума вообще не было бы моего отчета.

2 Деинис: а уж я сам тааакой проект забацал! И разобрался ведь!!! ;)

2 All
Несколько советов от "немного поковырявшегося" с таблицами в памяти. Скорее всего они понадобятся только тем, кто ни разу с ними не работал, но все же...
1. Чтобы ТП (таблица в памяти) была видна не только в одном интерфейсе, но и после его закрытия - в других фейсах и FRM-ах, надо обязательно объявить эту таблицу для ВСЕХ фейсов и форм. Например, с помощью файла проекта Db.prj:
// Таблица планов счетов бух.учета с диапазонами дат своего действия
Table Struct tPlansSch
( PlansSchNrec : comp
,PlansSchKod : char
,PlansSchName : string [ 80 ]
,DataBegin : date
,DataEnd : date
)
with index
( tPlansSch01=PlansSchNrec ) ;
#make "o:\galaxy\galwork\KIVI\!CDA\Db\MyGetOborotDb.vip"
#make "o:\galaxy\galwork\KIVI\!CDA\Db\MyGetOborotKr.vip"
#make "o:\galaxy\galwork\KIVI\!CDA\Db\DbZ.FRM"
У меня компилятор ругался, когда я делал файл с описанием таблицы не сразу в проекте, а включал его из другого файла инклудом и ставил после иклуда "End;"
убрал "End;" - ругаться компилятор перестал, все заработало.
2. Если вы что-то делаете с данными в ТП в своем фейсе, знайте, что после закрытия этого своего фейса данные "грохнутся". То есть таблица-то, если она объявлена для всего проекта, видна будет, но будет совсем пустой. Чтобы данные не "грохнулись" надо в конце фейса выполнить:
mtChangeRefCount( #tPlansSch, 1 );
Однако, чтобы эти таблицы были ликвидированы ПОСЛЕ окончания всей работы всех фейсов, использующих эту таблицу, обязательно надо выполнить в последнем интерфейсе:
mtChangeRefCount( #tPlansSch, -1 );
Иначе намусорите в своей оперативке.
3. Так и не научился делать автоинкрементные поля (типа nRec-а), нужно было для использования операций выделения - таблицы Pick. Если кто знает, как создавать такие поля в структурах - подскажите!
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Re: Такая же фигня...

Сообщение Deinis »

2 sth:
А вот и работают!!!!

Хочу сказать Спасибо 2 Maverick за поддержку.

И очень хочу выразить ОГРОМНЕЙШУЮ ПРИЗНАТЕЛЬНОСТЬ 2 МОРЗЕ. Без его бесценных советов немного вышло бы. Уж как он только и чем только не он не отбивался от моих назойливых вопросов - но всегда только ценными консультациями и практическими советами!

2 создателям форума: СПАСИБО!!! Без форума вообще не было бы моего отчета.

2 Деинис: а уж я сам тааакой проект забацал! И разобрался ведь!!! ;)

2 All
Несколько советов от "немного поковырявшегося" с таблицами в памяти. Скорее всего они понадобятся только тем, кто ни разу с ними не работал, но все же...
1. Чтобы ТП (таблица в памяти) была видна не только в одном интерфейсе, но и после его закрытия - в других фейсах и FRM-ах, надо обязательно объявить эту таблицу для ВСЕХ фейсов и форм. Например, с помощью файла проекта Db.prj:
// Таблица планов счетов бух.учета с диапазонами дат своего действия
Table Struct tPlansSch
( PlansSchNrec : comp
,PlansSchKod : char
,PlansSchName : string [ 80 ]
,DataBegin : date
,DataEnd : date
)
with index
( tPlansSch01=PlansSchNrec ) ;
#make "o:\galaxy\galwork\KIVI\!CDA\Db\MyGetOborotDb.vip"
#make "o:\galaxy\galwork\KIVI\!CDA\Db\MyGetOborotKr.vip"
#make "o:\galaxy\galwork\KIVI\!CDA\Db\DbZ.FRM"
У меня компилятор ругался, когда я делал файл с описанием таблицы не сразу в проекте, а включал его из другого файла инклудом и ставил после иклуда "End;"
убрал "End;" - ругаться компилятор перестал, все заработало.
2. Если вы что-то делаете с данными в ТП в своем фейсе, знайте, что после закрытия этого своего фейса данные "грохнутся". То есть таблица-то, если она объявлена для всего проекта, видна будет, но будет совсем пустой. Чтобы данные не "грохнулись" надо в конце фейса выполнить:
mtChangeRefCount( #tPlansSch, 1 );
Однако, чтобы эти таблицы были ликвидированы ПОСЛЕ окончания всей работы всех фейсов, использующих эту таблицу, обязательно надо выполнить в последнем интерфейсе:
mtChangeRefCount( #tPlansSch, -1 );
Иначе намусорите в своей оперативке.
3. Так и не научился делать автоинкрементные поля (типа nRec-а), нужно было для использования операций выделения - таблицы Pick. Если кто знает, как создавать такие поля в структурах - подскажите!
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Re: Такая же фигня...

Сообщение Deinis »

2 sth:
А вот и работают!!!!

Хочу сказать Спасибо 2 Maverick за поддержку.

И очень хочу выразить ОГРОМНЕЙШУЮ ПРИЗНАТЕЛЬНОСТЬ 2 МОРЗЕ. Без его бесценных советов немного вышло бы. Уж как он только и чем только не он не отбивался от моих назойливых вопросов - но всегда только ценными консультациями и практическими советами!

2 создателям форума: СПАСИБО!!! Без форума вообще не было бы моего отчета.

2 Деинис: а уж я сам тааакой проект забацал! И разобрался ведь!!! ;)

2 All
Несколько советов от "немного поковырявшегося" с таблицами в памяти. Скорее всего они понадобятся только тем, кто ни разу с ними не работал, но все же...
1. Чтобы ТП (таблица в памяти) была видна не только в одном интерфейсе, но и после его закрытия - в других фейсах и FRM-ах, надо обязательно объявить эту таблицу для ВСЕХ фейсов и форм. Например, с помощью файла проекта Db.prj:
// Таблица планов счетов бух.учета с диапазонами дат своего действия
Table Struct tPlansSch
( PlansSchNrec : comp
,PlansSchKod : char
,PlansSchName : string [ 80 ]
,DataBegin : date
,DataEnd : date
)
with index
( tPlansSch01=PlansSchNrec ) ;
#make "o:\galaxy\galwork\KIVI\!CDA\Db\MyGetOborotDb.vip"
#make "o:\galaxy\galwork\KIVI\!CDA\Db\MyGetOborotKr.vip"
#make "o:\galaxy\galwork\KIVI\!CDA\Db\DbZ.FRM"
У меня компилятор ругался, когда я делал файл с описанием таблицы не сразу в проекте, а включал его из другого файла инклудом и ставил после иклуда "End;"
убрал "End;" - ругаться компилятор перестал, все заработало.
2. Если вы что-то делаете с данными в ТП в своем фейсе, знайте, что после закрытия этого своего фейса данные "грохнутся". То есть таблица-то, если она объявлена для всего проекта, видна будет, но будет совсем пустой. Чтобы данные не "грохнулись" надо в конце фейса выполнить:
mtChangeRefCount( #tPlansSch, 1 );
Однако, чтобы эти таблицы были ликвидированы ПОСЛЕ окончания всей работы всех фейсов, использующих эту таблицу, обязательно надо выполнить в последнем интерфейсе:
mtChangeRefCount( #tPlansSch, -1 );
Иначе намусорите в своей оперативке.
3. Так и не научился делать автоинкрементные поля (типа nRec-а), нужно было для использования операций выделения - таблицы Pick. Если кто знает, как создавать такие поля в структурах - подскажите!
Galpro_tut
Постоянный гость
Сообщения: 68
Зарегистрирован: 29 мар 2005, 17:49

Re: Такая же фигня...

Сообщение Galpro_tut »

А кто знает как победить регистр?
Table STRUCT TMP01 "организации по группам"
(
nrec : comp ,
cRec : comp ,
sName : tNameOrg ,
sNameS : tNameOrg ,
cGr : comp
)
With Index
(
icRecGr1 = nRec,
icRecGr2 = cRec,
icRecGr4 = sName(Upcase,Unique),
icRecGr5 = sNameS(Upcase,Unique),
icRecGr6 = nRec+sName,
icRecGr7 = cRec+sName
);
потом эту таблицу отображаю браузем
но быстрый выбор регистрозависим все равно...
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Re: Такая же фигня...

Сообщение Deinis »

Galpro_tut, ты поясни, какой-такой регистр? И как он связан с Table Struct?
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Re: Такая же фигня...

Сообщение Deinis »

Если ты имеешь в виду отображение названия букв - то при заполнении таблы в памяти попробуй сразу заполнять соответствующее поле большими буквами. Это спасет положение?
И в чем именно проблема? Что значит "регистрозависим"? Чем это мешает?
Galpro_tut
Постоянный гость
Сообщения: 68
Зарегистрирован: 29 мар 2005, 17:49

Re: Такая же фигня...

Сообщение Galpro_tut »

Да,делаю альтернативный выбор организаций
(юзерские права на групппы организаций не работают в Галактическом линейном списке выборе )
Юзер втает в колонку и начинает набирать имя организации она подсвечивается.

Upcase выход но юзеру надо будет не забывать нажимать CapsLock
Я так понял что таблам в памяти пофигу атрибуты индексов :((
Galpro_tut
Постоянный гость
Сообщения: 68
Зарегистрирован: 29 мар 2005, 17:49

Re: Такая же фигня...

Сообщение Galpro_tut »

Хе Вроде заработало!
с icRecGr5 = sNameS(Upcase,Unique),
(не цеплялся свежий откопил интерфейс)
Ответить