Table struct local в интерфейсе и отчёте
Модераторы: m0p3e, edward_K, Модераторы
Table struct local в интерфейсе и отчёте
Здравствуйте все!
Заметил странную особенность - почему-то одна и та же таблица в памяти (table struct local) при её заполнении в фейсе оказывается пустой в отчёте, и наоборот - при заполнении в отчёте, фейс не видит в ней ни одной записи. И таблица, и интерфейс, и отчёт подключаются к одному проекту (include и make). Это у всех так? Таблица же должна быть одна и та же в пределах проекта. У нас Галактика 8.10.53.0, Support 5.3.18.0 на MSSQL.
Заметил странную особенность - почему-то одна и та же таблица в памяти (table struct local) при её заполнении в фейсе оказывается пустой в отчёте, и наоборот - при заполнении в отчёте, фейс не видит в ней ни одной записи. И таблица, и интерфейс, и отчёт подключаются к одному проекту (include и make). Это у всех так? Таблица же должна быть одна и та же в пределах проекта. У нас Галактика 8.10.53.0, Support 5.3.18.0 на MSSQL.
Содержание файла проекта:
var
nr1: comp;
#include C:\Forms\TPP\SpecTree.vpp
#include C:\Forms\TPP\SpecTree2.vpp
#include C:\Forms\TPP\SpecTree3.vpp
#make 'C:\Forms\TPP2\TreePS.vip'
#make 'C:\Forms\TPP\Specif.vip'
#make 'c:\Forms\TPP2\PodNorm.slk'
Файл SpecTree2.vpp с таблицей:
table struct local tlist2
(
fnum: longint,
fmc: string,
fnn: string[18],
fin: integer,
fmcnr: comp,
fpar: comp,
ftip: string[150],
fwtip: word,
fkoef: double,
fend: boolean,
fob: string[30],
fchar: string[21],
fnrp: comp,
fizg: string,
fizgk: string[15],
fskl: string,
fsklk: string[15],
fkol: double,
fued: string[15],
foed: string[15],
fotk: double,
fokdp: string[11],
frazm: string[20]
)
with index
(
iipw = fin+fpar+fwtip,
inum = fnum
);
В интерфейсе TreePS.vip происходит insert в tlist2. Специально ставлю message(tlist2.fmc) после каждого insert tlist2 set.... - выдаётся.
А когда в PodNorm.slk делаю цикл по вьюхе create view sost2 * from tlist2 (c помощью .{table ) - ничего нет.
var
nr1: comp;
#include C:\Forms\TPP\SpecTree.vpp
#include C:\Forms\TPP\SpecTree2.vpp
#include C:\Forms\TPP\SpecTree3.vpp
#make 'C:\Forms\TPP2\TreePS.vip'
#make 'C:\Forms\TPP\Specif.vip'
#make 'c:\Forms\TPP2\PodNorm.slk'
Файл SpecTree2.vpp с таблицей:
table struct local tlist2
(
fnum: longint,
fmc: string,
fnn: string[18],
fin: integer,
fmcnr: comp,
fpar: comp,
ftip: string[150],
fwtip: word,
fkoef: double,
fend: boolean,
fob: string[30],
fchar: string[21],
fnrp: comp,
fizg: string,
fizgk: string[15],
fskl: string,
fsklk: string[15],
fkol: double,
fued: string[15],
foed: string[15],
fotk: double,
fokdp: string[11],
frazm: string[20]
)
with index
(
iipw = fin+fpar+fwtip,
inum = fnum
);
В интерфейсе TreePS.vip происходит insert в tlist2. Специально ставлю message(tlist2.fmc) после каждого insert tlist2 set.... - выдаётся.
А когда в PodNorm.slk делаю цикл по вьюхе create view sost2 * from tlist2 (c помощью .{table ) - ничего нет.
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
1. а что за описание переменных в проекте?
2. а в slk при описании логической таблицы на tlist2 ограничений никаких не наложено?
3. попробуйте логическую таблицу в слк
т.е. жестко указать индекс...
ну и тэйбл делать как
2. а в slk при описании логической таблицы на tlist2 ограничений никаких не наложено?
3. попробуйте логическую таблицу в слк
Код: Выделить всё
create view sost2 from tlist2(inum);
ну и тэйбл делать как
Код: Выделить всё
.{Table 'sost2.tlist2'
.}
Для Алексея:
В интерфейсе TreePS.vip есть строка RunForm('PodNorm'), после которой следует CloseInterface(0). В том то и дело, что должно, а не работает.
Для edward_k:1. а что за описание переменных в проекте?
Глобальная переменная, для проекта.
2. а в slk при описании логической таблицы на tlist2 ограничений никаких не наложено?
Нет, беру всё.
3. попробуйте логическую таблицу в слк
Попробовал так с индексом - всё равно нет записей.
В интерфейсе TreePS.vip есть строка RunForm('PodNorm'), после которой следует CloseInterface(0). В том то и дело, что должно, а не работает.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Если фейс запускается из формы, то тока поможет :
Процедура mtChangeRefCount
Назначение
Увеличивает /уменьшает счетчик ссылок на экземпляр данных таблицы в памяти. Если счетчик ссылок = 0, то экземпляр освобождается. Система ведет два счетчика ссылок - один для прикладного, другой для системного использования. Таким образом, система не позволяет освободить экземпляр таблицы в памяти до тех пор, пока на нее есть хотя бы одна реальная ссылка.
Описание
function mtChangeRefCount(iTable : integer;
iCount : integer
) : longInt;
Параметры
iTable - номер узла в логической таблице.
iCount - значение, на которое надо увеличить /уменьшить значение счетчика ссылок на экземпляр таблицы в памяти.
Возвращаемое значение
Возвращает новое значение счетчика ссылок.
Процедура mtChangeRefCount
Назначение
Увеличивает /уменьшает счетчик ссылок на экземпляр данных таблицы в памяти. Если счетчик ссылок = 0, то экземпляр освобождается. Система ведет два счетчика ссылок - один для прикладного, другой для системного использования. Таким образом, система не позволяет освободить экземпляр таблицы в памяти до тех пор, пока на нее есть хотя бы одна реальная ссылка.
Описание
function mtChangeRefCount(iTable : integer;
iCount : integer
) : longInt;
Параметры
iTable - номер узла в логической таблице.
iCount - значение, на которое надо увеличить /уменьшить значение счетчика ссылок на экземпляр таблицы в памяти.
Возвращаемое значение
Возвращает новое значение счетчика ссылок.
А где её написать?
Пробовал в интерфейсе двумя способами
И так:
Не помогло...
Пробовал в интерфейсе двумя способами
Код: Выделить всё
mtChangeRefCount(#sost2.tlist2, 1);
RunForm('PodNorm');
CloseInterface(0);
Код: Выделить всё
RunForm('PodNorm');
mtChangeRefCount(#sost2.tlist2, 1);
CloseInterface(0);
Непонятно...
При вставке записей много - срабатывает множество message:
До вызова RunForm - только один message (самый первый):
А в форме - ни одного...
Как так?!
При вставке записей много - срабатывает множество message:
Код: Выделить всё
sost2.insert tlist2 set
tlist2.fmc := probel(sost.tlist.fin)+sost.tlist.fmc,
tlist2.fnum := j,
tlist2.fnn := sost.tlist.fnn,
tlist2.fmcnr:= sost.tlist.fmcnr,
tlist2.fin := sost.tlist.fin,
tlist2.ftip := sost.tlist.ftip,
tlist2.fwtip:= sost.tlist.fwtip,
tlist2.fob := sost.tlist.fob,
tlist2.fchar:= sost.tlist.fchar,
tlist2.fend := sost.tlist.fend,
tlist2.fnrp := sost.tlist.fnrp,
tlist2.fizg := sost.tlist.fizg,
tlist2.fizgk:= sost.tlist.fizgk,
tlist2.fskl := sost.tlist.fskl,
tlist2.fsklk:= sost.tlist.fsklk,
tlist2.fkol := sost.tlist.fkol,
tlist2.fkoef:= sost.tlist.fkoef,
tlist2.fued := sost.tlist.fued,
tlist2.foed := sost.tlist.foed,
tlist2.fotk := sost.tlist.fotk,
tlist2.fokdp:= sost.tlist.fokdp,
tlist2.frazm:= sost.tlist.frazm,
tlist2.fpar := sost.tlist.fpar;
j:=j+1;
message(sost2.tlist2.fmc);
Код: Выделить всё
sost2._loop
{
message(sost2.tlist2.fmc);
}
mtChangeRefCount(sost2.tntlist2, 100);
RunForm('TreePodNorm');
CloseInterface(0);
Код: Выделить всё
.{table 'sost2' by sost2.tlist2.fnum
.begin
message(sost2.tlist2.fmc);
dopar:=ispar;
ispar:=sost2.tlist2.fpar;
nrc:=ispar;
obz:=sost2.tlist2.fob;
wtip:=sost2.tlist2.fwtip;
razmer:=sost2.tlist2.frazm;
mcnr:=sost2.tlist2.fmcnr;
nn:=' '+sost2.tlist2.fnn;
mc:=sost2.tlist2.fmc;
ediz:=sost2.tlist2.fued;
kol:=sost2.tlist2.fkol*sost2.tlist2.fkoef*sost2.tlist2.fotk;
pdrk:=' '+sost2.tlist2.fizgk;
sklk:=' '+sost2.tlist2.fsklk;
end.