Sto memorizzando alcune informazioni nel mio database di Access, un parametro è un campo BLOB, in questo caso un'immagine, caricata in un Timage.
Sto usando questo codice per salvarlo:
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;
Ma ho anche altre informazioni che sto memorizzando facendo clic sullo stesso pulsante come la parte "aggiungi".
Quello che succede è che quando premo il pulsante Salva, questa informazione non viene memorizzata nello stesso ID sul database.
Come posso correggere questo problema?
risposte:
5 per risposta № 1Stai modificando il record corrente, salvando il filel'immagine, aggiungendo un nuovo record e salvando il resto delle informazioni su quel nuovo record. Penso che intendi aggiungere un intero nuovo record, aggiungere l'immagine e i dati a quello nuovo e quindi salvare tali modifiche.
Prova questo invece:
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;