[Delphi] Czytanie i zapis blob

0

Witam..
Jak zwykle przedszkolny problem nie daje mi innego wyjścia (po przeszukaniu netu i forum), niż zgłosić się do Was z prośbą o pomoc.
W aplikacji wykorzystuje bazę paradox7 i mam następujący problem z polem BLOB Binary. Pole służy do przechowywania małych bitmap (2 - 30 KB).
Oto przykład procedury zapisującej:

procedure TForm1.Button2Click(Sender: TObject);
  var myStream : TStream;

begin
if OpenDialog1.Execute then
  begin

  myStream := TFileStream.Create(OpenDialog1.FileName, fmShareDenyWrite);
  Image1.Picture.Bitmap.LoadFromStream(myStream);

  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add ('UPDATE Symbols.DB');
  Query1.SQL.Add ('SET Picture=:SYMBOL');
  Query1.SQL.Add ('WHERE SymbolID="' + IntToStr(MPsID) + '"');
  Query1.ParamByName('SYMBOL').SetBlobData(myStream, myStream.Size);
  Query1.ExecSql;

  myStream.Free;

  end;
end;

(Tu wszystko wydaje się w porządku)
Oraz procedury odczytującej dane z bazy:

procedure TForm1.ListBox2Click(Sender: TObject);
  var myStream: TStream;
begin

  MPsID := Integer(ListBox2.Items.Objects[ListBox2.ItemIndex]);

  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add ('Select Name, Description, Picture');
  Query1.SQL.Add ('FROM Symbols.DB');
  Query1.SQL.Add ('WHERE SymbolID="' + IntToStr(MPsID) + '"');
  Query1.ExecSQL;
  Query1.Open;

  myStream := Query1.CreateBlobStream(Query1.FieldByName('Picture'), bmRead);
  Image1.Picture.Bitmap.LoadFromStream(myStream);

  myStream.Free;

end;

To niestety nie mogę wyświetlić bitmapy w komponencie Image, otrzymuje komunikat: 'Bitmap image is not valid'.
W tym momencie nie wiem co robię źle, czy błąd jest po stronie dodawania do bazy danych czy przy ich odczytywaniu... A może w ogóle wszystko zrobiłem na opak :)
Prosiłbym o naprowadzenie na poprawne rozwiązanie bądź wskazania błędu.

Pozdrawiam

.M.

0

A może sprawdź coś takiego:

procedure TForm1.ListBox2Click(Sender: TObject);
  var myStream: TMemoryStream;
begin

  MPsID := Integer(ListBox2.Items.Objects[ListBox2.ItemIndex]);

  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add ('Select Name, Description, Picture');
  Query1.SQL.Add ('FROM Symbols.DB');
  Query1.SQL.Add ('WHERE SymbolID="' + IntToStr(MPsID) + '"');
  //Query1.ExecSQL;
  Query1.Open;

  myStream := TMemoryStream.Create;
  try
	myStream.LoadFromStream(Query1.CreateBlobStream(Query1.FieldByName('Picture'), bmRead));
	Image1.Picture.Bitmap.LoadFromStream(myStream);
  finally
	myStream.Free;
  end;

end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1