Нагибаю маркеры

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

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

Ответить
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Нагибаю маркеры

Сообщение galover »

Решил тут велосипедом проехаться по маркерам. Отказался от стандартного механизма маркеров, тем более он не совсем хорошо подходит к моей задаче -> просто завел дополнительное булево поле (признак выделения) в моей таблице, все вроде пучком, полет нормальный. Но вот с выделением/снятием выделения сразу всех записей лажа :(

Вот такой код

Код: Выделить всё

 cmSelectAll:
  {
     update tblMy set tblMy.Checked := true;
     RescanPanel(#tblMy);
  }
  cmUnselectAll:
  {
     update tblMy set tblMy.Checked := false;
     RescanPanel(#tblMy);
  }
приводит к тому, что в browse пропадают все записи, а вот при таком коде

Код: Выделить всё

 cmSelectAll:
  {
     _loop tblMy
        update current tblMy set tblMy.Checked := true;

     RescanPanel(#tblMy);
  }
  cmUnselectAll:
  {
     _loop tblMy
        update current tblMy set tblMy.Checked := false;

     RescanPanel(#tblMy);
  }
все работает как надо, но это слишком медленно - записей очень много. Что можно подкрутить? Заранее спасибо!

P.S. На всякий случай код самого browse

Код: Выделить всё

browse gridMy (,, sci178EnEscIns)
  show at(,,, 30);
  table tblMy;
  recMarker : If(Checked, 'img1', '');
  fields
    {font={Color = If(Checked, ColorMark, 1)}};
    tblMy.NRec     'NRec'                : [15], protect;
    tblMy.Date      'Дата'                : [8 ], protect;
end;
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение k_vit »

приводит к тому, что в browse пропадают все записи


может у вас на tblMy наложены ограничения? поэтому записи при updat'e пропадают.

а так, проверял : update tblMy set tblMy.Checked := true; работает
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

никаких bounds и condition не установлено! У browse просто сносит крышу при пакетном изменении большого количества записей
dp
Местный житель
Сообщения: 216
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Беларусь, Минск
Контактная информация:

Сообщение dp »

попробуйте update делать на синониме - должно помочь.
dP
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

dp
РЕСПЕКТИЩЕ, РАБОТАЕТ, плевать что костыль!!! Вы случайно не из самой Галактики?
dp
Местный житель
Сообщения: 216
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Беларусь, Минск
Контактная информация:

Сообщение dp »

galover
нет. не из самой Галактики. но не далеко :)
dP
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

dp ну, не скромничайте... все мы из Галактики.... Галактики "Млечный путь" :grin:

а по теме, по-моему можно было делать ещё типа _Loop External, тогда апдейт тоже проходил нормально.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

Алексей
Я выше запостил код, там _loop работает как надо (и без external), вопрос был про пакетный update!
dp
Местный житель
Сообщения: 216
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Беларусь, Минск
Контактная информация:

Сообщение dp »

Алексей
external - для прохода по таблице будет использована внешняя выгрузка
поэтому если таблица достаточно большая это может оттормажить изрядно.
практичнее update на синониме
dP
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

dp согласен, я стараюсь не делать апдейты по полям, которые задействованы в ЛТ, если уж никак, то синоним.
Ответить