/ / Bild zur Aufnahme speichern - delphi, ms-access, delphi-xe3

Speichere das zu speichernde Bild - delphi, ms-access, delphi-xe3

Wenn ich einige Informationen in meiner Access-Datenbank speichere, ist ein Parameter ein BLOB-Feld, in diesem Fall ein Bild, das in eine Timage geladen wird.

Ich verwende diesen Code, um ihn zu speichern:

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;

Ich habe aber auch andere Informationen, die ich speichere, indem ich auf dieselbe Schaltfläche klicke wie der Teil "Anfügen".

Wenn ich auf die Schaltfläche "Speichern" drücke, werden diese Informationen nicht in derselben ID in der Datenbank gespeichert.

Wie kann ich dieses Problem beheben?

Antworten:

5 für die Antwort № 1

Sie bearbeiten den aktuellen Datensatz und speichern denBild hinzufügen, einen neuen Datensatz anhängen und den Rest der Informationen in diesem neuen Datensatz speichern. Ich denke, Sie beabsichtigen, einen ganzen neuen Datensatz hinzuzufügen, das Bild und die Daten zu dem neuen Datensatz hinzuzufügen und diese Änderungen dann zu speichern.

Versuchen Sie es stattdessen:

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;