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

Table Struct

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

Re: Table Struct

Добавлено: 10 июн 2003, 14:25
sth
таблицы в памяти не работают в формах. Только в интерфейсах.

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

Добавлено: 10 июн 2003, 16:25
Slava
А выход какой? Например вызвать фейс из ард и т.д. Если варианты все-таки есть, помогите, плз.

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

Добавлено: 10 июн 2003, 16:59
Vitas
Есть вариант, пишешь интерфейс, описываешь в нем свою таблицу, производишь заполнение, модиффикации которые хотел делать в ард, пишешь свой прототип, линковые формы к нему и выгружаешь данные.

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

Добавлено: 10 июн 2003, 19:52
Maverick
Хе, если грамотно собирать ресурсник, то достаточно описать таблицу внутри проекта. Тогда эта таблица будет видна во всех интерфейсах и формах, которые собираются в этом проекте (при условии что табла описана ниже чем make )

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

Добавлено: 17 июн 2003, 19:57
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. Если кто знает, как создавать такие поля в структурах - подскажите!

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

Добавлено: 17 июн 2003, 20:00
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. Если кто знает, как создавать такие поля в структурах - подскажите!

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

Добавлено: 17 июн 2003, 20:05
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. Если кто знает, как создавать такие поля в структурах - подскажите!

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

Добавлено: 19 дек 2003, 13:16
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
);
потом эту таблицу отображаю браузем
но быстрый выбор регистрозависим все равно...

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

Добавлено: 19 дек 2003, 14:29
Deinis
Galpro_tut, ты поясни, какой-такой регистр? И как он связан с Table Struct?

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

Добавлено: 19 дек 2003, 14:37
Deinis
Если ты имеешь в виду отображение названия букв - то при заполнении таблы в памяти попробуй сразу заполнять соответствующее поле большими буквами. Это спасет положение?
И в чем именно проблема? Что значит "регистрозависим"? Чем это мешает?

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

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

Upcase выход но юзеру надо будет не забывать нажимать CapsLock
Я так понял что таблам в памяти пофигу атрибуты индексов :((

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

Добавлено: 19 дек 2003, 18:36
Galpro_tut
Хе Вроде заработало!
с icRecGr5 = sNameS(Upcase,Unique),
(не цеплялся свежий откопил интерфейс)