【问题标题】:Save image to record保存图像以记录
【发布时间】:2013-02-03 22:55:42
【问题描述】:

我将一些信息存储到我的 Access 数据库中,其中一个参数是 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 中。

我该如何解决这个问题?

【问题讨论】:

    标签: delphi ms-access delphi-xe3


    【解决方案1】:

    您正在编辑当前记录,将图像保存到其中,添加新记录,并将其余信息保存到该新记录。我认为您打算添加一条完整的新记录,将图像和数据添加到该新记录中,然后保存这些更改。

    试试这个:

    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;
    

    【讨论】:

    • 我将这些图像保存为 .Jpeg,但我不断收到“位图图像无效”错误。我正在像这样加载图像: if OpenPictureDialog1.Execute(Self.Handle) then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
    • 这是一个与这个问题完全不同的问题,应该作为一个问题提出。 :-) 这个是关于将图片存入数据库的,已经回答了。
    猜你喜欢
    • 2013-10-02
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    相关资源
    最近更新 更多