delphi - 保存图像进行记录

标签 delphi ms-access delphi-xe3

我将一些信息存储到我的 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 中。

如何解决这个问题?

最佳答案

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

试试这个:

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;

关于delphi - 保存图像进行记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14678348/

相关文章:

multithreading - Delphi - 在单次成功执行或用户取消后终止线程

delphi - 使用 Delphi 获取 sqlite3.dll 未找到错误

delphi - Delphi中从TWebRequest获取文件

delphi - 泛型无法正确解析方法类型

delphi 在特定点将文本插入文本文件

python - 使用 pyodbc 连接 mdb 表

php - MySQL SELECT 语句 COUNT 错误

mysql - Delphi (dbExpress) 可以跨模式使用 SHOW TABLES 吗?

c++ - 使 ShowHint 在具有多个不同 Rect 的自定义控件上工作,每个 Rect 都有自己的 Hint

ms-access - Microsoft Access 2013 长文本限制为 255