Creo que la asignación que haces es el problema. No es posible asignar un BLOB de esa manera. Bueno al menos nunca lo hice.
Por lo pronto lo único que pude encontrar como ejemplo es de BLOBs con el uso de gráficos que por un tiempo me dejó algo perdido y tuve que recurrir a ayuda.
Esta fue la solución, supongo que análogamente se debe hacer con texto. Es decir usando streams.
Esto uso para leer el dato y mostrarlo en un control visual:
Este es el procedimiento que captura el evento OnDataChange de un TDataSource. Está recortado en su parte importante.
procedure TfrmSABMArtic.dsArticDataChange(Sender: TObject; Field: TField);
var
JpegImage: TJPEGImage;
BlobStream: TStream;
begin
if (not dsArtic.DataSet.FieldByName('IMAGEN').IsNull) then
begin
BlobStream:= dsArtic.DataSet.CreateBlobStream(dsArtic.DataSet.FieldByName('Imagen'),bmRead);
JpegImage:= TJPEGImage.Create;
try
JpegImage.LoadFromStream(BlobStream);
imgImagenArtic.Picture.Assign(JpegImage);
imgImagenArtic.Visible := True;
finally
JpegImage.Free;
BlobStream.Free;
end;
end;
end;
Esto uso al momento de asignar el dato:
TGraphicField(dsArtic.DataSet.FieldByName('Imagen')).LoadFromFile(odImgArt.FileName);
Espero te sirva para empezar