Страница 3 из 4
Re: Интерфейс с memo-полями
Добавлено: 24 окт 2012, 12:08
Руслан
Den, по вариантам 1 и 2 отрабатывает минуту где-то. Без attrval за 3-4 сек. Короче, пробую делать времянку для attrval.
Не по теме: плюсую тебе, а счетчик не увеличивается. Сообщение валит: "You must spread your reputation point to other users before giving to the same user." Это так и надо??
Re: Интерфейс с memo-полями
Добавлено: 24 окт 2012, 12:54
Руслан
Добавил вторую временную таблицу по attrval, но кидает ошибку при компиляции "Нет такой функции, поля или метода : TATTRVAL.VLVAR"
Код: Выделить всё
// http://forum.galaktika.by
Interface SelectMemo, doaccept;
show at (6,6,65,20)
var
cnRec : comp;
table struct tbasedoc
(
nrec : comp,
ddoc : date,
nodoc : string
);
table struct tattrval
(
nrec : comp,
crec : comp,
wtable : word,
vlvar : lvar
);
create view
as select *
from tbasedoc, tattrval, ttndoc
where
((
comp(tBaseDoc.Nrec) == TTNDOC.CDOC
and word(1102) == ttndoc.wtable
and ttndoc.nrec == tattrval.CREC
and word(1150) == tattrval.wtable
));
parameters cnRec;
browse brSelPers;
show at (,,,10);
table tbasedoc;
fields
tBasedoc.ddoc 'Дата документа' : [15], protect;
tBasedoc.nodoc 'Номер документа': [15], protect;
end;
panel panText;
show at (,11,,);
table tattrval;
Text memoid=memo1 tattrval.vlvar 'Мемо-поле';
end;
handleevent
cmInit:
{
SQL select attrval.nrec, attrval.crec, attrval.wtable, attrval.vlvar
from attrval
where
attrval.cattrnam = comp('281474976711112')
into tattrval
SQL select basedoc.nrec, basedoc.ddoc, basedoc.nodoc
from basedoc
inner join ttndoc on (BaseDoc.Nrec = TTNDOC.CDOC) and ttndoc.wtable=1102
inner join tattrval on ttndoc.nrec = tattrval.CREC// and attrval.cattrnam = comp('281474976711112')
order by basedoc.ddoc
INTO tbasedoc
}
end;
End.
Re: Интерфейс с memo-полями
Добавлено: 24 окт 2012, 13:44
Den
см документацию на языке вип, раздел в корне "работа с БД(SQL)" и внутри этой папки "Прямой SQL" и там "временные пользовательские таблицы в прямом sql"
Re: Интерфейс с memo-полями
Добавлено: 24 окт 2012, 16:23
Руслан
Документацию-то я читал, но на примерах все понятнее гораздо...
Re: Интерфейс с memo-полями
Добавлено: 24 окт 2012, 19:26
Руслан
Во временную таблицу нельзя вставлять мемо-поля...
Сделал так и все равно минуту открывает и в итоге ничего не выводит:
Код: Выделить всё
Interface SelectMemo 'Особые заявления отправителя', doaccept;
show at (6,6,65,20)
var
cnRec : comp;
stmt, astmt : longint;
table struct tbasedoc
(
nrec : comp,
ddoc : date,
nodoc : string
)
with index (n = nrec);
table struct tattrval
(
nrec : comp,
crec : comp
)
with index (c = crec);
create view
as select *
from tbasedoc, tattrval, attrval, ttndoc
where
((
comp(tBaseDoc.Nrec) == TTNDOC.CDOC
and word(1102) == ttndoc.wtable
and ttndoc.nrec == tattrval.CREC
and tattrval.nrec == attrval.nrec
));
parameters cnRec;
browse brSelPers;
show at (,,,10);
table tbasedoc;
fields
tBasedoc.ddoc 'Дата документа' : [15], protect;
tBasedoc.nodoc 'Номер документа': [15], protect;
end;
panel panText;
show at (,11,,);
table attrval;
Text memoid=memo1 attrval.vlvar 'Мемо-поле';
end;
handleevent
cmInit:
{
stmt := sqlAllocStmt;
//Создаем ВТ
sqlCreateTmpTable('Table tattrval (nrec : comp, crec : comp);', ctmNormal);
//Заполняем ВТ
sqlExecStmt(stmt,'select attrval.nrec, attrval.crec from attrval where attrval.cattrnam = comp(''281474976711112'')');
sqlFetchInto(stmt, tntattrval);
sqlFreeStmt(stmt);
stmt := sqlAllocStmt;
//Создаем ВТ
sqlCreateTmpTable('Table tbasedoc (nrec : comp, ddoc : date, nodoc : string);', ctmNormal);
//Заполняем ВТ
sqlExecStmt(stmt,'select basedoc.nrec, basedoc.ddoc, basedoc.nodoc from basedoc inner join ttndoc on (BaseDoc.Nrec = TTNDOC.CDOC) and ttndoc.wtable=1102 inner join tattrval on ttndoc.nrec = tattrval.CREC');
sqlFetchInto(stmt, tntbasedoc);
sqlFreeStmt(stmt);
}
end;
End.
Re: Интерфейс с memo-полями
Добавлено: 24 окт 2012, 20:09
Руслан
По ходу никак не ускорить, attrval слишком большая таблица...
Печаль...
Re: Интерфейс с memo-полями
Добавлено: 24 окт 2012, 20:16
Den
Ну если запускать вот это :
select attrval.nrec, attrval.crec from attrval where attrval.cattrnam = comp(''281474976711112'')
на самом инструментарии сервера и долго выполняется такой запрос - то да..галактика тут не причем точно..
Re: Интерфейс с memo-полями
Добавлено: 24 окт 2012, 21:44
Руслан
Den писал(а):Ну если запускать вот это :
select attrval.nrec, attrval.crec from attrval where attrval.cattrnam = comp(''281474976711112'')
на самом инструментарии сервера и долго выполняется такой запрос - то да..галактика тут не причем точно..
Саппортом выполняется запрос такой мгновенно, а если в девелопере оракловом к базе выполнять такой селект, то минуту где-то отрабатывает....
Как так???
Re: Интерфейс с memo-полями
Добавлено: 24 окт 2012, 23:44
Руслан
Все-таки разобрался!!!
Оказывается в запрос надо добавлять и таблицу attrnam, т.е. выгрузка во временную таблицу будет выглядеть так
select basedoc.nrec, basedoc.ddoc, basedoc.nodoc from basedoc, ttndoc, attrval, attrnam where BaseDoc.Nrec = TTNDOC.CDOC and ttndoc.wtable=1102 and ttndoc.nrec = attrval.CREC and attrval.cattrnam = attrnam.nrec and attrnam.nrec = comp('281474976711112')
Исходник всего интерфейса:
Код: Выделить всё
Interface SelectMemo 'Особые заявления отправителя', doaccept;
show at (6,6,65,20)
var
cnRec : comp;
stmt, astmt : longint;
table struct tbasedoc
(
nrec : comp,
ddoc : date,
nodoc : string
)
with index (n = nrec);
create view
as select *
from tbasedoc, attrval, ttndoc
where
((
comp(tBaseDoc.Nrec) == TTNDOC.CDOC
and word(1102) == ttndoc.wtable
and word(1150) == attrval.wtable
and ttndoc.nrec == attrval.CREC
and word(1150) == attrval.wtable
and '281474976711112' == attrval.cattrnam
));
parameters cnRec;
browse brSelPers;
show at (,,,10);
table tbasedoc;
fields
tBasedoc.ddoc 'Дата документа' : [15], protect;
tBasedoc.nodoc 'Номер документа': [15], protect;
end;
panel panText;
show at (,11,,);
table attrval;
Text memoid=memo1 attrval.vlvar 'Мемо-поле';
end;
handleevent
cmInit:
{
stmt := sqlAllocStmt;
//Создаем ВТ
sqlCreateTmpTable('Table tbasedoc (nrec : comp, ddoc : date, nodoc : string);', ctmNormal);
//Заполняем ВТ
sqlExecStmt(stmt,'select basedoc.nrec, basedoc.ddoc, basedoc.nodoc from basedoc, ttndoc, attrval, attrnam where BaseDoc.Nrec = TTNDOC.CDOC and ttndoc.wtable=1102 and ttndoc.nrec = attrval.CREC and attrval.cattrnam = attrnam.nrec and attrnam.nrec = comp(''281474976711112'')');
//Читаем ВТ
sqlFetchInto(stmt, tntbasedoc);
sqlFreeStmt(stmt);
}
end;
End.
Re: Интерфейс с memo-полями
Добавлено: 24 окт 2012, 23:46
Руслан
Den, если в курсе... Плюсую тебе, а счетчик не увеличивается.. Неудобно
Хочу отблагодарить, а не получается...
Re: Интерфейс с memo-полями
Добавлено: 26 окт 2012, 11:06
Руслан
Эпопея с мемо-полями продолжается.... Каким образом можно апдейтить мемо-поля? ExportMemoToFile, а потом ImportFileToMemo???
Re: Интерфейс с memo-полями
Добавлено: 26 окт 2012, 12:17
Starry
Пользуйтесь методами и функциями объекта File.
Открываете мемо-поле как файл с помощью OpenMemo и вперед (Read, ReadLn, Write, WriteLn). Посмотрите в хелпе - там есть примеры.
Re: Интерфейс с memo-полями
Добавлено: 26 окт 2012, 14:00
Руслан
Starry писал(а):Пользуйтесь методами и функциями объекта File.
Открываете мемо-поле как файл с помощью OpenMemo и вперед (Read, ReadLn, Write, WriteLn). Посмотрите в хелпе - там есть примеры.
Это функции записывают данные мемо-поля в файл, а мне надо обратное сделать - из файла в мемо записать...
Re: Интерфейс с memo-полями
Добавлено: 26 окт 2012, 14:23
Den
есть такая штука как поиск по форуму...или Вы ему не доверяете ? (как и хэлпу....)
Re: Интерфейс с memo-полями
Добавлено: 26 окт 2012, 15:14
Starry