Invalid BLOB Handle in buffer после добавления OnFilterRecord

muk07

Извиняюсь за предыдущую пустышку.Вопрос:MSSQL 2000, BDEИмею запрос содержащий поле типа Text. Показываю его в TDBMemo.Всё работает. Добавляю обработчик OnFilterRecord. При открытии запроса получаю Invalid BLOB Handle in buffer.В обработчик OnFilterRecord программа ещё не заходила.Кто знает в чём дело?
6 ответов

muk07

Это ошибка BDE при переполнении кэша блобов.Можно поиграться с параметрами БД BLOBS TO CACHE, BLOB SIZE.Можно использовать RequestLive запрос или TTable.А можно не получать такой большой результат запроса с блобами


muk07

Видимо, дело не в этом.Ещё раз повторяю:если добавить обработчик OnFilterRecord - ошибка происходит при открытии TQuery; входа в обработчик не происходит (Filtered=false)если снова удалить обработчик - снова всё работает


muk07

Можно поиграться с параметрами БД BLOBS TO CACHE, BLOB SIZE.Можно использовать RequestLive
Это я знал и сразу установил BLOBS TO CACHE, BLOB SIZE по самое не хочуи RequestLive=true


muk07

Всё таки оказалось BLOBS TO CACHE мало. Добавил ещё и стало открываться.Но теперь говорит, что не могу получить доступ к полю типа Text внутри фильтра.Сейчас попробую извлечь его с помощью TBlobStream.


muk07

Всё таки оказалось BLOBS TO CACHE мало. Добавил ещё и стало открываться.Но теперь говорит, что не могу получить доступ к полю типа Text внутри фильтра.Сейчас попробую извлечь его с помощью TBlobStream.
Когда ты просто открываешь TQuery, то на клиента вытягиваются не все записи, и ошибки нет. А как только включаешь фильтрацию, то вытягивается все и кэш переполняется...И, кстати, забыл сказать, что блоб поля отказываются фильтроваться даже в OnFilter....Обходили это так - получали запрос только с ID, а в событии OnFilterRecord дополучали блоб поле и сравнивали с чем надо. Медленнее, но исключает ошибку Invalid BLOB handle... и фильтрует.Для отображения в гриде, кстати, можно сделать Calc поле и тамподтягивать блобы


muk07

>ObrazerПроблему победил. Спасибо за участие.