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.