Table Struct
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Table Struct
Народ, кто-нибудь когда-нибудь использовал эту конструкцию?
Например:
Table Struct tPlansSch
( PlansSchNrec : comp
,PlansSchKod : char
,PlansSchName : string [ 80 ]
,DataBegin : date
,DataEnd : date
);
Хочу ее создать на время отчета, затем заполнить с помощью отдельного интерфейса и использовать в дальнейшей работе отчета. Хочу организовать это дело в ard. Чтобы в одном из представлений (т.е. у меня несколько штук create view) этого ard я мог бы использовать свою структуру. Сейчас при компиляции Ard Галактика ругается "Таблица TPLANSSCH отсутствует в словаре".
Например:
Table Struct tPlansSch
( PlansSchNrec : comp
,PlansSchKod : char
,PlansSchName : string [ 80 ]
,DataBegin : date
,DataEnd : date
);
Хочу ее создать на время отчета, затем заполнить с помощью отдельного интерфейса и использовать в дальнейшей работе отчета. Хочу организовать это дело в ard. Чтобы в одном из представлений (т.е. у меня несколько штук create view) этого ard я мог бы использовать свою структуру. Сейчас при компиляции Ard Галактика ругается "Таблица TPLANSSCH отсутствует в словаре".
Re: Table Struct
таблицы в памяти не работают в формах. Только в интерфейсах.
Такая же фигня...
А выход какой? Например вызвать фейс из ард и т.д. Если варианты все-таки есть, помогите, плз.
Re: Такая же фигня...
Есть вариант, пишешь интерфейс, описываешь в нем свою таблицу, производишь заполнение, модиффикации которые хотел делать в ард, пишешь свой прототип, линковые формы к нему и выгружаешь данные.
Ищу возможности довести и так отличный продукт до еще большего блеска
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Такая же фигня...
Хе, если грамотно собирать ресурсник, то достаточно описать таблицу внутри проекта. Тогда эта таблица будет видна во всех интерфейсах и формах, которые собираются в этом проекте (при условии что табла описана ниже чем make )
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Такая же фигня...
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. Если кто знает, как создавать такие поля в структурах - подскажите!
А вот и работают!!!!
Хочу сказать Спасибо 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. Если кто знает, как создавать такие поля в структурах - подскажите!
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Такая же фигня...
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. Если кто знает, как создавать такие поля в структурах - подскажите!
А вот и работают!!!!
Хочу сказать Спасибо 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. Если кто знает, как создавать такие поля в структурах - подскажите!
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Такая же фигня...
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. Если кто знает, как создавать такие поля в структурах - подскажите!
А вот и работают!!!!
Хочу сказать Спасибо 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. Если кто знает, как создавать такие поля в структурах - подскажите!
-
- Постоянный гость
- Сообщения: 68
- Зарегистрирован: 29 мар 2005, 17:49
Re: Такая же фигня...
А кто знает как победить регистр?
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
);
потом эту таблицу отображаю браузем
но быстрый выбор регистрозависим все равно...
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
);
потом эту таблицу отображаю браузем
но быстрый выбор регистрозависим все равно...
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Такая же фигня...
Galpro_tut, ты поясни, какой-такой регистр? И как он связан с Table Struct?
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Такая же фигня...
Если ты имеешь в виду отображение названия букв - то при заполнении таблы в памяти попробуй сразу заполнять соответствующее поле большими буквами. Это спасет положение?
И в чем именно проблема? Что значит "регистрозависим"? Чем это мешает?
И в чем именно проблема? Что значит "регистрозависим"? Чем это мешает?
-
- Постоянный гость
- Сообщения: 68
- Зарегистрирован: 29 мар 2005, 17:49
Re: Такая же фигня...
Да,делаю альтернативный выбор организаций
(юзерские права на групппы организаций не работают в Галактическом линейном списке выборе )
Юзер втает в колонку и начинает набирать имя организации она подсвечивается.
Upcase выход но юзеру надо будет не забывать нажимать CapsLock
Я так понял что таблам в памяти пофигу атрибуты индексов (
(юзерские права на групппы организаций не работают в Галактическом линейном списке выборе )
Юзер втает в колонку и начинает набирать имя организации она подсвечивается.
Upcase выход но юзеру надо будет не забывать нажимать CapsLock
Я так понял что таблам в памяти пофигу атрибуты индексов (
-
- Постоянный гость
- Сообщения: 68
- Зарегистрирован: 29 мар 2005, 17:49
Re: Такая же фигня...
Хе Вроде заработало!
с icRecGr5 = sNameS(Upcase,Unique),
(не цеплялся свежий откопил интерфейс)
с icRecGr5 = sNameS(Upcase,Unique),
(не цеплялся свежий откопил интерфейс)