Components for Delphi and C++ Builder.

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

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Не обновляются поля при RefreshRecord
СообщениеДобавлено: 17 янв 2019, 07:02 
Не в сети

Зарегистрирован: 07 июн 2013, 06:14
Сообщений: 10
Здравствуйте!
Такая ситуация: OracleXE11 -> TUniQuery -> TDataSetDriverEh -> TMemTableEh -> TDataSource -> TDBGridEh
В MemTableEh есть Lookup поле с другого MemTableEh.
В TUniQuery стоит CachedUpdates := True;
Делаю сохранение и RefreshRecord в TUniQuery + RefreshRecord в TMemTableEh. Все данные обновляются, но Lookup поле не меняется.

Если щёлкнуть, например, на заголовок для сортировки или перечитать lookup таблицу, то поле обновляется, но не для всех строк.

RecNo и UpdateCursorPos проблему не решают.

Что делаю не так? Или как решить? Спасибо!

PS как оказалось это не только для lookup полей, а для всех(((


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Не обновляются поля при RefreshRecord
СообщениеДобавлено: 05 фев 2019, 00:30 
Не в сети

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

Попробуйте поставить точку останова на функции

Код:
procedure TDataDriverEh.DefaultRefreshRecord(MemRecord: TMemoryRecordEh);

и проверить, обновляются ли значения в MemRecord при вызове RefreshRecord.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Не обновляются поля при RefreshRecord
СообщениеДобавлено: 12 мар 2019, 09:47 
Не в сети

Зарегистрирован: 07 июн 2013, 06:14
Сообщений: 10
Немного другой случай этой проблемы:

1. OracleXE11 -> UniQuery -> DataSetDriverEh -> MemTableEh_1 -> DataSource -> DBGridEh_1
К этому гриду подключена некая сводная таблица данных.

2. В MemTableEh_1 есть Lookup поле с другого MemTableEh_lookup

3. В DBGridEh_1 активирована RowDetailPanel с гридом DBGridEh_2, изменение в котором влияет на ключевое lookup поле в MemTableEh_1.

4. При сохранении и последующем закрытии RowDetailPanel делаю:

Код:
procedure TfrmEvents.sgEventsRowDetailPanelHide(Sender: TCustomDBGridEh;
  var CanHide: Boolean);
begin
    dm.uniQueryEventsCurrent.Refresh;
    dm.memTableEhEventsCurrent.RefreshRecord;
end;


У меня данные обновляются только в таком сочетании рефрешей.

Cама проблема: данные обновляются, но Lookup значение не меняется.

Не могу найти как сделать, чтобы менялось.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Не обновляются поля при RefreshRecord
СообщениеДобавлено: 12 мар 2019, 21:39 
Не в сети

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

Попробуйте вызвать для нужной или всех колонок метод RefreshLookupData
Код:
  DBGridEh1.Columns[i].LookupParams.RefreshLookupData;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Не обновляются поля при RefreshRecord
СообщениеДобавлено: 27 мар 2019, 07:17 
Не в сети

Зарегистрирован: 07 июн 2013, 06:14
Сообщений: 10
Спасибо, при возможности проверю. А как вообще правильно делать синхронизацию в такой связке?
Сейчас столкнулся с тем, что задаю KeyFields в DataSetDriverEh, например, 'ID_OBJECT; ID_REGIM; DATE_BEGIN'
Смотрю текущую строку в MemTableEh и UniQuery и данные разные. Приходится в DataSource.OnDataChange делать UniQuery.Locate(...)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Не обновляются поля при RefreshRecord
СообщениеДобавлено: 01 апр 2019, 19:44 
Не в сети

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

В связке MemTableEh-DataSetDriverEh-YourDataSet
YourDataSet используется только как хранилище данных для MemTableEh.
По логике такого хранения, синхронизация текушей записи между MemTableEh и YourDataSet либо не требуется, либо требуется только в момент передачи данных из MemTableEh в YourDataSet.

_________________
Best regards
EhLib support Team


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

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


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

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


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

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