![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Invalid BLOB handle in record buffer [D5, MSSQL]
Ega23 © (2005-06-02 13:56:00)На строке кода
TBLOBField(DataSource.DataSet.FieldByName(DataField)).SaveToStream(ms);
получаю сабжевый exception. Поле - not IsNull, это проверено. Тип поля в базе - image. В DBGrid'е поле отображается как "BLOB".
В Query Analyzer'е вижу такую строку:
0x01000100000020F212000E0000000800780000001C00000000000000C0AE1C0AA0AE1C0A98A91C0A80F3120070F94200E4CF1C0AA57D4200847D42 00997E4200E4CF1C0ADCF742009CF312009CF31200E4CF1C0A9F2243009CF31200E4CF1C0AE4CF1C0AF80ED6043E060D0035010000EB0E011034060C 0000000000D8F312009CF212008764E177B906FFFF3E060D0035010000
В чём может быть дело???
Уже 2 часа голову ломаю. Посмотрите, может что проглядел?
procedure TGfxDBConnector.AddGfxObject;
var
ms:TMemoryStream;
GfxTag:TGfxTagStruct;
GfxPoly:TGFXPolyObject;
begin
ms:=TMemoryStream.Create;
try
if TBLOBField(DataSource.DataSet.FieldByName(DataField)).IsNull then Exit;
TBLOBField(DataSource.DataSet.FieldByName(DataField)).SaveToStream(ms);
ms.Position:=0;
ms.ReadBuffer(GfxTag, SizeOf(TGfxTagStruct));
ms.Position:=GfxTag.Offset;
if GfxTag.Tag<>GFXTAG_TYPE then Exit;
Case GfxTag.wParam of
POLY_OBJECT : begin
GfxPoly:=TGFXPolyObject.Create;
GfxPoly.LoadFromStream(ms);
GfxPoly.UID:=DataSource.DataSet.FieldByName(IDField).AsInteger;
GFXDrawer.AddObject(GfxPoly);
end;
RASTER_OBJECT : begin
//
end;
end;
finally
ms.Free;
end;
end;
Ega23 (2005-06-02 15:47:00) [1]Всё, вопрос снят.
Там - мама не горюй получается....