powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DOA и Lookup
8 сообщений из 8, страница 1 из 1
DOA и Lookup
    #32122640
m_kus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выставляю себя на посмешище, потому что не знаю, как сделать следущую простую вещь - один раз загрузить справочник улиц из базы в память и больше туда не лазтиь, если не нажать кнопочку "Обновить"...
Вобщем, использую Direct Oracle Access, хотелось бы иметь DataSet, на который ссылаются многочисленные Lookup-поля, чтобы они в базу лазили по минимуму...
...
Рейтинг: 0 / 0
DOA и Lookup
    #32122681
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что?
Ну и держи справочник в этом датасете а из других нужных мест на него ссылайся.

Или в чем другом проблема?
...
Рейтинг: 0 / 0
DOA и Lookup
    #32122688
m_kus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема в том, что он (не знаю кто, наверное TDataSet.Locate) десятки раз загружает его по новой из базы, а я прексрано знаю, что он редко изменяется - и не хотелось бы, почему целиком не загнать в кэш и не брать там?
...
Рейтинг: 0 / 0
DOA и Lookup
    #32122706
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Проблема в том, что он (не знаю кто, наверное TDataSet.Locate) десятки раз загружает его по новой из базы.

Да не должен он такого делать, если ты сам его не закрываешь. А TDataSet.Locate ты где используешь, для датасета справочника что ли. Как делаешь то лукап поля напиши.
...
Рейтинг: 0 / 0
DOA и Lookup
    #32122773
m_kus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Да не должен он такого делать, если ты сам его не закрываешь.
Сам не закрываю - совершенно точно...
>Как делаешь то лукап поля напиши.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
          Field:={ например TStringField}.Create;
          Field.FieldKind:=fkLookup;
          Field.Size:=...;
          Field.LookupDataSet:=...;
          Field.KeyFields:=...;
          Field.LookupKeyFields:=...;
          Field.LookupResultField:=...;
          Field.LookupCache:=true;


Братцы а может он насильно Refresh делает, когда в таблице с Lookup-полями Refresh происходит (или RefreshRecord)? Но в любом случае должен быть способ отказаться от этого...
> А TDataSet.Locate ты где используешь, для датасета справочника что ли.
я хотел написать TDataSet.Lookup - нет я явно не использую, но думаю что используют Lookup-поля...
...
Рейтинг: 0 / 0
DOA и Lookup
    #32122884
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты че, в рантайм их создаешь?

И вот это вот попробуй:
Код: plaintext
Field.LookupCache:=FALSE;
...
Рейтинг: 0 / 0
DOA и Lookup
    #32122891
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, ну насоветовал!!!

Хотел написать TRUE, а написал FALSE. Да и у тебя это уже есть...
...
Рейтинг: 0 / 0
DOA и Lookup
    #32122969
m_kus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да... Разобрался я похоже... Кто бы мог подумать, но:

1. Если вы используете LookupCache=True - в момент открытия таблицы делается полный цикл по всем записям таблицы справочника - они загоняются в этот LookupCache. И так - для каждого Lookup-поля в каждой таблице!

2. Если на момент шага 1, DataSet со справочником ещё не открыт - то после всего этого он ещё и закрывает его...
Соответственно в моём случае, справочник загружался по новой для каждого Lookup-поля - он закрывался/открывался (хотя я явно не закрывал его).

Смотрите не ступите на мои грабли!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DOA и Lookup
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]