-
У провайдера poFetchBlobOnDemand:=false, т.е. в пакет отсылаемый клиенту не должны включаться BLOB - поля. У клиента свойство FetchOnDemand:=true. Вопрос почему, если провайдер не включает БЛОБ поля в пакет, они оказываются у клиента? А если у клиента свойство FetchOnDemand:=false, то выдается ошибка, типа клиент не может загрузить БЛОБ поля, не понимаю. Мне надо грузить БЛОБ поля только при необходимости.
-
> У провайдера poFetchBlobOnDemand:=false, т.е. в пакет отсылаемый > клиенту не должны включаться BLOB - поля
Строго наоборот
If the client dataset’s FetchOnDemand property is true, the client requests these values automatically
-
Че -то не понял? У провайдера poFetchBlobOnDemand:=false, т.е. в пакет отсылаемый клиенту не должны включаться BLOB - поля. А они включаются, вот в чем дело.
-
> Че -то не понял
Что непонятно-то ? Блобы автоматически не включаются в пакеты, если опция poFetchBlobOnDemand установлена, т.е. True.
Вот фрагмент справки к TClientDataSet.FethOnDemand:
if FetchOnDemand is false and the provider does not include BLOB data by default (Options includes poFetchBlobsOnDemand), the application must fetch BLOB fields explicitly using the FetchBlobs method. If the provider does not include nested detail sets (Options includes poFetchDetailsOnDemand) and FetchOnDemand is false, the application must fetch nested details explicitly using the FetchDetails method.
Читай и вникай.
-
> не должны включаться BLOB - поля. с чего это, если в выдержке их хелпа в [1], написано обратное.
-
Все равно, если poFetchBlobOnDemand=true и TClientDataSet.FethOnDemand=true, БЛОБ поля загружаются, а если TClientDataSet.FethOnDemand=false, то выдается ошибка - не могут быть загружены БЛОБ поля. Я представлял себе все так: я "бегаю" по гриду, и просматриваю записи и DBMemo пустой. Но вот я решил для этой записи просмотреть БЛОБ поле и вызываю метод FetchBlobs и в DBMemo отображается текст.
-
> ddd329 (24.08.2010 11:26:05) [5]
Ну так и нажимай кнопку "просмотреть БЛОБ поле" Не фиг на FetchBlobs расчитыватать.
-
> просматриваю записи и DBMemo пустой DBMemo сам запросит как только встанешь на запись. автоматизация... не хочешь, переделывай компонент/используй не DB эваре компоненты.
-
Если бы я работал в двухзвенной архитектуре, то писал бы запросы через ADOQuery. А так как я работаю в трехзвенной, то у меня такая связка получается: ClientDataSet->DataSetProvider->ADOQuery, вот и приходится пользоваться методами ClientDataSet, а не запросами. Либо я получаю БЛОБ поля, если созданы статические поля. Либо вообще нет, если они не созданы. Вот и приходится рассчитывать на FetchBlobs. Мне, что придется создавать подчиненный ClientDataSet, который будет грузить БЛОБы, можно я думал можно проще.
-
> Я представлял себе все так: я "бегаю" по гриду, и просматриваю > записи и DBMemo пустой.
"блобы по требованию" означает лишь то, что при фетче записей (особенно всех, а не порциями) блобы не достаются НО: как только ты позиционировался на записи, это и означает, что автоматом появилось требование профетчить и блобы этой записи это всего лишь возможность быстро показать в гриде нужные записи, не дожидаясь загрузки потенциально больших блобов
-
> ddd329 (24.08.10 10:31) [2] > > Че -то не понял? У провайдера poFetchBlobOnDemand:=false, > т.е. в пакет отсылаемый клиенту не должны включаться BLOB > - поля.
Хм, тут не только справка не согласна, но англо-русский словарь тоже не согласен.
|