![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка
stur © (2002-10-09 16:40:00)Уважаемые Мастера подскажите.
DBGrid подключен к базе через Query. Для преобразования типа поля используется следующий код. Проблема в следующем при просмотре базы данных назад через вполне определённое число строк вылетает ошибка "Invalid BLOB handle in record buffer" виной всему строкаQuery1.FieldByName ("EmpChar1_05").AsString);. Почему то теряется взаимосвязь. Как от этого избавиться?
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field.FieldName="EMPCHAR1_05" then
begin
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut Rect.Left+1,Rect.Top+2, Query1.FieldByName ("EmpChar1_05").AsString);
end;
end;
petr_v_a (2002-10-09 18:58:00) [1]В настройках алиаса надо увеличить параметр BLOBS_TO_CACHE
Johnny Smith (2002-10-09 17:56:00) [2]2stur © (09.10.02 17:40)
Честно сказать? Фиг его знает. Надо смотреть исходники BDE :^)))
stur (2002-10-09 17:40:00) [3]Возможно, но....
Почему всё работает при просмотре базы вперёд?
И всё нормально работает если использовать не TQuery( select * from EMP), а TTable ?
Johnny Smith (2002-10-09 17:30:00) [4]Тут уже говорилось о том, что BDE принимает VarChar"овские типы длиной более 255 байт как BLOB. Соответственно, как мне кажется, он и пытается читать его как BLOB, то есть передавая для него ссылку на некий буфер, а не на переменную строкового типа. Отсюда и причина падения.
Мой совет - уйти с BDE на другую библиотеку доступа к данным.
stur (2002-10-09 16:49:00) [5]VARCHAR(256)
Johnny Smith (2002-10-09 16:48:00) [6]Какой тип у поля "EMPCHAR1_05"?
stur (2002-10-09 16:46:00) [7]Если же подключаться к базе через TTable, то этой проблемы нет. Так подключаться не совсем корректно...