2

一部の情報を Access データベースに保存しています。1 つのパラメーターは BLOB フィールドです。この場合は画像で、Timage に読み込まれます。

このコードを使用して保存しています:

var
AStream : TMemoryStream;
begin
AStream := TMemoryStream.Create;
  try
Image1.Picture.Graphic.SaveToStream(AStream);
AStream.Position := 0;
if Adotable1.Active then
begin
  Adotable1.Edit;
  TBlobField(Adotable1.FieldByName('Termograma')).LoadFromStream(AStream);
  Adotable1.Post;
end;
  finally
    AStream.Free;

adotable1.Append;
adotable1['Data']:= datetimepicker1.Date;
adotable1['Temax']:= edit4.Text;
adotable1['Temin']:= edit5.Text;
adotable1['Descrição da Posição']:= memo1.Text;
adotable1['Comentários']:= memo2.Text;
adotable1.Post;

しかし、「追加」部分のような同じボタンをクリックして保存している他の情報もあります。

保存ボタンを押すと、この情報がデータベースの同じ ID に保存されません。

この問題を修正するにはどうすればよいですか?

4

1 に答える 1

5

現在のレコードを編集し、画像を保存し、新しいレコードを追加し、残りの情報をその新しいレコードに保存しています。新しいレコード全体を追加し、その新しいレコードに画像とデータを追加してから、それらの変更を保存するつもりだと思います。

代わりにこれを試してください:

var
  AStream : TMemoryStream;
begin
  if not AdoTable1.Active then
    AdoTable1.Open;

  Adotable1.Append;

  AStream := TMemoryStream.Create;
  try
    Image1.Picture.Graphic.SaveToStream(AStream);
    AStream.Position := 0;
    TBlobField(Adotable1.FieldByName('Termograma')).LoadFromStream(AStream);
  finally
    AStream.Free;
  end;

  adotable1['Data']:= datetimepicker1.Date;
  adotable1['Temax']:= edit4.Text;
  adotable1['Temin']:= edit5.Text;
  adotable1['Descrição da Posição']:= memo1.Text;
  adotable1['Comentários']:= memo2.Text;
  adotable1.Post;
end;
于 2013-02-03T23:14:04.313 に答える