Куда записываются выбранные записи в интерфейсе PickCatalog

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

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

St.Anislav
Постоянный обитатель
Сообщения: 147
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск
Контактная информация:

Куда записываются выбранные записи в интерфейсе PickCatalog

Сообщение St.Anislav »

Столкнулся с проблемой - необходим отчет по нескольким СЕ ШР; вот нашел подходящий интерфейс с множественным выбором СЕ ШР, PickCatalog2, разобрался с параметрами (runinterface(pickcatalog2,-11,mynrec,100)). Вопрос: кто-нибудь знает, КУДА PickCatalog2 записывает nrec'и выбранных элементов? Ctrl+F4, "pick.wlist" не помогает - видимо, не в Pick. Куда же?
Galpro_tut
Постоянный гость
Сообщения: 68
Зарегистрирован: 29 мар 2005, 17:49

Re: Куда записываются выбранные записи в интерфейсе PickCat

Сообщение Galpro_tut »

А куда еще - туда в Pick
St.Anislav
Постоянный обитатель
Сообщения: 147
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск
Контактная информация:

Re: Куда записываются выбранные записи в интерфейсе PickCat

Сообщение St.Anislav »

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

Re: Куда записываются выбранные записи в интерфейсе PickCat

Сообщение Deinis »

В Pick они записываются. Хотя... тама есть куча "временных" таблиц:
PICKVIP, PICKVIP2, PICKVIP3, PICKVIP4, PICKVIP5, PICKBUH, SAVEPICK и др.
Но как правило для выбора используется именно Pick. Как Морзе сказал - верить надоть людям.
Таблица Pick - открывается у тебя в памяти. И туда записываются данные выбора. Ты не замечал, когда выходишь из БД иногда появляется DOS-овское окошко "Идет запись в БД". Оно появляется после того, как ты покрутишь в базе интерактивные отчеты. Или внесешь изменения в DSK-файл.
Пример:
Закрути "Ведомость наличия и износа" в модуле ОС/НМА. Затем загляни в таблицу TObot, TempDescr, TempIer. Там есть такое поле, как Code. Для нашего отчета но должно быть равным 4702.
Так вот, ты не найдешь ни одну запись с таким номером (если, конечно, в базе не хранится какой-нить предыдущий отчет по износу ОС/НМА).
Но как только выйдешь из Галактики, эти записи из ОЗУ твоего компа туда попадут. Ты снова загляни в эти таблицы и увидишь, что записи с кодом 4702 там появились.

Работай с таблицей Pick. Там должно твое чудо лежать. То, что они до твоего выхода из Галактики лежат не в физической таблице, а в памяти компа - тебя не должно волновать. Если только ты не планируешь, что выбором будет делать один пользователь, а пользоваться выбранными элементами - другой пользователь. Тогда, чтобы выбранные элементы попали в физическую таблицу и другой пользователь мог их увидеть - первому нужно будет перегрузить Галактику.
St.Anislav
Постоянный обитатель
Сообщения: 147
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск
Контактная информация:

Re: Куда записываются выбранные записи в интерфейсе PickCat

Сообщение St.Anislav »

Про временные таблицы я в курсе! Просто я написал вот какой кусок кода:

.form '1111'
.ard
.var
mynrec:comp;
.endvar
.create view a as select * from pick;
.begin
a.delete pick all;
runinterface(pickcatalog2,-11,mynrec,100);
end.
.fields
a.pick.wlist
.endfields
.{table 'a'
^
.}
.endform

Отчет девственно пуст:(, из чего я заключаю, что таблица pick после вызова интерфейса пуста.
forummaster
Посетитель
Сообщения: 46
Зарегистрирован: 29 мар 2005, 17:49

Re: Куда записываются выбранные записи в интерфейсе Pick

Сообщение forummaster »

<HTML>Врут все :)

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

Re: Куда записываются выбранные записи в интерфейсе PickCat

Сообщение Deinis »

;)
St.Anislav
Постоянный обитатель
Сообщения: 147
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск
Контактная информация:

Re: Куда записываются выбранные записи в интерфейсе PickCat

Сообщение St.Anislav »

Ну вот, теперь осталось найти этот CatalogsMarker:( А правда, что это за таблица такая? В словаре таблицы с таким именем нет!
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Куда записываются выбранные записи в интерфейсе PickCat

Сообщение m0p3e »

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

Re: Куда записываются выбранные записи в интерфейсе PickCat

Сообщение Deinis »

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

Re: Куда записываются выбранные записи в интерфейсе PickCat

Сообщение Maverick »

Блин, читайте RTFM !!!
Маркер - это массив памяти !!!
Читайте доку по маркерам !!!
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
St.Anislav
Постоянный обитатель
Сообщения: 147
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск
Контактная информация:

Re: Куда записываются выбранные записи в интерфейсе PickCat

Сообщение St.Anislav »

Спасибо за объяснения, доку скачал... Эх, я-то думал - зацеплю старый-добрый Pick where pivk.wlist=xx, да и все:(
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Re: Куда записываются выбранные записи в интерфейсе PickCat

Сообщение Deinis »

Класс!!!
3 чела ответили одновременно про одно и то же :))
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Куда записываются выбранные записи в интерфейсе PickCat

Сообщение m0p3e »

>Эх, я-то думал - зацеплю старый-добрый Pick
Кто из них старее, а тем более добрее можно поспорить ;)
forummaster
Посетитель
Сообщения: 46
Зарегистрирован: 29 мар 2005, 17:49

Re: Куда записываются выбранные записи в интерфейсе Pick

Сообщение forummaster »

<HTML>если тебе так удобнее - цепляйся, предварительно скопировар информацию из маркера в Pick. Что-то типа такой функции :

// lHandler - дескриптор маркера
// wpickCode - значение поля Pick.wlist

function marker2pick( var lHandler : longint; wpickCode : word ) : comp ;
var lSize : longint ;
lx : longint ;
cIndex : comp ;
begin
delete all novisual from pick where(( word(wpickCode) == pick.wLisT )) ;

lSize := getmarkercount( lHandler ) ;
marker2pick := comp( lSize ) ;

for( lx:=0; lx<.lSize; lx:=lx+1 )
{
if( getMarker( lHandler, lx, cIndex ) = TRUE )
then{
clearbuffer( tnpick ) ;
pick.wLisT := wpickCode ;
pick.cRec := cIndex ;
insert current pick ;
}
}
end;

а дальше уж и цепляй "старый-добрый Pick where pivk.wlist=xx"

в нашем случае это будет примерно так:
...
.begin
var lHandler : longint ;

runinterface(pickcatalog2,-11,mynrec,100);
lHandler := InitMarker('CatalogsMarker', 8, 200, 10) ;
marker2pick( lHandler, word( 1111 ) ) ;
end.
....
.{table xxxx
.fields
....
.endfields
...
.}</HTML>
Ответить