Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 16 апр 2024, 14:46

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: MemTableEh и доступ к массиву данных
СообщениеДобавлено: 16 дек 2018, 02:19 
Не в сети

Зарегистрирован: 16 дек 2018, 01:31
Сообщений: 1
Есть многопоточное приложение (OTL+UniDAC+EhLib).
Каждый поток синхронно* обновляет прогресс и статус каждой задачи и его подзадач через RecordsView.
MemTableEh у меня в режиме "stand-alone" - ни с чем несвязанный массив данных.

1. Невозможно написать текст в прогрессе через событие OnAdvDrawDataCell, даже с доп. параметрами TProgressBarParamsEh. Только цифры и проценты еще :(

2. Как потоку обновлять данные, если доступ только к отфильтрованному списку. Ведь данные должны быть доступны без ограничения по фильтрации, а уж пользователь их может фильтровать как хочет (например по группе и пр.). Когда пользователь использует фильтр, то все остальные записи просто недоступны для других потоков. По этой же причине и MasterSource невозможно использовать - нужен постоянный доступ к другим записям. Я же не могу такие временные задачи размещать в базе.
При включении и отключении фильтрации глючит обновление в таблице :?

Приходится динамически плодить и уничтожать MemTableEh через дженерики (чтобы элемент массива MT (подзадачи) был привязан к айдишнику основной задачи) и переключаться через DataSource.

Подскажите, какой есть способ доступа к полному списку или как скрывать ненужные данные или что-то еще... во время независимой работы со всеми данными!?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: MemTableEh и доступ к массиву данных
СообщениеДобавлено: 21 дек 2018, 12:04 
Не в сети

Зарегистрирован: 24 дек 2011, 14:04
Сообщений: 241
Откуда: Украина, г. Днепропетровск
MemTableEh.RecordsView.MemTableData

Прямой доступ ко всем данным без учета наличия фильтра. Это кстати говоря и в документации к библиотеки есть.

Вот кусок моего кода обхода данных
Код:
with oCancelarEditDataModule.InResolutionDocMemTableEh.RecordsView.MemTableData do begin

   nCount := RecordsList.Count;

   for nCou := 0 to nCount-1 do begin

     if (RecordsList[nCou].DataValues['PASSINGCODE', dvvValueEh] <> nPassingCode) or
        (RecordsList[nCou].DataValues['IDENTITY', dvvValueEh] = nID) or
        (VarToStr(RecordsList[nCou].DataValues['DOCTYPE', dvvValueEh]) <> '1') then
       Continue;

     nIndex := FindData(RecordsList[nCou].DataValues['IDENTITY', dvvValueEh]);
     if nIndex = -1 then begin
       raise Exception.Create('Не найдена строка входящей резолюции в ClearDocTypeForPassingOne.');
       Exit;
     end; { if }

     RecordsList[nCou].DataValues['DOCTYPE', dvvValueEh] := null;

   end; { for }


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: MemTableEh и доступ к массиву данных
СообщениеДобавлено: 28 дек 2018, 08:12 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

Чтобы пройтись по отфильтрованному списку записей используете список MemTableEh1.RecordsView
Чтобы пройтись по полному списку записей используйте список MemTableEh1.RecordsView.MemTableData.RecordsList

Код:
procedure TForm3.Button2Click(Sender: TObject);
var
s: String;
i: Integer;
begin
  for i:= 0 to MemTableEh1.RecordsView.Count-1 do
  begin
    s := VarToStr(MemTableEh1.RecordsView[i].DataValues['Name', dvvValueEh]);
  end;

  for i:= 0 to MemTableEh1.RecordsView.MemTableData.RecordsList.Count-1 do
  begin
    s := VarToStr(MemTableEh1.RecordsView.MemTableData.RecordsList[i].DataValues['Name', dvvValueEh]);
  end;
end;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB